refactor(all): 初始化项目

迁移项目到独立的 service 进行集中开发
包含以下组件的查询 API 服务
flink
hudi
database(info)
pulsar
yarn
包含前端服务和 UI
web
包含公共代码
configuration
This commit is contained in:
2023-05-01 00:35:57 +08:00
parent 6b4374ffcc
commit 2f2c10e7b7
191 changed files with 789282 additions and 0 deletions

View File

@@ -0,0 +1,30 @@
package com.lanyuanxiaoyao.service.configuration;
import com.github.benmanes.caffeine.cache.Caffeine;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.caffeine.CaffeineCacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* 缓存提供
*
* @author lanyuanxiaoyao
* @date 2023-04-23
*/
@Configuration
@EnableCaching
public class CacheProvider {
private static final Logger logger = LoggerFactory.getLogger(CacheProvider.class);
@Bean("normal-cache")
public CacheManager normalCache() {
CaffeineCacheManager manager = new CaffeineCacheManager();
manager.setCaffeine(Caffeine.newBuilder().expireAfterWrite(5, TimeUnit.SECONDS));
return manager;
}
}

View File

@@ -0,0 +1,22 @@
package com.lanyuanxiaoyao.service.configuration;
import com.fasterxml.jackson.datatype.eclipsecollections.EclipseCollectionsModule;
import org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
/**
* Jackson 自定义设置
*
* @author lanyuanxiaoyao
* @date 2023-04-21
*/
@Configuration
public class JacksonConfiguration {
@Bean
public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
return builder -> {
builder.modules(new EclipseCollectionsModule());
};
}
}

View File

@@ -0,0 +1,44 @@
package com.lanyuanxiaoyao.service.configuration;
import com.eshore.odcp.hudi.connector.Constants;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
/**
* Spring Security Config
*
* @author lanyuanxiaoyao
* @date 2023-01-30
*/
@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
private static final Logger logger = LoggerFactory.getLogger(SecurityConfig.class);
@Override
protected void configure(HttpSecurity http) throws Exception {
http.authorizeHttpRequests()
.anyRequest()
.authenticated()
.and()
.httpBasic()
.and()
.csrf()
.disable()
.formLogin()
.disable();
}
@Override
protected void configure(AuthenticationManagerBuilder builder) throws Exception {
builder.inMemoryAuthentication()
.withUser(Constants.SPRING_SECURITY_USERNAME)
.password(Constants.SPRING_SECURITY_PASSWORD)
.authorities(Constants.SPRING_SECURITY_AUTHORITY);
}
}

View File

@@ -0,0 +1,91 @@
package com.lanyuanxiaoyao.service.configuration.entity;
import java.util.Map;
/**
* Amis 组件结构化返回值
*
* @author lanyuanxiaoyao
* @date 2022-09-21
*/
public class AmisResponse {
private Integer status;
private String message;
private Map<String, Object> data;
public AmisResponse(Builder builder) {
this.status = builder.status;
this.message = builder.message;
this.data = builder.data;
}
public static Builder builder() {
return new Builder();
}
public Integer getStatus() {
return status;
}
public void setStatus(Integer status) {
this.status = status;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Map<String, Object> getData() {
return data;
}
public void setData(Map<String, Object> data) {
this.data = data;
}
public AmisResponse withData(String key, Object value) {
data.put(key, value);
return this;
}
@Override
public String toString() {
return "AmisResponse{" +
"status=" + status +
", message='" + message + '\'' +
", data=" + data +
'}';
}
public static final class Builder {
private Integer status = 0;
private String message = "";
private Map<String, Object> data;
private Builder() {
}
public Builder status(Integer status) {
this.status = status;
return this;
}
public Builder message(String message) {
this.message = message;
return this;
}
public Builder data(Map<String, Object> data) {
this.data = data;
return this;
}
public AmisResponse build() {
return new AmisResponse(this);
}
}
}

View File

@@ -0,0 +1,52 @@
package com.lanyuanxiaoyao.service.configuration.entity;
import java.util.ArrayList;
import java.util.List;
/**
* 分页实体类
*
* @author lanyuanxiaoyao
* @date 2023-04-26
*/
public class PageResponse<T> {
private List<T> data = new ArrayList<>(0);
private Long total = 0L;
public PageResponse() {
}
public PageResponse(List<T> data) {
this.data = data;
this.total = (long) data.size();
}
public PageResponse(List<T> data, Long total) {
this.data = data;
this.total = total;
}
public List<T> getData() {
return data;
}
public void setData(List<T> data) {
this.data = data;
}
public Long getTotal() {
return total;
}
public void setTotal(Long total) {
this.total = total;
}
@Override
public String toString() {
return "PageResponse{" +
"data=" + data +
", total=" + total +
'}';
}
}

View File

@@ -0,0 +1,40 @@
package com.lanyuanxiaoyao.service.configuration.entity.info;
import com.eshore.odcp.hudi.connector.entity.FlinkJob;
import com.eshore.odcp.hudi.connector.entity.TableMeta;
import java.util.List;
/**
* flink job 和 table meta
*
* @author lanyuanxiaoyao
* @date 2023-04-24
*/
public class JobAndMetas {
private FlinkJob job;
private List<TableMeta> metas;
public JobAndMetas() {
}
public JobAndMetas(FlinkJob job, List<TableMeta> metas) {
this.job = job;
this.metas = metas;
}
public FlinkJob getJob() {
return job;
}
public List<TableMeta> getMetas() {
return metas;
}
@Override
public String toString() {
return "JobAndMetas{" +
"job=" + job +
", meta=" + metas +
'}';
}
}

View File

@@ -0,0 +1,44 @@
package com.lanyuanxiaoyao.service.configuration.entity.info;
/**
* Flink Job ID 和 Alias 组合体
*
* @author lanyuanxiaoyao
* @date 2023-04-26
*/
public class JobIdAndAlias {
private Long id;
private String alias;
public JobIdAndAlias() {
}
public JobIdAndAlias(Long id, String alias) {
this.id = id;
this.alias = alias;
}
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getAlias() {
return alias;
}
public void setAlias(String alias) {
this.alias = alias;
}
@Override
public String toString() {
return "JobIdAndAlias{" +
"id=" + id +
", alias='" + alias + '\'' +
'}';
}
}

View File

@@ -0,0 +1,149 @@
package com.lanyuanxiaoyao.service.configuration.entity.pulsar;
import cn.hutool.core.collection.ListUtil;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* Pulsar 信息
*
* @author lanyuanxiaoyao
* @date 2023-04-28
*/
public class PulsarInfo {
public static final List<PulsarInfo> DEFAULT_INFOS = ListUtil.of(
new PulsarInfo(
"main",
ListUtil.of(
"132.121.204.145:16680",
"132.121.204.147:16680",
"132.121.204.148:16680",
"132.121.204.82:16680",
"132.121.204.83:16680",
"132.121.204.85:16680",
"132.121.204.86:16680",
"132.121.204.94:16680",
"132.121.204.101:16680",
"132.121.223.3:16680"
),
"132.121.204.101:58081",
"132.121.204.101:18110"
),
new PulsarInfo(
"acct",
ListUtil.of(
"132.122.113.167:16650",
"132.122.113.168:16650",
"132.122.113.169:16650",
"132.122.113.170:16650",
"132.122.113.171:16650",
"132.122.113.172:16650"
),
"132.122.113.167:58081",
"132.122.113.167:18088"
),
new PulsarInfo(
"order",
ListUtil.of(
"132.122.113.171:16660",
"132.122.113.172:16660",
"132.122.113.173:16660",
"132.122.113.174:16660",
"132.122.113.175:16660",
"132.122.113.176:16660"
),
"132.122.113.171:58081",
"132.122.113.171:18098"
),
new PulsarInfo(
"cust",
ListUtil.of(
"132.122.113.169:16670",
"132.122.113.170:16670",
"132.122.113.173:16670",
"132.122.113.174:16670",
"132.122.113.175:16670",
"132.122.113.176:16670"
),
"132.122.113.169:58081",
"132.122.113.169:18108"
)
);
public static final Map<String, PulsarInfo> PULSAR_CLIENT_INFO_MAPPING = DEFAULT_INFOS.stream()
.flatMap(info -> info.getBrokers()
.stream()
.map(url -> new Pair<>(url, info)))
.collect(Collectors.toMap(Pair::getLeft, Pair::getRight));
public static final Map<String, String> PULSAR_CLIENT_NAME_MAPPING = PULSAR_CLIENT_INFO_MAPPING.entrySet()
.stream()
.map(entry -> new Pair<>(entry.getKey(), entry.getValue().name))
.collect(Collectors.toMap(Pair::getLeft, Pair::getRight));
public static final Map<String, String> PULSAR_CLIENT_ADMIN_MAPPING = PULSAR_CLIENT_INFO_MAPPING.entrySet()
.stream()
.map(entry -> new Pair<>(entry.getKey(), entry.getValue().admin))
.collect(Collectors.toMap(Pair::getLeft, Pair::getRight));
public static final Map<String, String> PULSAR_CLIENT_PRESTO_MAPPING = PULSAR_CLIENT_INFO_MAPPING.entrySet()
.stream()
.map(entry -> new Pair<>(entry.getKey(), entry.getValue().presto))
.collect(Collectors.toMap(Pair::getLeft, Pair::getRight));
public static final Map<String, PulsarInfo> PULSAR_NAME_INFO_MAPPING = DEFAULT_INFOS.stream()
.collect(Collectors.toMap(PulsarInfo::getName, info -> info));
private String name;
private List<String> brokers;
private String presto;
private String admin;
public PulsarInfo() {
}
public PulsarInfo(String name, List<String> brokers, String presto, String admin) {
this.name = name;
this.brokers = brokers;
this.presto = presto;
this.admin = admin;
}
public String getName() {
return name;
}
public List<String> getBrokers() {
return brokers;
}
public String getPresto() {
return presto;
}
public String getAdmin() {
return admin;
}
@Override
public String toString() {
return "PulsarInfo{" +
"name='" + name + '\'' +
", brokers=" + brokers +
", presto='" + presto + '\'' +
", admin='" + admin + '\'' +
'}';
}
private static final class Pair<L, R> {
private final L left;
private final R right;
private Pair(L left, R right) {
this.left = left;
this.right = right;
}
public L getLeft() {
return left;
}
public R getRight() {
return right;
}
}
}

View File

@@ -0,0 +1,31 @@
package com.lanyuanxiaoyao.service.configuration.entity.pulsar;
/**
* Pulsar Namespace
*
* @author lanyuanxiaoyao
* @date 2023-04-28
*/
public class PulsarNamespace {
private String tenant;
private String name;
public PulsarNamespace() {
}
public PulsarNamespace(String tenant, String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "PulsarNamespace{" +
"tenant='" + tenant + '\'' +
", name='" + name + '\'' +
'}';
}
}

View File

@@ -0,0 +1,29 @@
package com.lanyuanxiaoyao.service.configuration.entity.pulsar;
/**
* Pulsar Tenant
*
* @author lanyuanxiaoyao
* @date 2023-04-28
*/
public class PulsarTenant {
private String name;
public PulsarTenant() {
}
public PulsarTenant(String name) {
this.name = name;
}
public String getName() {
return name;
}
@Override
public String toString() {
return "PulsarTenant{" +
"name='" + name + '\'' +
'}';
}
}

View File

@@ -0,0 +1,730 @@
package com.lanyuanxiaoyao.service.configuration.entity.pulsar;
import java.util.List;
import java.util.Map;
/**
* Pulsar Topic
*
* @author lanyuanxiaoyao
* @date 2023-04-28
*/
public class PulsarTopic {
private String name;
private State state;
private String lastMessageId;
private List<String> subscriptions;
public PulsarTopic() {
}
public PulsarTopic(String name, State state, String lastMessageId, List<String> subscriptions) {
this.name = name;
this.state = state;
this.lastMessageId = lastMessageId;
this.subscriptions = subscriptions;
}
public String getName() {
return name;
}
public State getState() {
return state;
}
public String getLastMessageId() {
return lastMessageId;
}
public List<String> getSubscriptions() {
return subscriptions;
}
@Override
public String toString() {
return "PulsarTopic{" +
"name='" + name + '\'' +
", state=" + state +
", lastMessageId='" + lastMessageId + '\'' +
", subscriptions=" + subscriptions +
'}';
}
public static final class State {
private Double messageRateIn;
private Double messageRateOut;
private Double messageThroughputIn;
private Double messageThroughputOut;
private Long byteInCounter;
private Long byteOutCounter;
private Long messageInCounter;
private Long messageOutCounter;
private Double averageMessageSize;
private Boolean messageChunkPublished;
private Long storageSize;
private Long backlogSize;
private Long offloadedStorageSize;
private List<PublisherState> publishers;
private Integer waitingPublishers;
private Map<String, SubscriptionState> subscriptions;
private Map<String, ReplicateState> replications;
private String deduplicationStatus;
private Long topicEpoch;
public State() {
}
public State(Double messageRateIn, Double messageRateOut, Double messageThroughputIn, Double messageThroughputOut, Long byteInCounter, Long byteOutCounter, Long messageInCounter, Long messageOutCounter, Double averageMessageSize, Boolean messageChunkPublished, Long storageSize, Long backlogSize, Long offloadedStorageSize, List<PublisherState> publishers, Integer waitingPublishers, Map<String, SubscriptionState> subscriptions, Map<String, ReplicateState> replications, String deduplicationStatus, Long topicEpoch) {
this.messageRateIn = messageRateIn;
this.messageRateOut = messageRateOut;
this.messageThroughputIn = messageThroughputIn;
this.messageThroughputOut = messageThroughputOut;
this.byteInCounter = byteInCounter;
this.byteOutCounter = byteOutCounter;
this.messageInCounter = messageInCounter;
this.messageOutCounter = messageOutCounter;
this.averageMessageSize = averageMessageSize;
this.messageChunkPublished = messageChunkPublished;
this.storageSize = storageSize;
this.backlogSize = backlogSize;
this.offloadedStorageSize = offloadedStorageSize;
this.publishers = publishers;
this.waitingPublishers = waitingPublishers;
this.subscriptions = subscriptions;
this.replications = replications;
this.deduplicationStatus = deduplicationStatus;
this.topicEpoch = topicEpoch;
}
public Double getMessageRateIn() {
return messageRateIn;
}
public Double getMessageRateOut() {
return messageRateOut;
}
public Double getMessageThroughputIn() {
return messageThroughputIn;
}
public Double getMessageThroughputOut() {
return messageThroughputOut;
}
public Long getByteInCounter() {
return byteInCounter;
}
public Long getByteOutCounter() {
return byteOutCounter;
}
public Long getMessageInCounter() {
return messageInCounter;
}
public Long getMessageOutCounter() {
return messageOutCounter;
}
public Double getAverageMessageSize() {
return averageMessageSize;
}
public Boolean isMessageChunkPublished() {
return messageChunkPublished;
}
public Long getStorageSize() {
return storageSize;
}
public Long getBacklogSize() {
return backlogSize;
}
public Long getOffloadedStorageSize() {
return offloadedStorageSize;
}
public List<PublisherState> getPublishers() {
return publishers;
}
public Integer getWaitingPublishers() {
return waitingPublishers;
}
public Map<String, SubscriptionState> getSubscriptions() {
return subscriptions;
}
public Map<String, ReplicateState> getReplications() {
return replications;
}
public String getDeduplicationStatus() {
return deduplicationStatus;
}
public Long getTopicEpoch() {
return topicEpoch;
}
@Override
public String toString() {
return "State{" +
"messageRateIn=" + messageRateIn +
", messageRateOut=" + messageRateOut +
", messageThroughputIn=" + messageThroughputIn +
", messageThroughputOut=" + messageThroughputOut +
", byteInCounter=" + byteInCounter +
", byteOutCounter=" + byteOutCounter +
", messageInCounter=" + messageInCounter +
", messageOutCounter=" + messageOutCounter +
", averageMessageSize=" + averageMessageSize +
", messageChunkPublished=" + messageChunkPublished +
", storageSize=" + storageSize +
", backlogSize=" + backlogSize +
", offloadedStorageSize=" + offloadedStorageSize +
", publishers=" + publishers +
", waitingPublishers=" + waitingPublishers +
", subscriptions=" + subscriptions +
", replications=" + replications +
", deduplicationStatus='" + deduplicationStatus + '\'' +
", topicEpoch=" + topicEpoch +
'}';
}
public static final class PublisherState {
private String accessMode;
private Double messageRateIn;
private Double messageThroughputIn;
private Double averageMessageSize;
private Double chunkedMessageRate;
private Long producerId;
private String producerName;
private String address;
private String connectedSince;
private String clientVersion;
private Map<String, String> metadata;
public PublisherState() {
}
public PublisherState(String accessMode, Double messageRateIn, Double messageThroughputIn, Double averageMessageSize, Double chunkedMessageRate, Long producerId, String producerName, String address, String connectedSince, String clientVersion, Map<String, String> metadata) {
this.accessMode = accessMode;
this.messageRateIn = messageRateIn;
this.messageThroughputIn = messageThroughputIn;
this.averageMessageSize = averageMessageSize;
this.chunkedMessageRate = chunkedMessageRate;
this.producerId = producerId;
this.producerName = producerName;
this.address = address;
this.connectedSince = connectedSince;
this.clientVersion = clientVersion;
this.metadata = metadata;
}
public String getAccessMode() {
return accessMode;
}
public Double getMessageRateIn() {
return messageRateIn;
}
public Double getMessageThroughputIn() {
return messageThroughputIn;
}
public Double getAverageMessageSize() {
return averageMessageSize;
}
public Double getChunkedMessageRate() {
return chunkedMessageRate;
}
public Long getProducerId() {
return producerId;
}
public String getProducerName() {
return producerName;
}
public String getAddress() {
return address;
}
public String getConnectedSince() {
return connectedSince;
}
public String getClientVersion() {
return clientVersion;
}
public Map<String, String> getMetadata() {
return metadata;
}
@Override
public String toString() {
return "PublisherState{" +
"accessMode='" + accessMode + '\'' +
", messageRateIn=" + messageRateIn +
", messageThroughputIn=" + messageThroughputIn +
", averageMessageSize=" + averageMessageSize +
", chunkedMessageRate=" + chunkedMessageRate +
", producerId=" + producerId +
", producerName='" + producerName + '\'' +
", address='" + address + '\'' +
", connectedSince='" + connectedSince + '\'' +
", clientVersion='" + clientVersion + '\'' +
", metadata=" + metadata +
'}';
}
}
public static final class SubscriptionState {
Double messageRateOut;
Double messageThroughputOut;
Long bytesOutCounter;
Long messageOutCounter;
Double messageRateRedeliver;
Integer chunkedMessageRate;
Long messageBacklog;
Long backlogSize;
Long messageBacklogNoDelayed;
Boolean blockedSubscriptionOnUnackedMessages;
Long messageDelayed;
Long unackedMessages;
String type;
String activeConsumerName;
Double messageRateExpired;
Long totalMessageExpired;
Long lastExpireTimestamp;
Long lastConsumedFlowTimestamp;
Long lastConsumedTimestamp;
Long lastAckedTimestamp;
Long lastMarkDeleteAdvancedTimestamp;
List<ConsumerState> consumers;
Boolean durable;
Boolean replicated;
Map<String, String> consumersAfterMarkDeletePosition;
public SubscriptionState() {
}
public SubscriptionState(Double messageRateOut, Double messageThroughputOut, Long bytesOutCounter, Long messageOutCounter, Double messageRateRedeliver, Integer chunkedMessageRate, Long messageBacklog, Long backlogSize, Long messageBacklogNoDelayed, Boolean blockedSubscriptionOnUnackedMessages, Long messageDelayed, Long unackedMessages, String type, String activeConsumerName, Double messageRateExpired, Long totalMessageExpired, Long lastExpireTimestamp, Long lastConsumedFlowTimestamp, Long lastConsumedTimestamp, Long lastAckedTimestamp, Long lastMarkDeleteAdvancedTimestamp, List<ConsumerState> consumers, Boolean durable, Boolean replicated, Map<String, String> consumersAfterMarkDeletePosition) {
this.messageRateOut = messageRateOut;
this.messageThroughputOut = messageThroughputOut;
this.bytesOutCounter = bytesOutCounter;
this.messageOutCounter = messageOutCounter;
this.messageRateRedeliver = messageRateRedeliver;
this.chunkedMessageRate = chunkedMessageRate;
this.messageBacklog = messageBacklog;
this.backlogSize = backlogSize;
this.messageBacklogNoDelayed = messageBacklogNoDelayed;
this.blockedSubscriptionOnUnackedMessages = blockedSubscriptionOnUnackedMessages;
this.messageDelayed = messageDelayed;
this.unackedMessages = unackedMessages;
this.type = type;
this.activeConsumerName = activeConsumerName;
this.messageRateExpired = messageRateExpired;
this.totalMessageExpired = totalMessageExpired;
this.lastExpireTimestamp = lastExpireTimestamp;
this.lastConsumedFlowTimestamp = lastConsumedFlowTimestamp;
this.lastConsumedTimestamp = lastConsumedTimestamp;
this.lastAckedTimestamp = lastAckedTimestamp;
this.lastMarkDeleteAdvancedTimestamp = lastMarkDeleteAdvancedTimestamp;
this.consumers = consumers;
this.durable = durable;
this.replicated = replicated;
this.consumersAfterMarkDeletePosition = consumersAfterMarkDeletePosition;
}
public Double getMessageRateOut() {
return messageRateOut;
}
public Double getMessageThroughputOut() {
return messageThroughputOut;
}
public Long getBytesOutCounter() {
return bytesOutCounter;
}
public Long getMessageOutCounter() {
return messageOutCounter;
}
public Double getMessageRateRedeliver() {
return messageRateRedeliver;
}
public Integer getChunkedMessageRate() {
return chunkedMessageRate;
}
public Long getMessageBacklog() {
return messageBacklog;
}
public Long getBacklogSize() {
return backlogSize;
}
public Long getMessageBacklogNoDelayed() {
return messageBacklogNoDelayed;
}
public Boolean isBlockedSubscriptionOnUnackedMessages() {
return blockedSubscriptionOnUnackedMessages;
}
public Long getMessageDelayed() {
return messageDelayed;
}
public Long getUnackedMessages() {
return unackedMessages;
}
public String getType() {
return type;
}
public String getActiveConsumerName() {
return activeConsumerName;
}
public Double getMessageRateExpired() {
return messageRateExpired;
}
public Long getTotalMessageExpired() {
return totalMessageExpired;
}
public Long getLastExpireTimestamp() {
return lastExpireTimestamp;
}
public Long getLastConsumedFlowTimestamp() {
return lastConsumedFlowTimestamp;
}
public Long getLastConsumedTimestamp() {
return lastConsumedTimestamp;
}
public Long getLastAckedTimestamp() {
return lastAckedTimestamp;
}
public Long getLastMarkDeleteAdvancedTimestamp() {
return lastMarkDeleteAdvancedTimestamp;
}
public List<ConsumerState> getConsumers() {
return consumers;
}
public Boolean isDurable() {
return durable;
}
public Boolean isReplicated() {
return replicated;
}
public Map<String, String> getConsumersAfterMarkDeletePosition() {
return consumersAfterMarkDeletePosition;
}
@Override
public String toString() {
return "SubscriptionState{" +
"messageRateOut=" + messageRateOut +
", messageThroughputOut=" + messageThroughputOut +
", bytesOutCounter=" + bytesOutCounter +
", messageOutCounter=" + messageOutCounter +
", messageRateRedeliver=" + messageRateRedeliver +
", chunkedMessageRate=" + chunkedMessageRate +
", messageBacklog=" + messageBacklog +
", backlogSize=" + backlogSize +
", messageBacklogNoDelayed=" + messageBacklogNoDelayed +
", blockedSubscriptionOnUnackedMessages=" + blockedSubscriptionOnUnackedMessages +
", messageDelayed=" + messageDelayed +
", unackedMessages=" + unackedMessages +
", type='" + type + '\'' +
", activeConsumerName='" + activeConsumerName + '\'' +
", messageRateExpired=" + messageRateExpired +
", totalMessageExpired=" + totalMessageExpired +
", lastExpireTimestamp=" + lastExpireTimestamp +
", lastConsumedFlowTimestamp=" + lastConsumedFlowTimestamp +
", lastConsumedTimestamp=" + lastConsumedTimestamp +
", lastAckedTimestamp=" + lastAckedTimestamp +
", lastMarkDeleteAdvancedTimestamp=" + lastMarkDeleteAdvancedTimestamp +
", consumers=" + consumers +
", durable=" + durable +
", replicated=" + replicated +
", consumersAfterMarkDeletePosition=" + consumersAfterMarkDeletePosition +
'}';
}
}
public static final class ConsumerState {
Double messageRateOut;
Double messageThroughputOut;
Long bytesOutCounter;
Long messageOutCounter;
Double messageRateRedeliver;
Double chunkedMessageRate;
String consumerName;
Integer availablePermits;
Integer unackedMessages;
Integer averageMessagesPerEntry;
Boolean blockedConsumerOnUnackedMessages;
String readPositionWhenJoining;
String address;
String connectedSince;
String clientVersion;
Long lastAckedTimestamp;
Long lastConsumedTimestamp;
List<String> keyHashRanges;
Map<String, String> metadata;
public ConsumerState() {
}
public ConsumerState(Double messageRateOut, Double messageThroughputOut, Long bytesOutCounter, Long messageOutCounter, Double messageRateRedeliver, Double chunkedMessageRate, String consumerName, Integer availablePermits, Integer unackedMessages, Integer averageMessagesPerEntry, Boolean blockedConsumerOnUnackedMessages, String readPositionWhenJoining, String address, String connectedSince, String clientVersion, Long lastAckedTimestamp, Long lastConsumedTimestamp, List<String> keyHashRanges, Map<String, String> metadata) {
this.messageRateOut = messageRateOut;
this.messageThroughputOut = messageThroughputOut;
this.bytesOutCounter = bytesOutCounter;
this.messageOutCounter = messageOutCounter;
this.messageRateRedeliver = messageRateRedeliver;
this.chunkedMessageRate = chunkedMessageRate;
this.consumerName = consumerName;
this.availablePermits = availablePermits;
this.unackedMessages = unackedMessages;
this.averageMessagesPerEntry = averageMessagesPerEntry;
this.blockedConsumerOnUnackedMessages = blockedConsumerOnUnackedMessages;
this.readPositionWhenJoining = readPositionWhenJoining;
this.address = address;
this.connectedSince = connectedSince;
this.clientVersion = clientVersion;
this.lastAckedTimestamp = lastAckedTimestamp;
this.lastConsumedTimestamp = lastConsumedTimestamp;
this.keyHashRanges = keyHashRanges;
this.metadata = metadata;
}
public Double getMessageRateOut() {
return messageRateOut;
}
public Double getMessageThroughputOut() {
return messageThroughputOut;
}
public Long getBytesOutCounter() {
return bytesOutCounter;
}
public Long getMessageOutCounter() {
return messageOutCounter;
}
public Double getMessageRateRedeliver() {
return messageRateRedeliver;
}
public Double getChunkedMessageRate() {
return chunkedMessageRate;
}
public String getConsumerName() {
return consumerName;
}
public Integer getAvailablePermits() {
return availablePermits;
}
public Integer getUnackedMessages() {
return unackedMessages;
}
public Integer getAverageMessagesPerEntry() {
return averageMessagesPerEntry;
}
public Boolean isBlockedConsumerOnUnackedMessages() {
return blockedConsumerOnUnackedMessages;
}
public String getReadPositionWhenJoining() {
return readPositionWhenJoining;
}
public String getAddress() {
return address;
}
public String getConnectedSince() {
return connectedSince;
}
public String getClientVersion() {
return clientVersion;
}
public Long getLastAckedTimestamp() {
return lastAckedTimestamp;
}
public Long getLastConsumedTimestamp() {
return lastConsumedTimestamp;
}
public List<String> getKeyHashRanges() {
return keyHashRanges;
}
public Map<String, String> getMetadata() {
return metadata;
}
@Override
public String toString() {
return "ConsumerState{" +
"messageRateOut=" + messageRateOut +
", messageThroughputOut=" + messageThroughputOut +
", bytesOutCounter=" + bytesOutCounter +
", messageOutCounter=" + messageOutCounter +
", messageRateRedeliver=" + messageRateRedeliver +
", chunkedMessageRate=" + chunkedMessageRate +
", consumerName='" + consumerName + '\'' +
", availablePermits=" + availablePermits +
", unackedMessages=" + unackedMessages +
", averageMessagesPerEntry=" + averageMessagesPerEntry +
", blockedConsumerOnUnackedMessages=" + blockedConsumerOnUnackedMessages +
", readPositionWhenJoining='" + readPositionWhenJoining + '\'' +
", address='" + address + '\'' +
", connectedSince='" + connectedSince + '\'' +
", clientVersion='" + clientVersion + '\'' +
", lastAckedTimestamp=" + lastAckedTimestamp +
", lastConsumedTimestamp=" + lastConsumedTimestamp +
", keyHashRanges=" + keyHashRanges +
", metadata=" + metadata +
'}';
}
}
public static final class ReplicateState {
private Double messageRateIn;
private Double messageRateOut;
private Double messageThroughputIn;
private Double messageThroughputOut;
private Double messageExpiredRate;
private Long replicationBacklog;
private Boolean connected;
private Long replicationDelayInSeconds;
private String inboundConnection;
private String inboundConnectedSince;
private String outboundConnection;
private String outboundConnectedSince;
public ReplicateState() {
}
public ReplicateState(Double messageRateIn, Double messageRateOut, Double messageThroughputIn, Double messageThroughputOut, Double messageExpiredRate, Long replicationBacklog, Boolean connected, Long replicationDelayInSeconds, String inboundConnection, String inboundConnectedSince, String outboundConnection, String outboundConnectedSince) {
this.messageRateIn = messageRateIn;
this.messageRateOut = messageRateOut;
this.messageThroughputIn = messageThroughputIn;
this.messageThroughputOut = messageThroughputOut;
this.messageExpiredRate = messageExpiredRate;
this.replicationBacklog = replicationBacklog;
this.connected = connected;
this.replicationDelayInSeconds = replicationDelayInSeconds;
this.inboundConnection = inboundConnection;
this.inboundConnectedSince = inboundConnectedSince;
this.outboundConnection = outboundConnection;
this.outboundConnectedSince = outboundConnectedSince;
}
public Double getMessageRateIn() {
return messageRateIn;
}
public Double getMessageRateOut() {
return messageRateOut;
}
public Double getMessageThroughputIn() {
return messageThroughputIn;
}
public Double getMessageThroughputOut() {
return messageThroughputOut;
}
public Double getMessageExpiredRate() {
return messageExpiredRate;
}
public Long getReplicationBacklog() {
return replicationBacklog;
}
public Boolean isConnected() {
return connected;
}
public Long getReplicationDelayInSeconds() {
return replicationDelayInSeconds;
}
public String getInboundConnection() {
return inboundConnection;
}
public String getInboundConnectedSince() {
return inboundConnectedSince;
}
public String getOutboundConnection() {
return outboundConnection;
}
public String getOutboundConnectedSince() {
return outboundConnectedSince;
}
@Override
public String toString() {
return "ReplicateState{" +
"messageRateIn=" + messageRateIn +
", messageRateOut=" + messageRateOut +
", messageThroughputIn=" + messageThroughputIn +
", messageThroughputOut=" + messageThroughputOut +
", messageExpiredRate=" + messageExpiredRate +
", replicationBacklog=" + replicationBacklog +
", isConnected=" + connected +
", replicationDelayInSeconds=" + replicationDelayInSeconds +
", inboundConnection='" + inboundConnection + '\'' +
", inboundConnectedSince='" + inboundConnectedSince + '\'' +
", outboundConnection='" + outboundConnection + '\'' +
", outboundConnectedSince='" + outboundConnectedSince + '\'' +
'}';
}
}
}
}

View File

@@ -0,0 +1,130 @@
package com.lanyuanxiaoyao.service.configuration.entity.yarn;
/**
* Yarn Application 简化版实体类
*
* @author lanyuanxiaoyao
* @date 2023-04-19
*/
public final class YarnApplication {
private String id;
private String user;
private String queue;
private String name;
private String state;
private String finalStatus;
private Float progress;
private String diagnostics;
private String applicationType;
private Long startedTime;
private Long launchTime;
private Long finishedTime;
private Long elapsedTime;
private String trackingUrl;
private Long allocatedMB;
private Long allocatedVCores;
private Integer runningContainers;
private Float queueUsagePercentage;
private Float clusterUsagePercentage;
public String getId() {
return id;
}
public String getUser() {
return user;
}
public String getQueue() {
return queue;
}
public String getName() {
return name;
}
public String getState() {
return state;
}
public String getFinalStatus() {
return finalStatus;
}
public Float getProgress() {
return progress;
}
public String getDiagnostics() {
return diagnostics;
}
public String getApplicationType() {
return applicationType;
}
public Long getStartedTime() {
return startedTime;
}
public Long getLaunchTime() {
return launchTime;
}
public Long getFinishedTime() {
return finishedTime;
}
public Long getElapsedTime() {
return elapsedTime;
}
public String getTrackingUrl() {
return trackingUrl;
}
public Long getAllocatedMB() {
return allocatedMB;
}
public Long getAllocatedVCores() {
return allocatedVCores;
}
public Integer getRunningContainers() {
return runningContainers;
}
public Float getQueueUsagePercentage() {
return queueUsagePercentage;
}
public Float getClusterUsagePercentage() {
return clusterUsagePercentage;
}
@Override
public String toString() {
return "YarnApplication{" +
"id='" + id + '\'' +
", user='" + user + '\'' +
", queue='" + queue + '\'' +
", name='" + name + '\'' +
", state='" + state + '\'' +
", finalStatus='" + finalStatus + '\'' +
", progress=" + progress +
", diagnostics='" + diagnostics + '\'' +
", applicationType='" + applicationType + '\'' +
", startedTime=" + startedTime +
", launchTime=" + launchTime +
", finishedTime=" + finishedTime +
", elapsedTime=" + elapsedTime +
", trackingUrl='" + trackingUrl + '\'' +
", allocatedMB=" + allocatedMB +
", allocatedVCores=" + allocatedVCores +
", runningContainers=" + runningContainers +
", queueUsagePercentage=" + queueUsagePercentage +
", clusterUsagePercentage=" + clusterUsagePercentage +
'}';
}
}

View File

@@ -0,0 +1,217 @@
package com.lanyuanxiaoyao.service.configuration.entity.yarn;
/**
* Yarn 队列简单实体类
*
* @author lanyuanxiaoyao
* @date 2023-04-22
*/
public final class YarnQueue {
private String queueName;
private String state;
private String type;
private Float capacity;
private Float usedCapacity;
private Float maxCapacity;
private Float absoluteCapacity;
private Float absoluteMaxCapacity;
private Float absoluteUsedCapacity;
private Float numApplications;
private ResourcesUsed resourcesUsed;
private Long allocatedContainers;
private Long reservedContainers;
private Long pendingContainers;
private ResourcesUsed minEffectiveCapacity;
private ResourcesUsed maxEffectiveCapacity;
private ResourcesUsed maximumAllocation;
private Integer queuePriority;
private String orderingPolicyInfo;
private Long maxApplications;
private Long maxApplicationsPerUser;
private Long numActiveApplications;
private Long numPendingApplications;
private Long numContainers;
private Long userLimit;
private Float userLimitFactor;
private Float configuredMaxAMResourceLimit;
private ResourcesUsed AMResourceLimit;
private ResourcesUsed usedAMResource;
private ResourcesUsed userAMResourceLimit;
public String getQueueName() {
return queueName;
}
public String getState() {
return state;
}
public String getType() {
return type;
}
public Float getCapacity() {
return capacity;
}
public Float getUsedCapacity() {
return usedCapacity;
}
public Float getMaxCapacity() {
return maxCapacity;
}
public Float getAbsoluteCapacity() {
return absoluteCapacity;
}
public Float getAbsoluteMaxCapacity() {
return absoluteMaxCapacity;
}
public Float getAbsoluteUsedCapacity() {
return absoluteUsedCapacity;
}
public Float getNumApplications() {
return numApplications;
}
public ResourcesUsed getResourcesUsed() {
return resourcesUsed;
}
public Long getAllocatedContainers() {
return allocatedContainers;
}
public Long getReservedContainers() {
return reservedContainers;
}
public Long getPendingContainers() {
return pendingContainers;
}
public ResourcesUsed getMinEffectiveCapacity() {
return minEffectiveCapacity;
}
public ResourcesUsed getMaxEffectiveCapacity() {
return maxEffectiveCapacity;
}
public ResourcesUsed getMaximumAllocation() {
return maximumAllocation;
}
public Integer getQueuePriority() {
return queuePriority;
}
public String getOrderingPolicyInfo() {
return orderingPolicyInfo;
}
public Long getNumActiveApplications() {
return numActiveApplications;
}
public Long getNumPendingApplications() {
return numPendingApplications;
}
public Long getNumContainers() {
return numContainers;
}
public Long getMaxApplications() {
return maxApplications;
}
public Long getMaxApplicationsPerUser() {
return maxApplicationsPerUser;
}
public Long getUserLimit() {
return userLimit;
}
public Float getUserLimitFactor() {
return userLimitFactor;
}
public Float getConfiguredMaxAMResourceLimit() {
return configuredMaxAMResourceLimit;
}
public ResourcesUsed getAMResourceLimit() {
return AMResourceLimit;
}
public ResourcesUsed getUsedAMResource() {
return usedAMResource;
}
public ResourcesUsed getUserAMResourceLimit() {
return userAMResourceLimit;
}
@Override
public String toString() {
return "YarnQueue{" +
"queueName='" + queueName + '\'' +
", state='" + state + '\'' +
", type='" + type + '\'' +
", capacity=" + capacity +
", usedCapacity=" + usedCapacity +
", maxCapacity=" + maxCapacity +
", absoluteCapacity=" + absoluteCapacity +
", absoluteMaxCapacity=" + absoluteMaxCapacity +
", absoluteUsedCapacity=" + absoluteUsedCapacity +
", numApplications=" + numApplications +
", resourcesUsed=" + resourcesUsed +
", allocatedContainers=" + allocatedContainers +
", reservedContainers=" + reservedContainers +
", pendingContainers=" + pendingContainers +
", minEffectiveCapacity=" + minEffectiveCapacity +
", maxEffectiveCapacity=" + maxEffectiveCapacity +
", maximumAllocation=" + maximumAllocation +
", queuePriority=" + queuePriority +
", orderingPolicyInfo='" + orderingPolicyInfo + '\'' +
", numActiveApplications=" + numActiveApplications +
", numPendingApplications=" + numPendingApplications +
", numContainers=" + numContainers +
", maxApplications=" + maxApplications +
", maxApplicationsPerUser=" + maxApplicationsPerUser +
", userLimit=" + userLimit +
", userLimitFactor=" + userLimitFactor +
", configuredMaxAMResourceLimit=" + configuredMaxAMResourceLimit +
", AMResourceLimit=" + AMResourceLimit +
", usedAMResource=" + usedAMResource +
", userAMResourceLimit=" + userAMResourceLimit +
'}';
}
public static final class ResourcesUsed {
private Long memory;
private Long vCores;
public Long getMemory() {
return memory;
}
public Long getvCores() {
return vCores;
}
@Override
public String toString() {
return "ResourcesUsed{" +
"memory=" + memory +
", vCores=" + vCores +
'}';
}
}
}

View File

@@ -0,0 +1,46 @@
package com.lanyuanxiaoyao.service.configuration.entity.yarn;
/**
* Yarn 队列简单实体类
*
* @author lanyuanxiaoyao
* @date 2023-04-22
*/
public final class YarnRootQueue {
private String queueName;
private String type;
private Float capacity;
private Float usedCapacity;
private Float maxCapacity;
public String getQueueName() {
return queueName;
}
public String getType() {
return type;
}
public Float getCapacity() {
return capacity;
}
public Float getUsedCapacity() {
return usedCapacity;
}
public Float getMaxCapacity() {
return maxCapacity;
}
@Override
public String toString() {
return "YarnRootQueue{" +
"queueName='" + queueName + '\'' +
", type='" + type + '\'' +
", capacity=" + capacity +
", usedCapacity=" + usedCapacity +
", maxCapacity=" + maxCapacity +
'}';
}
}