mirror of
https://github.com/didi/KnowStreaming.git
synced 2026-05-18 11:27:02 +08:00
初始化3.0.0版本
This commit is contained in:
131
km-common/pom.xml
Normal file
131
km-common/pom.xml
Normal file
@@ -0,0 +1,131 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project xmlns="http://maven.apache.org/POM/4.0.0"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||
<modelVersion>4.0.0</modelVersion>
|
||||
<groupId>com.xiaojukeji.kafka</groupId>
|
||||
<artifactId>km-common</artifactId>
|
||||
<version>${km.revision}</version>
|
||||
<packaging>jar</packaging>
|
||||
|
||||
<parent>
|
||||
<artifactId>km</artifactId>
|
||||
<groupId>com.xiaojukeji.kafka</groupId>
|
||||
<version>${km.revision}</version>
|
||||
</parent>
|
||||
|
||||
<properties>
|
||||
<maven.test.skip>true</maven.test.skip>
|
||||
<downloadSources>true</downloadSources>
|
||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||
<file_encoding>UTF-8</file_encoding>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-web</artifactId>
|
||||
<version>${spring.version}</version>
|
||||
</dependency>
|
||||
|
||||
<!-- zookeeper -->
|
||||
<dependency>
|
||||
<groupId>org.apache.zookeeper</groupId>
|
||||
<artifactId>zookeeper</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- swagger -->
|
||||
<dependency>
|
||||
<groupId>io.springfox</groupId>
|
||||
<artifactId>springfox-swagger2</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.springfox</groupId>
|
||||
<artifactId>springfox-swagger-ui</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>io.swagger</groupId>
|
||||
<artifactId>swagger-annotations</artifactId>
|
||||
</dependency>
|
||||
|
||||
<!-- json -->
|
||||
<dependency>
|
||||
<groupId>com.fasterxml.jackson.core</groupId>
|
||||
<artifactId>jackson-databind</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.alibaba</groupId>
|
||||
<artifactId>fastjson</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>commons-beanutils</groupId>
|
||||
<artifactId>commons-beanutils</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>commons-lang</groupId>
|
||||
<artifactId>commons-lang</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.commons</groupId>
|
||||
<artifactId>commons-pool2</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>javax.servlet</groupId>
|
||||
<artifactId>javax.servlet-api</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.google.code.findbugs</groupId>
|
||||
<artifactId>jsr305</artifactId>
|
||||
<version>3.0.2</version>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>junit</groupId>
|
||||
<artifactId>junit</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.projectlombok</groupId>
|
||||
<artifactId>lombok</artifactId>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.baomidou</groupId>
|
||||
<artifactId>mybatis-plus-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.hibernate.validator</groupId>
|
||||
<artifactId>hibernate-validator</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>commons-io</groupId>
|
||||
<artifactId>commons-io</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>net.sf.jopt-simple</groupId>
|
||||
<artifactId>jopt-simple</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>io.github.zqrferrari</groupId>
|
||||
<artifactId>logi-log</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
<artifactId>guava</artifactId>
|
||||
</dependency>
|
||||
|
||||
<dependency>
|
||||
<groupId>org.apache.kafka</groupId>
|
||||
<artifactId>kafka-clients</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.apache.kafka</groupId>
|
||||
<artifactId>kafka_2.13</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.annotations;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
|
||||
/**
|
||||
* Kafka源码
|
||||
* @author zengqiao
|
||||
* @date 2020-07-20
|
||||
*/
|
||||
@Target({ElementType.TYPE, ElementType.LOCAL_VARIABLE})
|
||||
@Retention(RUNTIME)
|
||||
@Documented
|
||||
public @interface KafkaSource {
|
||||
int modified() default 0;
|
||||
|
||||
String modifyDesc() default "";
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.annotations.enterprise;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
|
||||
/**
|
||||
* License
|
||||
*/
|
||||
@Target({ElementType.PACKAGE, ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
|
||||
@Retention(RUNTIME)
|
||||
@Documented
|
||||
public @interface EnterpriseLicense {
|
||||
boolean all() default true; // 是否所有代码都是,默认是都是
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.annotations.enterprise;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
|
||||
/**
|
||||
* Load-reBalance能力
|
||||
*/
|
||||
@Target({ElementType.PACKAGE, ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
|
||||
@Retention(RUNTIME)
|
||||
@Documented
|
||||
public @interface EnterpriseLoadReBalance {
|
||||
boolean all() default true; // 是否所有代码都是,默认是都是
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.annotations.enterprise;
|
||||
|
||||
import java.lang.annotation.Documented;
|
||||
import java.lang.annotation.ElementType;
|
||||
import java.lang.annotation.Retention;
|
||||
import java.lang.annotation.Target;
|
||||
|
||||
import static java.lang.annotation.RetentionPolicy.RUNTIME;
|
||||
|
||||
/**
|
||||
* Testing
|
||||
*/
|
||||
@Target({ElementType.PACKAGE, ElementType.TYPE, ElementType.METHOD, ElementType.FIELD})
|
||||
@Retention(RUNTIME)
|
||||
@Documented
|
||||
public @interface EnterpriseTesting {
|
||||
boolean all() default true; // 是否所有代码都是,默认是都是
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @author d06679
|
||||
* @date 2019/3/13
|
||||
*/
|
||||
public class BaseDTO implements Serializable {
|
||||
private static final long serialVersionUID = 7861489615519826338L;
|
||||
}
|
||||
@@ -0,0 +1,65 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.acl;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/03/01
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description="创建Acl")
|
||||
public class AclAtomDTO extends BaseDTO {
|
||||
@NotNull(message = "clusterId不允许为null")
|
||||
@ApiModelProperty(value = "集群ID", example = "1")
|
||||
private Long clusterId;
|
||||
|
||||
@NotBlank(message = "kafkaUser不允许为空")
|
||||
@ApiModelProperty(value = "kafkaUser名称", example = "know-streaming")
|
||||
private String kafkaUser;
|
||||
|
||||
/**
|
||||
* 定义操作 —— 操作类型
|
||||
* @see org.apache.kafka.common.acl.AclOperation
|
||||
*/
|
||||
@ApiModelProperty(value = "操作类型,读/写/任意等", example = "2")
|
||||
private Integer aclOperation;
|
||||
|
||||
/**
|
||||
* 定义操作 — 权限状态,允许或者拒绝
|
||||
* @see org.apache.kafka.common.acl.AclPermissionType
|
||||
*/
|
||||
@ApiModelProperty(value = "权限状态,允许/拒绝等", example = "3")
|
||||
private Integer aclPermissionType;
|
||||
|
||||
/**
|
||||
* 定义操作 — 客户端主机
|
||||
*/
|
||||
@ApiModelProperty(value = "客户端主机", example = "127.0.0.1")
|
||||
private String aclClientHost;
|
||||
|
||||
/**
|
||||
* 定义资源 —— 资源类型
|
||||
* @see org.apache.kafka.common.resource.ResourceType
|
||||
*/
|
||||
@ApiModelProperty(value = "资源类型, Topic/Group等", example = "2")
|
||||
private Integer resourceType;
|
||||
|
||||
/**
|
||||
* 定义资源 —— 资源名称
|
||||
*/
|
||||
@ApiModelProperty(value = "资源名称")
|
||||
private String resourceName;
|
||||
|
||||
/**
|
||||
* 定义资源 —— 资源匹配方式
|
||||
* @see org.apache.kafka.common.resource.PatternType
|
||||
*/
|
||||
@ApiModelProperty(value = "资源匹配方式", example = "3")
|
||||
private Integer resourcePatternType;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.cluster;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.PaginationSortDTO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/02/24
|
||||
*/
|
||||
@Data
|
||||
public class ClusterBrokersOverviewDTO extends PaginationSortDTO {
|
||||
@NotNull(message = "latestMetricNames不允许为空")
|
||||
@ApiModelProperty("需要指标点的信息")
|
||||
private List<String> latestMetricNames;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.cluster;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.PaginationMulFuzzySearchDTO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/02/24
|
||||
*/
|
||||
@Data
|
||||
public class ClusterGroupsOverviewDTO extends PaginationMulFuzzySearchDTO {
|
||||
@ApiModelProperty("查找该Topic")
|
||||
private String topicName;
|
||||
|
||||
@ApiModelProperty("查找该Group")
|
||||
private String groupName;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.cluster;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/4/23
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description = "集群信息接入")
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class ClusterPhyAddDTO extends ClusterPhyBaseDTO {
|
||||
@NotBlank(message = "name不允许为空串")
|
||||
@ApiModelProperty(value="集群名称", example = "KnowStreaming")
|
||||
protected String name;
|
||||
|
||||
@NotNull(message = "description不允许为空")
|
||||
@ApiModelProperty(value="描述", example = "测试")
|
||||
protected String description;
|
||||
|
||||
@NotBlank(message = "kafkaVersion不允许为空")
|
||||
@ApiModelProperty(value="集群的kafka版本", example = "2.5.1")
|
||||
protected String kafkaVersion;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.cluster;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.config.JmxConfig;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/4/23
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description = "集群信息接入测试")
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class ClusterPhyBaseDTO extends BaseDTO {
|
||||
@NotNull(message = "zookeeper不允许为null")
|
||||
@ApiModelProperty(value="ZK地址, 不允许修改", example = "127.0.0.1:2181")
|
||||
protected String zookeeper;
|
||||
|
||||
@NotBlank(message = "bootstrapServers不允许为空串")
|
||||
@ApiModelProperty(value="bootstrap地址", example = "127.0.0.1:9093")
|
||||
protected String bootstrapServers;
|
||||
|
||||
@NotNull(message = "clientProperties不允许为空")
|
||||
@ApiModelProperty(value="KM连接集群时使用的客户端配置")
|
||||
protected Properties clientProperties;
|
||||
|
||||
@NotNull(message = "jmxProperties不允许为空")
|
||||
@ApiModelProperty(value="Jmx配置")
|
||||
protected JmxConfig jmxProperties;
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.cluster;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/4/23
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description = "集群信息修改")
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class ClusterPhyModifyDTO extends ClusterPhyAddDTO {
|
||||
@Min(value = 0, message = "id不允许小于0")
|
||||
@ApiModelProperty(value="集群Id", example = "1")
|
||||
private Long id;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.cluster;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.metrices.MetricDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.PaginationSortDTO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/02/24
|
||||
*/
|
||||
@Data
|
||||
public class ClusterTopicsOverviewDTO extends PaginationSortDTO {
|
||||
@NotNull(message = "latestMetricNames不允许为空")
|
||||
@ApiModelProperty("需要指标点的信息")
|
||||
private List<String> latestMetricNames;
|
||||
|
||||
@NotNull(message = "metricLines不允许为空")
|
||||
@ApiModelProperty("需要指标曲线的信息")
|
||||
private MetricDTO metricLines;
|
||||
|
||||
@ApiModelProperty("显示内部Topic")
|
||||
private Boolean showInternalTopics;
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.cluster;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.metrices.MetricDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.PaginationGeneralDTO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/02/24
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class MultiClusterDashboardDTO extends PaginationGeneralDTO {
|
||||
@NotNull(message = "latestMetricNames不允许为空")
|
||||
@ApiModelProperty("需要指标点的信息")
|
||||
private List<String> latestMetricNames;
|
||||
|
||||
@NotNull(message = "metricLines不允许为空")
|
||||
@ApiModelProperty("需要指标曲线的信息")
|
||||
private MetricDTO metricLines;
|
||||
}
|
||||
@@ -0,0 +1,26 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.config;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/02/28
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description = "Kafka配置信息")
|
||||
public class KafkaConfigDTO extends BaseDTO {
|
||||
@Min(value = 0, message = "clusterId不允许小于0")
|
||||
@ApiModelProperty(value = "集群ID", example = "6")
|
||||
private Long clusterId;
|
||||
|
||||
@NotNull(message = "changedProps不允许为空")
|
||||
@ApiModelProperty(value = "配置值", example = "{}")
|
||||
private Properties changedProps;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.config;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/02/28
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description = "Kafka配置信息")
|
||||
public class KafkaConfigModifyBrokerDTO extends KafkaConfigDTO {
|
||||
@Min(value = 0, message = "brokerId不允许小于0")
|
||||
@ApiModelProperty(value = "BrokerId", example = "1")
|
||||
private Integer brokerId;
|
||||
|
||||
@ApiModelProperty(value = "应用到全部", example = "false")
|
||||
private Boolean applyAll;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.config;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/02/28
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description = "Kafka配置信息")
|
||||
public class KafkaConfigModifyTopicDTO extends KafkaConfigDTO {
|
||||
@NotBlank(message = "topicName不允许为空")
|
||||
@ApiModelProperty(value = "配置名称", example = "know-streaming")
|
||||
private String topicName;
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.config.platform;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class PlatformClusterConfigDTO extends BaseDTO {
|
||||
@Min(value = 0, message = "clusterId不允许小于0")
|
||||
@ApiModelProperty(value = "集群ID", example = "6")
|
||||
private Long clusterId;
|
||||
|
||||
@NotBlank(message = "valueGroup不允许空")
|
||||
@ApiModelProperty(value = "配置组", example = "3423r43r")
|
||||
private String valueGroup;
|
||||
|
||||
@NotBlank(message = "valueName不允许空")
|
||||
@ApiModelProperty(value = "配置项的名称", example = "3423r43r")
|
||||
private String valueName;
|
||||
|
||||
@NotNull(message = "value不允许为null")
|
||||
@ApiModelProperty(value = "配置值", example = "3423r43r")
|
||||
private String value;
|
||||
|
||||
@NotNull(message = "description不允许为null")
|
||||
@ApiModelProperty(value = "备注", example = "测试")
|
||||
private String description;
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.group;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.partition.PartitionOffsetDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.topic.ClusterTopicDTO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 重置offset
|
||||
* @author zengqiao
|
||||
* @date 19/4/8
|
||||
*/
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class GroupOffsetResetDTO extends ClusterTopicDTO {
|
||||
@NotBlank(message = "groupName不允许为空")
|
||||
@ApiModelProperty(value = "消费组名称", example = "g-know-streaming")
|
||||
private String groupName;
|
||||
|
||||
/**
|
||||
* @see com.xiaojukeji.know.streaming.km.common.enums.GroupOffsetResetEnum
|
||||
*/
|
||||
@NotNull(message = "resetType不允许为空")
|
||||
@ApiModelProperty(value = "重置方式", example = "1")
|
||||
private Integer resetType;
|
||||
|
||||
@ApiModelProperty(value = "重置到指定offset")
|
||||
private List<PartitionOffsetDTO> offsetList;
|
||||
|
||||
@ApiModelProperty(value = "重置到指定时间")
|
||||
private Long timestamp;
|
||||
|
||||
@ApiModelProperty(value = "如果不存在则创建")
|
||||
private Boolean createIfNotExist;
|
||||
|
||||
public boolean isCreateIfNotExist() {
|
||||
return createIfNotExist != null && createIfNotExist;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.group;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.PaginationSortDTO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/02/24
|
||||
*/
|
||||
@Data
|
||||
public class GroupTopicConsumedDTO extends PaginationSortDTO {
|
||||
@ApiModelProperty("需要指标点的信息")
|
||||
private List<String> latestMetricNames;
|
||||
}
|
||||
@@ -0,0 +1,60 @@
|
||||
/*
|
||||
* Copyright (c) 2015, WINIT and/or its affiliates. All rights reserved. Use, Copy is subject to authorized license.
|
||||
*/
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.job;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* WorkTask Vo 对象
|
||||
*
|
||||
* @author fengqiongfeng
|
||||
* @date 2020-12-21
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class JobDTO extends BaseDTO {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ApiModelProperty("任务id, 创建时不需要")
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* @see com.xiaojukeji.know.streaming.km.common.enums.job.JobTypeEnum
|
||||
*/
|
||||
@ApiModelProperty("任务类型")
|
||||
private Integer jobType;
|
||||
|
||||
/**
|
||||
* @see com.xiaojukeji.know.streaming.km.common.enums.job.JobStatusEnum
|
||||
*/
|
||||
@ApiModelProperty("任务状态")
|
||||
private Integer jobStatus;
|
||||
|
||||
@ApiModelProperty("任务执行对象")
|
||||
private String target;
|
||||
|
||||
@ApiModelProperty(value = "任务描述")
|
||||
private String jobDesc;
|
||||
|
||||
@NotBlank(message = "creator不允许为空或空串")
|
||||
@ApiModelProperty("创建人")
|
||||
private String creator;
|
||||
|
||||
@ApiModelProperty("计划执行时间")
|
||||
private Date planTime;
|
||||
|
||||
@NotBlank(message = "data不允许为空或空串")
|
||||
@ApiModelProperty("data")
|
||||
private String jobData;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.job;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.PaginationBaseDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(description = "任务处理信息")
|
||||
public class JobPaginationDTO extends PaginationBaseDTO {
|
||||
|
||||
@ApiModelProperty("任务类型,-1:全部;0:Topic迁移;1:Topic扩缩副本;2:集群均衡")
|
||||
private Integer type = -1;
|
||||
|
||||
@ApiModelProperty("执行任务对象")
|
||||
private String jobTarget;
|
||||
|
||||
@ApiModelProperty("任务创建人")
|
||||
private String creator;
|
||||
|
||||
@ApiModelProperty("运行状态,为空则代表全部状态")
|
||||
private List<Integer> status;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.kafkauser;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/4/23
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description="kafkaUser信息")
|
||||
public class ClusterKafkaUserDTO {
|
||||
@Min(value = 1, message = "clusterId不允许为null或者小于0")
|
||||
@ApiModelProperty(value = "集群ID, 默认为逻辑集群ID", example = "6")
|
||||
protected Long clusterId;
|
||||
|
||||
@NotBlank(message = "kafkaUser不允许为空串")
|
||||
@ApiModelProperty(value = "kafkaUser名称", example = "know-streaming")
|
||||
protected String kafkaUser;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.kafkauser;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/4/23
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description="kafkaUser密码信息")
|
||||
public class ClusterKafkaUserTokenDTO extends ClusterKafkaUserDTO {
|
||||
@NotBlank(message = "token不允许为空串")
|
||||
@ApiModelProperty(value = "密码", example = "12313224cerce32r344rC")
|
||||
private String token;
|
||||
|
||||
@NotNull(message = "authType不允许为空")
|
||||
@ApiModelProperty(value = "认证类型", example = "1300")
|
||||
private Integer authType;
|
||||
}
|
||||
@@ -0,0 +1,35 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.metrices;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author didi
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(description = "指标查询基础信息")
|
||||
public class MetricDTO extends BaseDTO {
|
||||
|
||||
@ApiModelProperty("开始时间")
|
||||
private Long startTime;
|
||||
|
||||
@ApiModelProperty("结束时间")
|
||||
private Long endTime;
|
||||
|
||||
@ApiModelProperty(value = "聚合类型:avg、max、min、sum,默认:avg", example = "avg")
|
||||
private String aggType = "avg";
|
||||
|
||||
@ApiModelProperty(value = "指标类型/指标名称", example = "[\"topics\"]")
|
||||
private List<String> metricsNames;
|
||||
|
||||
@ApiModelProperty("Top-Level:5,10,15,20")
|
||||
private Integer topNu = 5;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.metrices;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.topic.TopicPartitionKS;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author didi
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(description = "Group&Partition指标查询信息")
|
||||
public class MetricGroupPartitionDTO extends MetricDTO {
|
||||
@ApiModelProperty("Group 名称")
|
||||
private String group;
|
||||
|
||||
@ApiModelProperty("Group 的 topic & partition 信息")
|
||||
private List<TopicPartitionKS> groupTopics;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.metrices;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author didi
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(description = "Group&Topic指标查询信息")
|
||||
public class MetricGroupTopicDTO extends MetricDTO {
|
||||
@ApiModelProperty("Group名称")
|
||||
private String group;
|
||||
|
||||
@ApiModelProperty("Topic名称")
|
||||
private String topic;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.metrices;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
/**
|
||||
* @author didi
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(description = "指标查询基础信息")
|
||||
public class MetricRealTimeDTO extends BaseDTO {
|
||||
@ApiModelProperty("指标类型")
|
||||
private Integer metricType;
|
||||
|
||||
@ApiModelProperty("指标名称")
|
||||
private String metricName;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.metrices;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author didi
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(description = "topic指标查询信息")
|
||||
public class MetricsBrokerDTO extends MetricDTO {
|
||||
|
||||
@ApiModelProperty("brokerId列表")
|
||||
private List<Long> brokerIds;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.metrices;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author didi
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(description = "物理集群指标查询信息")
|
||||
public class MetricsClusterPhyDTO extends MetricDTO {
|
||||
|
||||
@ApiModelProperty("物理集群Id列表")
|
||||
private List<Long> clusterPhyIds;
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.metrices;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author didi
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(description = "topic指标查询信息")
|
||||
public class MetricsTopicDTO extends MetricDTO {
|
||||
|
||||
@ApiModelProperty("topic名称")
|
||||
private List<String> topics;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.metrices;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(description = "用户指标显示设置配置信息")
|
||||
public class UserMetricConfigDTO extends BaseDTO {
|
||||
@ApiModelProperty("指标展示设置项,key:指标名;value:是否展现(true展现/false不展现)")
|
||||
private Map<String, Boolean> metricsSet;
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.oprecord;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.enums.operaterecord.ModuleEnum;
|
||||
import com.xiaojukeji.know.streaming.km.common.enums.operaterecord.OperationEnum;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
*
|
||||
*
|
||||
* @author d06679
|
||||
* @date 2019/3/14
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ApiModel(description = "操作记录信息")
|
||||
public class OperateRecordDTO extends BaseDTO {
|
||||
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
@ApiModelProperty("记录ID")
|
||||
private Integer id;
|
||||
|
||||
/**
|
||||
* @see ModuleEnum
|
||||
*/
|
||||
@ApiModelProperty("模块ID")
|
||||
private Integer moduleId;
|
||||
|
||||
/**
|
||||
* @see OperationEnum
|
||||
*/
|
||||
@ApiModelProperty("操作ID")
|
||||
private Integer operateId;
|
||||
|
||||
/**
|
||||
* 操作业务id String类型
|
||||
*/
|
||||
@ApiModelProperty("业务ID")
|
||||
private String bizId;
|
||||
|
||||
/**
|
||||
* 操作描述
|
||||
*/
|
||||
@ApiModelProperty("操作内容")
|
||||
private String content;
|
||||
|
||||
/**
|
||||
* 操作人 邮箱前缀
|
||||
*/
|
||||
@ApiModelProperty("操作人")
|
||||
private String operator;
|
||||
|
||||
/**
|
||||
* 操作时间
|
||||
*/
|
||||
@ApiModelProperty("操作时间")
|
||||
private Date operateTime;
|
||||
|
||||
/**
|
||||
* 操作起始时间 查询使用
|
||||
*/
|
||||
@ApiModelProperty("开始时间")
|
||||
private Date beginTime;
|
||||
|
||||
/**
|
||||
* 操作截止时间 查询使用
|
||||
*/
|
||||
@ApiModelProperty("结束时间")
|
||||
private Date endTime;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.pagination;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.xiaojukeji.know.streaming.km.common.constant.PaginationConstant;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="列表分页查询的BaseDTO")
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class PaginationBaseDTO {
|
||||
@NotNull(message = "pageNo不允许为空")
|
||||
@ApiModelProperty(value="页面位置,默认1", example = "1")
|
||||
private Integer pageNo = PaginationConstant.DEFAULT_PAGE_NO;
|
||||
|
||||
@NotNull(message = "pageSize不允许为空")
|
||||
@ApiModelProperty(value="页面大小,默认10", example = "10")
|
||||
private Integer pageSize = PaginationConstant.DEFAULT_PAGE_SIZE;
|
||||
|
||||
@ApiModelProperty(value="模糊搜索", example = "")
|
||||
private String searchKeywords;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.pagination;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.field.PaginationPreciseFilterFieldDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.field.PaginationRangeFilterFieldDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.enums.SortTypeEnum;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@ApiModel(description="通用分页信息")
|
||||
public class PaginationGeneralDTO extends PaginationBaseDTO {
|
||||
@ApiModelProperty(value="排序字段, 传入的字段名同返回的VO里面的字段名")
|
||||
private String sortField;
|
||||
|
||||
@ApiModelProperty(value="排序类型[asc|desc],默认desc", example = "desc")
|
||||
private String sortType = SortTypeEnum.DESC.getSortType();
|
||||
|
||||
@Valid
|
||||
@ApiModelProperty(value="多字段精确过滤")
|
||||
private List<PaginationPreciseFilterFieldDTO> preciseFilterDTOList;
|
||||
|
||||
@Valid
|
||||
@ApiModelProperty(value="多字段范围过滤")
|
||||
private List<PaginationRangeFilterFieldDTO> rangeFilterDTOList;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.pagination;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.field.PaginationFuzzySearchFieldDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 模糊搜索
|
||||
* @author zengqiao
|
||||
* @date 22/02/23
|
||||
*/
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@ApiModel(description="多字段模糊搜索")
|
||||
public class PaginationMulFuzzySearchDTO extends PaginationBaseDTO {
|
||||
@Valid
|
||||
@ApiModelProperty(value="模糊搜索字段")
|
||||
private List<PaginationFuzzySearchFieldDTO> fuzzySearchDTOList;
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.pagination;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.field.PaginationPreciseFilterFieldDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@ApiModel(description="多字段精确过滤")
|
||||
public class PaginationMulPreciseFilterDTO extends PaginationBaseDTO {
|
||||
// GET请求格式:
|
||||
// filterDTOList[0].fieldValueList=aaa,bbb,ccc&filterDTOList[0].fieldName=clusterName 还需要将这个请求转义才可以
|
||||
@ApiModelProperty(value="多字段精确过滤, 传入的字段名同返回的VO里面的字段名")
|
||||
private List<PaginationPreciseFilterFieldDTO> preciseFilterDTOList ;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.pagination;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.field.PaginationRangeFilterFieldDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@ApiModel(description="多字段范围过滤")
|
||||
public class PaginationMulRangeFilterDTO extends PaginationBaseDTO {
|
||||
@ApiModelProperty(value="多字段范围过滤")
|
||||
private List<PaginationRangeFilterFieldDTO> rangeFilterDTOList ;
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.pagination;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.field.PaginationFuzzySearchFieldDTO;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.field.PaginationPreciseFilterFieldDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.Valid;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 模糊搜索
|
||||
* @author zengqiao
|
||||
* @date 22/02/23
|
||||
*/
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@ApiModel(description="多字段模糊搜索")
|
||||
public class PaginationPreciseAndFuzzySearchDTO extends PaginationBaseDTO {
|
||||
@Valid
|
||||
@ApiModelProperty(value="模糊搜索字段, 传入的字段名同返回的VO里面的字段名")
|
||||
private List<PaginationFuzzySearchFieldDTO> fuzzySearchDTOList;
|
||||
|
||||
@Valid
|
||||
@ApiModelProperty(value="多字段精确过滤, 传入的字段名同返回的VO里面的字段名")
|
||||
private List<PaginationPreciseFilterFieldDTO> preciseFilterDTOList ;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.pagination;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.xiaojukeji.know.streaming.km.common.enums.SortTypeEnum;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@ApiModel(description="列表分页查询-带过滤条件")
|
||||
public class PaginationSortDTO extends PaginationBaseDTO {
|
||||
@ApiModelProperty(value="排序字段, 传入的字段名同返回的VO里面的字段名", example = "topicName")
|
||||
private String sortField;
|
||||
|
||||
@ApiModelProperty(value="排序类型[asc|desc],默认desc", example = "desc")
|
||||
private String sortType = SortTypeEnum.DESC.getSortType();
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.field;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="模糊搜索")
|
||||
public class PaginationFuzzySearchFieldDTO {
|
||||
@NotBlank(message = "fieldName不允许为空")
|
||||
@ApiModelProperty(value="模糊搜索字段名", example = "kafkaUser")
|
||||
private String fieldName;
|
||||
|
||||
@NotBlank(message = "fieldValue不允许为空")
|
||||
@ApiModelProperty(value="模糊搜索字段值", example = "know-streaming-kafka-user")
|
||||
private String fieldValue;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.field;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@ApiModel(description="列表分页查询-过滤字段信息")
|
||||
public class PaginationPreciseFilterFieldDTO {
|
||||
@NotBlank(message = "fieldName不允许为空")
|
||||
@ApiModelProperty(value="过滤字段")
|
||||
private String fieldName;
|
||||
|
||||
@NotNull(message = "fieldValueList不允许为空")
|
||||
@ApiModelProperty(value="过滤值")
|
||||
private List<String> fieldValueList;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.field;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="列表分页查询-过滤字段信息")
|
||||
public class PaginationRangeFilterFieldDTO {
|
||||
@NotBlank(message = "fieldName不允许为空")
|
||||
@ApiModelProperty(value="过滤字段", example = "healthScore")
|
||||
private String fieldName;
|
||||
|
||||
@NotBlank(message = "fieldMinValue不允许为空")
|
||||
@ApiModelProperty(value="最小值", example = "2")
|
||||
private String fieldMinValue;
|
||||
|
||||
@NotBlank(message = "fieldMaxValue不允许为空")
|
||||
@ApiModelProperty(value="最大值", example = "100")
|
||||
private String fieldMaxValue;
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.partition;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
|
||||
/**
|
||||
* Topic Offset
|
||||
* @author zengqiao
|
||||
* @date 19/6/2
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class PartitionOffsetDTO extends BaseDTO {
|
||||
@Min(value = 0, message = "partitionId不允许小于0")
|
||||
@ApiModelProperty(value = "分区ID", example = "1")
|
||||
private Integer partitionId;
|
||||
|
||||
@Min(value = 0, message = "offset不允许小于0")
|
||||
@ApiModelProperty(value = "分区offset", example = "123")
|
||||
private Long offset;
|
||||
|
||||
public PartitionOffsetDTO(Integer partitionId, Long offset) {
|
||||
this.partitionId = partitionId;
|
||||
this.offset = offset;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.reassign;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="迁移Topic概要信息")
|
||||
public class ReassignTopicOverviewDTO extends BaseDTO {
|
||||
@Min(value = 1, message = "clusterId不允许为null或者小于0")
|
||||
@ApiModelProperty(value = "集群ID", example = "2")
|
||||
private Long clusterId;
|
||||
|
||||
@NotNull(message = "topicNameList不允许为空")
|
||||
@ApiModelProperty(value = "Topic名称列表", example = "[ks-0, ks-1, ks-2]")
|
||||
private List<String> topicNameList;
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.reassign.change;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.topic.ClusterTopicDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="创建迁移Json")
|
||||
public class CreateChangeReplicasPlanDTO extends ClusterTopicDTO {
|
||||
@NotNull(message = "newReplicaNum必须大于等于1")
|
||||
@Min(value = 1, message = "newReplicaNum必须大于等于1")
|
||||
@ApiModelProperty(value = "副本数", example = "3")
|
||||
private Integer newReplicaNum;
|
||||
|
||||
@NotNull(message = "brokerIdList不允许为空")
|
||||
@ApiModelProperty(value = "BrokerID列表", example = "3,4,5")
|
||||
private List<Integer> brokerIdList;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.reassign.move;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.topic.ClusterTopicDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="创建迁移Json")
|
||||
public class CreateMoveReplicaPlanDTO extends ClusterTopicDTO {
|
||||
@ApiModelProperty(value = "分区ID列表", example = "0,1,2")
|
||||
private List<Integer> partitionIdList;
|
||||
|
||||
@NotNull(message = "brokerIdList不允许为空")
|
||||
@ApiModelProperty(value = "BrokerID列表", example = "3,4,5")
|
||||
private List<Integer> brokerIdList;
|
||||
|
||||
@NotNull(message = "enableRackAwareness不允许为空")
|
||||
@ApiModelProperty(value = "是否机架感知", example = "false")
|
||||
private Boolean enableRackAwareness;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.reassign.plan;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/05/06
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description = "迁移计划")
|
||||
public class ReassignPartitionPlanDTO {
|
||||
@ApiModelProperty(value="集群ID")
|
||||
private Long clusterId;
|
||||
|
||||
@ApiModelProperty(value="Topic名称")
|
||||
private String topicName;
|
||||
|
||||
@ApiModelProperty(value="分区ID")
|
||||
private Integer partitionId;
|
||||
|
||||
@ApiModelProperty(value="当前BrokerId列表")
|
||||
private List<Integer> originalBrokerIdList;
|
||||
|
||||
@ApiModelProperty(value="迁移BrokerId列表")
|
||||
private List<Integer> reassignBrokerIdList;
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.reassign.plan;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.vo.metrics.point.MetricPointVO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/05/06
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description = "迁移计划")
|
||||
public class ReassignTopicPlanDTO {
|
||||
@ApiModelProperty(value="集群ID")
|
||||
private Long clusterId;
|
||||
|
||||
@ApiModelProperty(value="Topic名称")
|
||||
private String topicName;
|
||||
|
||||
@ApiModelProperty(value="需要迁移Topic分区列表", example = "[1, 2, 3]")
|
||||
private List<Integer> partitionIdList;
|
||||
|
||||
@ApiModelProperty(value="需要迁移Topic分区数", example = "10")
|
||||
private Integer partitionNum;
|
||||
|
||||
@ApiModelProperty(value="当前副本数", example = "2")
|
||||
private Integer presentReplicaNum;
|
||||
|
||||
@ApiModelProperty(value="新的副本数", example = "2")
|
||||
private Integer newReplicaNum;
|
||||
|
||||
@ApiModelProperty(value="当前BrokerId列表")
|
||||
private List<Integer> originalBrokerIdList;
|
||||
|
||||
@ApiModelProperty(value="迁移BrokerId列表")
|
||||
private List<Integer> reassignBrokerIdList;
|
||||
|
||||
@ApiModelProperty(value="迁移计划列表")
|
||||
private List<ReassignPartitionPlanDTO> partitionPlanList;
|
||||
|
||||
@ApiModelProperty(value="Topic当前数据保存时间", example = "10")
|
||||
private Long originalRetentionTimeUnitMs;
|
||||
|
||||
@ApiModelProperty(value="Topic迁移时数据保存时间", example = "10")
|
||||
private Long reassignRetentionTimeUnitMs;
|
||||
|
||||
@ApiModelProperty(value="近N天的avg的BytesIn")
|
||||
private List<MetricPointVO> latestDaysAvgBytesInList;
|
||||
|
||||
@ApiModelProperty(value="近N天的max的BytesIn")
|
||||
private List<MetricPointVO> latestDaysMaxBytesInList;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.topic;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/4/23
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description="Topic信息")
|
||||
public class ClusterTopicDTO extends BaseDTO {
|
||||
@Min(value = 1, message = "clusterId不允许为null或者小于0")
|
||||
@ApiModelProperty(value = "集群ID, 默认为逻辑集群ID", example = "6")
|
||||
protected Long clusterId;
|
||||
|
||||
@NotBlank(message = "topicName不允许为空串")
|
||||
@ApiModelProperty(value = "Topic名称", example = "know-streaming")
|
||||
protected String topicName;
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.topic;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* @author huangyiminghappy@163.com, zengqiao
|
||||
* @date 2019-04-21
|
||||
*/
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@ApiModel(description = "创建Topic")
|
||||
public class TopicCreateDTO extends ClusterTopicDTO {
|
||||
@Min(value = 1, message = "partitionNum不允许为空,且最小值为1")
|
||||
@ApiModelProperty(value = "分区数", example = "3")
|
||||
private Integer partitionNum;
|
||||
|
||||
@Min(value = 1, message = "replicaNum不允许为空,且最小值为1")
|
||||
@ApiModelProperty(value = "副本数", example = "2")
|
||||
private Integer replicaNum;
|
||||
|
||||
@ApiModelProperty(value = "brokerId列表,为空时则选择所有的Broker", example = "[1, 2, 3]")
|
||||
private List<Integer> brokerIdList;
|
||||
|
||||
@NotNull(message = "properties不允许为null")
|
||||
@ApiModelProperty(value = "Topic属性列表", example = "{ \"retention.ms\": \"9876543210\", \"retention.bytes\": \"1234567890\",}")
|
||||
private Properties properties;
|
||||
|
||||
@NotNull(message = "description不允许为null")
|
||||
@ApiModelProperty(value = "备注", example = "测试Topic")
|
||||
private String description;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.topic;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/1/2
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(value = "Topic扩分区")
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
public class TopicExpansionDTO extends ClusterTopicDTO {
|
||||
@Min(value = 1, message = "incPartitionNum不允许为null或者小于0")
|
||||
@ApiModelProperty(value = "新增分区数", example = "1")
|
||||
private Integer incPartitionNum;
|
||||
|
||||
@ApiModelProperty(value = "brokerId列表,为空时则选择所有的Broker", example = "[1, 2, 3]")
|
||||
private List<Integer> brokerIdList;
|
||||
}
|
||||
@@ -0,0 +1,37 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.topic;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotNull;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 2022-03-15
|
||||
*/
|
||||
@Data
|
||||
@JsonIgnoreProperties(ignoreUnknown = true)
|
||||
@ApiModel(description = "Topic记录")
|
||||
public class TopicRecordDTO extends BaseDTO {
|
||||
@NotNull(message = "truncate不允许为空")
|
||||
@ApiModelProperty(value = "是否截断", example = "true")
|
||||
private Boolean truncate;
|
||||
|
||||
@ApiModelProperty(value = "过滤的分区,为空时表示不过滤", example = "1")
|
||||
private Integer filterPartitionId;
|
||||
|
||||
@ApiModelProperty(value = "过滤的key", example = "")
|
||||
private String filterKey;
|
||||
|
||||
@ApiModelProperty(value = "过滤的value", example = "")
|
||||
private String filterValue;
|
||||
|
||||
@ApiModelProperty(value = "预览最大消息条数", example = "100")
|
||||
private Integer maxRecords = 100;
|
||||
|
||||
@ApiModelProperty(value = "预览超时时间", example = "10000")
|
||||
private Long pullTimeoutUnitMs = 8000L;
|
||||
}
|
||||
@@ -0,0 +1,25 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.util;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/4/23
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description="Kafka-BootstrapServers信息")
|
||||
public class ValidateKafkaBSDTO {
|
||||
@NotBlank(message = "zookeeper不允许为空")
|
||||
@ApiModelProperty(value = "bootstrapServers地址", example = "127.0.0.1:9093")
|
||||
private String bootstrapServers;
|
||||
|
||||
@NotNull(message = "clientProperties不允许为null")
|
||||
@ApiModelProperty(value = "客户端配置")
|
||||
private Properties clientProperties;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.util;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Properties;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/4/23
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description="Kafka信息")
|
||||
public class ValidateKafkaDTO {
|
||||
@ApiModelProperty(value = "bootstrapServers地址", example = "127.0.0.1:9093")
|
||||
private String bootstrapServers;
|
||||
|
||||
@ApiModelProperty(value = "客户端配置")
|
||||
private Properties clientProperties;
|
||||
|
||||
@ApiModelProperty(value = "zk地址", example = "127.0.0.1:2181")
|
||||
private String zookeeper;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.dto.util;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.NotBlank;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/4/23
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description="Kafka-ZK信息")
|
||||
public class ValidateKafkaZKDTO {
|
||||
@NotBlank(message = "zookeeper不允许为空")
|
||||
@ApiModelProperty(value = "zk地址", example = "127.0.0.1:2181")
|
||||
private String zookeeper;
|
||||
}
|
||||
@@ -0,0 +1,17 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Date;
|
||||
|
||||
/**
|
||||
* @author d06679
|
||||
* @date 2019/3/22
|
||||
*/
|
||||
@Data
|
||||
public class BaseEntity implements Serializable {
|
||||
protected Date createTime;
|
||||
|
||||
protected Date updateTime;
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity;
|
||||
|
||||
/**
|
||||
* @author didi
|
||||
*/
|
||||
public interface EntifyIdInterface {
|
||||
/**
|
||||
* 获取id
|
||||
* @return
|
||||
*/
|
||||
Long getId();
|
||||
}
|
||||
@@ -0,0 +1,88 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.assign;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
/**
|
||||
* Topic在Broker上的分布统计
|
||||
*/
|
||||
@Data
|
||||
public class TopicAssignedCount implements Comparable<TopicAssignedCount> {
|
||||
private static Integer presentReplicaIdx = 0;
|
||||
|
||||
private Integer brokerId;
|
||||
|
||||
private String rack;
|
||||
|
||||
/**
|
||||
* 每个位置的副本,都分配了哪些分区到该Broker上
|
||||
*/
|
||||
private List<List<Integer>> idxReplicaPartitionList;
|
||||
|
||||
/**
|
||||
* 分配到该Broker上的分区
|
||||
*/
|
||||
private Set<Integer> assignedPartitionSet;
|
||||
|
||||
/**
|
||||
* 是否参与分区分配
|
||||
*/
|
||||
private boolean includeAssign;
|
||||
|
||||
public TopicAssignedCount(Integer brokerId, String rack, Integer replicaNum, boolean includeAssign) {
|
||||
this.brokerId = brokerId;
|
||||
this.rack = rack;
|
||||
this.idxReplicaPartitionList = new ArrayList<>();
|
||||
for (int idx = 0; idx < replicaNum; ++idx) {
|
||||
this.idxReplicaPartitionList.add(new ArrayList<>());
|
||||
}
|
||||
this.assignedPartitionSet = new HashSet<>();
|
||||
this.includeAssign = includeAssign;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(TopicAssignedCount o) {
|
||||
// 先按照该Broker在某个位置的副本数量进行排序
|
||||
if (this.idxReplicaPartitionList.get(presentReplicaIdx).size() < o.idxReplicaPartitionList.get(o.presentReplicaIdx).size()) {
|
||||
return -1;
|
||||
} else if (this.idxReplicaPartitionList.get(presentReplicaIdx).size() > o.idxReplicaPartitionList.get(o.presentReplicaIdx).size()) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 再按照Broker上的副本总数进行排序
|
||||
if (this.assignedPartitionSet.size() < o.assignedPartitionSet.size()) {
|
||||
return -1;
|
||||
} else if (this.assignedPartitionSet.size() > o.assignedPartitionSet.size()) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
// 最后按照brokerId进行排序
|
||||
return this.brokerId.compareTo(o.brokerId);
|
||||
}
|
||||
|
||||
public static void setPresentReplicaIdx(Integer replicaIdx, Integer replicaNum) {
|
||||
presentReplicaIdx = replicaIdx % replicaNum;
|
||||
}
|
||||
|
||||
public static Map<Integer, List<Integer>> convert2PartitionMap(List<TopicAssignedCount> assignedCountList, Integer replicaNum, List<Integer> filterPartitionIdList) {
|
||||
Map<Integer, List<Integer>> partitionMap = new HashMap<>();
|
||||
|
||||
// 遍历每个位置的副本
|
||||
for (int idx = 0; idx < replicaNum; ++idx) {
|
||||
// 遍历Broker
|
||||
for (TopicAssignedCount assignedCount: assignedCountList) {
|
||||
// 遍历Broker上指定位置的副本被分配到的分区
|
||||
for (Integer partitionId: assignedCount.getIdxReplicaPartitionList().get(idx)) {
|
||||
if (filterPartitionIdList != null && filterPartitionIdList.contains(partitionId)) {
|
||||
continue;
|
||||
}
|
||||
partitionMap.putIfAbsent(partitionId, new ArrayList<>());
|
||||
partitionMap.get(partitionId).add(assignedCount.getBrokerId());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return partitionMap;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,87 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.broker;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.zookeeper.znode.brokers.BrokerMetadata;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.apache.kafka.common.Node;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author didi
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class Broker implements Serializable {
|
||||
/**
|
||||
* 物理集群ID
|
||||
*/
|
||||
private Long clusterPhyId;
|
||||
|
||||
/**
|
||||
* BrokerID
|
||||
*/
|
||||
private Integer brokerId;
|
||||
|
||||
/**
|
||||
* 主机
|
||||
*/
|
||||
private String host;
|
||||
|
||||
/**
|
||||
* 服务端口
|
||||
*/
|
||||
private Integer port;
|
||||
|
||||
/**
|
||||
* JMX端口
|
||||
*/
|
||||
private Integer jmxPort;
|
||||
|
||||
/**
|
||||
* 启动时间
|
||||
*/
|
||||
private Long startTimestamp;
|
||||
|
||||
/**
|
||||
* rack信息
|
||||
*/
|
||||
private String rack;
|
||||
|
||||
/**
|
||||
* 是否存活
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
public static Broker buildFrom(Long clusterPhyId, Node node, Long startTimestamp) {
|
||||
Broker metadata = new Broker();
|
||||
metadata.setClusterPhyId(clusterPhyId);
|
||||
metadata.setBrokerId(node.id());
|
||||
metadata.setHost(node.host());
|
||||
metadata.setPort(node.port());
|
||||
metadata.setJmxPort(-1);
|
||||
metadata.setStartTimestamp(startTimestamp);
|
||||
metadata.setRack(node.rack());
|
||||
metadata.setStatus(1);
|
||||
return metadata;
|
||||
}
|
||||
|
||||
public static Broker buildFrom(Long clusterPhyId, Integer brokerId, BrokerMetadata brokerMetadata) {
|
||||
Broker metadata = new Broker();
|
||||
metadata.setClusterPhyId(clusterPhyId);
|
||||
metadata.setBrokerId(brokerId);
|
||||
metadata.setHost(brokerMetadata.getHost());
|
||||
metadata.setPort(brokerMetadata.getPort());
|
||||
metadata.setJmxPort(brokerMetadata.getJmxPort());
|
||||
metadata.setStartTimestamp(brokerMetadata.getTimestamp());
|
||||
metadata.setRack(brokerMetadata.getRack());
|
||||
metadata.setStatus(1);
|
||||
return metadata;
|
||||
}
|
||||
|
||||
public boolean alive() {
|
||||
return status != null && status > 0;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.broker;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BrokerSpec {
|
||||
|
||||
private Integer brokerId;
|
||||
|
||||
private Double cpu;
|
||||
|
||||
private Double disk;
|
||||
|
||||
private Double flow;
|
||||
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.cluster;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.EntifyIdInterface;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ClusterPhy implements Comparable<ClusterPhy>, EntifyIdInterface {
|
||||
/**
|
||||
* 主键
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 创建时间
|
||||
*/
|
||||
private Date createTime;
|
||||
|
||||
/**
|
||||
* 更新时间
|
||||
*/
|
||||
private Date updateTime;
|
||||
|
||||
/**
|
||||
* 集群名字
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 集群服务地址
|
||||
*/
|
||||
private String bootstrapServers;
|
||||
|
||||
/**
|
||||
* 版本信息
|
||||
*/
|
||||
private String kafkaVersion;
|
||||
|
||||
/**
|
||||
* ZK地址
|
||||
*/
|
||||
private String zookeeper;
|
||||
|
||||
/**
|
||||
* 集群客户端配置
|
||||
*/
|
||||
private String clientProperties;
|
||||
|
||||
/**
|
||||
* jmx配置
|
||||
*/
|
||||
private String jmxProperties;
|
||||
|
||||
/**
|
||||
* 开启ACL
|
||||
* @see com.xiaojukeji.know.streaming.km.common.enums.cluster.ClusterAuthTypeEnum
|
||||
*/
|
||||
private Integer authType;
|
||||
|
||||
/**
|
||||
* 运行状态
|
||||
* @see com.xiaojukeji.know.streaming.km.common.enums.cluster.ClusterRunStateEnum
|
||||
*/
|
||||
private Integer runState;
|
||||
|
||||
/**
|
||||
* 备注
|
||||
*/
|
||||
private String description;
|
||||
|
||||
@Override
|
||||
public int compareTo(ClusterPhy clusterPhy) {
|
||||
return this.id.compareTo(clusterPhy.id);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.cluster;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
|
||||
/**
|
||||
* 集群状态信息
|
||||
* @author zengqiao
|
||||
* @date 22/02/24
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ClusterPhysState {
|
||||
private Integer liveCount;
|
||||
|
||||
private Integer downCount;
|
||||
|
||||
private Integer total;
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.common;
|
||||
|
||||
import lombok.Getter;
|
||||
|
||||
import java.util.concurrent.Delayed;
|
||||
import java.util.concurrent.Future;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
|
||||
@Getter
|
||||
public class FutureTaskDelayQueueData<T> implements Delayed {
|
||||
private final String taskName;
|
||||
|
||||
private final Future<T> futureTask;
|
||||
|
||||
private final long timeoutTimeUnitMs;
|
||||
|
||||
private final long createTimeUnitMs;
|
||||
|
||||
public FutureTaskDelayQueueData(String taskName, Future<T> futureTask, long timeoutTimeUnitMs) {
|
||||
this.taskName = taskName;
|
||||
this.futureTask = futureTask;
|
||||
this.timeoutTimeUnitMs = timeoutTimeUnitMs;
|
||||
this.createTimeUnitMs = System.currentTimeMillis();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getDelay(TimeUnit unit) {
|
||||
return unit.convert(timeoutTimeUnitMs - System.currentTimeMillis(), TimeUnit.MILLISECONDS);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int compareTo(Delayed delayed) {
|
||||
FutureTaskDelayQueueData<T> other = (FutureTaskDelayQueueData<T>) delayed;
|
||||
if (this.timeoutTimeUnitMs == other.timeoutTimeUnitMs) {
|
||||
return (this.timeoutTimeUnitMs + "_" + this.createTimeUnitMs).compareTo((other.timeoutTimeUnitMs + "_" + other.createTimeUnitMs));
|
||||
}
|
||||
|
||||
return (this.timeoutTimeUnitMs - other.timeoutTimeUnitMs) <= 0 ? -1: 1;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.common;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class IpPortData implements Serializable {
|
||||
private static final long serialVersionUID = -428897032994630685L;
|
||||
|
||||
private String ip;
|
||||
|
||||
private String port;
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.config;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
public class BaseClusterConfigValue implements Serializable {
|
||||
/**
|
||||
* 物理集群ID
|
||||
*/
|
||||
protected Long clusterPhyId;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.config;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/02/24
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description = "Jmx配置")
|
||||
public class JmxConfig implements Serializable {
|
||||
@ApiModelProperty(value="jmx端口", example = "8099")
|
||||
private Integer jmxPort;
|
||||
|
||||
@ApiModelProperty(value="最大连接", example = "100")
|
||||
private Integer maxConn;
|
||||
|
||||
@ApiModelProperty(value="是否开启SSL,如果开始则username 与 token 必须非空", example = "false")
|
||||
private Boolean openSSL;
|
||||
|
||||
@ApiModelProperty(value="SSL情况下的username", example = "Ks-Km")
|
||||
private String username;
|
||||
|
||||
@ApiModelProperty(value="SSL情况下的token", example = "KsKmCCY19")
|
||||
private String token;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.config.healthcheck;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.config.BaseClusterConfigValue;
|
||||
import com.xiaojukeji.know.streaming.km.common.enums.health.HealthCheckNameEnum;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 单集群的配置
|
||||
*/
|
||||
@Data
|
||||
public class BaseClusterHealthConfig extends BaseClusterConfigValue {
|
||||
/**
|
||||
* 健康检查名称
|
||||
*/
|
||||
protected HealthCheckNameEnum checkNameEnum;
|
||||
|
||||
/**
|
||||
* 权重
|
||||
*/
|
||||
protected Float weight;
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.config.healthcheck;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 单集群配置,比较大小
|
||||
*/
|
||||
@Data
|
||||
public class HealthCompareValueConfig extends BaseClusterHealthConfig {
|
||||
/**
|
||||
* 比较值
|
||||
*/
|
||||
private Double value = 10.0;
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.config.healthcheck;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* 最近N分钟被检测到M次
|
||||
*/
|
||||
@Data
|
||||
public class HealthDetectedInLatestMinutesConfig extends BaseClusterHealthConfig {
|
||||
/**
|
||||
* 最近多少时间
|
||||
*/
|
||||
private Integer latestMinutes = 10;
|
||||
|
||||
/**
|
||||
* 被检测到的次数
|
||||
*/
|
||||
private Integer detectedTimes = 8;
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.config.kafkaconfig;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/02/28
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description = "Kafka配置信息")
|
||||
public class KafkaConfigDetail {
|
||||
@ApiModelProperty(value = "配置名", example = "retention.ms")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "配置值", example = "1268888")
|
||||
private String value;
|
||||
|
||||
@ApiModelProperty(value = "默认配置值", example = "1268888")
|
||||
private String defaultValue;
|
||||
|
||||
/**
|
||||
* 配置源
|
||||
* @see org.apache.kafka.common.requests.DescribeConfigsResponse.ConfigSource
|
||||
*/
|
||||
@ApiModelProperty(value = "配置源", example = "1268888")
|
||||
private Integer configSource;
|
||||
|
||||
@ApiModelProperty(value = "敏感的配置", example = "false")
|
||||
private Boolean sensitive;
|
||||
|
||||
@ApiModelProperty(value = "只读的配置", example = "false")
|
||||
private Boolean readOnly;
|
||||
|
||||
/**
|
||||
* 配置源
|
||||
* @see org.apache.kafka.common.requests.DescribeConfigsResponse.ConfigType
|
||||
*/
|
||||
@ApiModelProperty(value = "配置value类型", example = "false")
|
||||
private Integer configType;
|
||||
|
||||
@ApiModelProperty(value = "配置说明", example = "保存时间")
|
||||
private String documentation;
|
||||
|
||||
@ApiModelProperty(value = "已覆写配置", example = "false")
|
||||
private Boolean override;
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.config.kafkaconfig;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 22/02/28
|
||||
*/
|
||||
@Data
|
||||
@ApiModel(description = "Kafka配置信息")
|
||||
public class KafkaTopicDefaultConfig {
|
||||
@ApiModelProperty(value = "配置名", example = "retention.ms")
|
||||
private String name;
|
||||
|
||||
@ApiModelProperty(value = "默认配置值", example = "1268888")
|
||||
private String defaultValue;
|
||||
|
||||
@ApiModelProperty(value = "只读的配置", example = "false")
|
||||
private Boolean readOnly;
|
||||
|
||||
/**
|
||||
* 配置源
|
||||
* @see org.apache.kafka.common.requests.DescribeConfigsResponse.ConfigType
|
||||
*/
|
||||
@ApiModelProperty(value = "配置value类型", example = "false")
|
||||
private Integer configType;
|
||||
|
||||
@ApiModelProperty(value = "配置说明", example = "保存时间")
|
||||
private String documentation;
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.config.metric;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class UserMetricConfig {
|
||||
|
||||
private int type;
|
||||
|
||||
private String metric;
|
||||
|
||||
private boolean set;
|
||||
|
||||
@Override
|
||||
public int hashCode(){
|
||||
return metric.hashCode() << 1 + type;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean equals(Object o){
|
||||
if(!(o instanceof UserMetricConfig)) {
|
||||
// 非 UserMetricConfig 类型,则返回false
|
||||
return false;
|
||||
}
|
||||
|
||||
UserMetricConfig u = (UserMetricConfig) o;
|
||||
return type == u.getType() && metric.equals(u.getMetric());
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.group;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 19/5/14
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class GroupTopic implements Serializable {
|
||||
private String groupName;
|
||||
|
||||
private String topicName;
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.group;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 19/5/14
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class GroupTopicPartition implements Serializable {
|
||||
private String groupName;
|
||||
|
||||
private String topicName;
|
||||
|
||||
private List<Integer> partitionIdList;
|
||||
|
||||
public GroupTopicPartition(String groupName, String topicName) {
|
||||
this.groupName = groupName;
|
||||
this.topicName = topicName;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.health;
|
||||
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class HealthCheckResult {
|
||||
/**
|
||||
* 检查维度(0:未知,1:Cluster,2:Broker,3:Topic,4:Group)
|
||||
*/
|
||||
private Integer dimension;
|
||||
|
||||
/**
|
||||
* 配置ID
|
||||
*/
|
||||
private String configName;
|
||||
|
||||
/**
|
||||
* 物理集群ID
|
||||
*/
|
||||
private Long clusterPhyId;
|
||||
|
||||
/**
|
||||
* 资源名称
|
||||
*/
|
||||
private String resName;
|
||||
|
||||
/**
|
||||
* 是否通过
|
||||
*/
|
||||
private Integer passed;
|
||||
|
||||
public HealthCheckResult(Integer dimension, String configName, Long clusterPhyId, String resName) {
|
||||
this.dimension = dimension;
|
||||
this.configName = configName;
|
||||
this.clusterPhyId = clusterPhyId;
|
||||
this.resName = resName;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,123 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.health;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.config.healthcheck.BaseClusterHealthConfig;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.po.health.HealthCheckResultPO;
|
||||
import com.xiaojukeji.know.streaming.km.common.enums.health.HealthCheckNameEnum;
|
||||
import com.xiaojukeji.know.streaming.km.common.utils.ValidateUtils;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class HealthScoreResult {
|
||||
private HealthCheckNameEnum checkNameEnum;
|
||||
|
||||
private Float presentDimensionTotalWeight;
|
||||
|
||||
private Float allDimensionTotalWeight;
|
||||
|
||||
private BaseClusterHealthConfig baseConfig;
|
||||
|
||||
private List<HealthCheckResultPO> poList;
|
||||
|
||||
private Boolean passed;
|
||||
|
||||
public HealthScoreResult(HealthCheckNameEnum checkNameEnum,
|
||||
Float presentDimensionTotalWeight,
|
||||
Float allDimensionTotalWeight,
|
||||
BaseClusterHealthConfig baseConfig,
|
||||
List<HealthCheckResultPO> poList) {
|
||||
this.checkNameEnum = checkNameEnum;
|
||||
this.baseConfig = baseConfig;
|
||||
this.poList = poList;
|
||||
this.presentDimensionTotalWeight = presentDimensionTotalWeight;
|
||||
this.allDimensionTotalWeight = allDimensionTotalWeight;
|
||||
if (!ValidateUtils.isEmptyList(poList) && poList.stream().filter(elem -> elem.getPassed() <= 0).count() <= 0) {
|
||||
passed = true;
|
||||
} else {
|
||||
passed = false;
|
||||
}
|
||||
}
|
||||
|
||||
public Integer getTotalCount() {
|
||||
if (poList == null) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return poList.size();
|
||||
}
|
||||
|
||||
public Integer getPassedCount() {
|
||||
if (poList == null) {
|
||||
return 0;
|
||||
}
|
||||
return (int) (poList.stream().filter(elem -> elem.getPassed() > 0).count());
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算所有检查结果的健康分
|
||||
* 比如:计算集群健康分
|
||||
*/
|
||||
public Float calAllWeightHealthScore() {
|
||||
Float healthScore = 100 * baseConfig.getWeight() / allDimensionTotalWeight;
|
||||
if (poList == null || poList.isEmpty()) {
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
return healthScore * this.getPassedCount() / this.getTotalCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算当前维度的健康分
|
||||
* 比如:计算集群Broker健康分
|
||||
*/
|
||||
public Float calDimensionWeightHealthScore() {
|
||||
Float healthScore = 100 * baseConfig.getWeight() / presentDimensionTotalWeight;
|
||||
if (poList == null || poList.isEmpty()) {
|
||||
return 0.0f;
|
||||
}
|
||||
|
||||
return healthScore * this.getPassedCount() / this.getTotalCount();
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算当前检查的健康分
|
||||
* 比如:计算集群Broker健康检查中的某一项的健康分
|
||||
*/
|
||||
public Integer calRawHealthScore() {
|
||||
if (poList == null || poList.isEmpty()) {
|
||||
return 100;
|
||||
}
|
||||
|
||||
return 100 * this.getPassedCount() / this.getTotalCount();
|
||||
}
|
||||
|
||||
public List<String> getNotPassedResNameList() {
|
||||
if (poList == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
return poList.stream().filter(elem -> elem.getPassed() <= 0).map(elem -> elem.getResName()).collect(Collectors.toList());
|
||||
}
|
||||
|
||||
public Date getCreateTime() {
|
||||
if (ValidateUtils.isEmptyList(poList)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return poList.get(0).getCreateTime();
|
||||
}
|
||||
|
||||
public Date getUpdateTime() {
|
||||
if (ValidateUtils.isEmptyList(poList)) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return poList.get(0).getUpdateTime();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,80 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.job;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.BaseEntity;
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.job.content.BaseJobCreateContent;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class Job extends BaseEntity {
|
||||
/**
|
||||
* 序列化版本号
|
||||
*/
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**
|
||||
* id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 集群id
|
||||
*/
|
||||
private Long clusterId;
|
||||
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
private String jobName;
|
||||
|
||||
/**
|
||||
* 标题
|
||||
*/
|
||||
private String jobDesc;
|
||||
|
||||
/**
|
||||
* 任务类型
|
||||
*/
|
||||
private Integer jobType;
|
||||
|
||||
/**
|
||||
* 任务状态
|
||||
*/
|
||||
private Integer jobStatus;
|
||||
|
||||
/**
|
||||
* 创建任务的详细数据
|
||||
* @see BaseJobCreateContent
|
||||
*/
|
||||
private String jobData;
|
||||
|
||||
/**
|
||||
* 任务执行对象
|
||||
*/
|
||||
private String target;
|
||||
|
||||
/**
|
||||
* 任务运行详细状态(json), Success:7 Fail:1 Doing:2
|
||||
*/
|
||||
private String runningStatus;
|
||||
|
||||
/**
|
||||
* 任务计划开始执行时间
|
||||
*/
|
||||
private Date planTime;
|
||||
|
||||
/**
|
||||
* 任务实际开始执行时间
|
||||
*/
|
||||
private Date startTime;
|
||||
|
||||
/**
|
||||
* 创建人
|
||||
*/
|
||||
private String creator;
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.job;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.enums.job.JobStatusEnum;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class JobStatus {
|
||||
|
||||
/**
|
||||
* @see JobStatusEnum
|
||||
*/
|
||||
private int status;
|
||||
|
||||
private int total;
|
||||
|
||||
private int success;
|
||||
|
||||
private int failed;
|
||||
|
||||
private int doing;
|
||||
|
||||
private int waiting;
|
||||
|
||||
private int unknown;
|
||||
|
||||
/**
|
||||
* 按照状态,直接进行聚合
|
||||
*/
|
||||
public JobStatus(List<Integer> jobStatusList) {
|
||||
this.total = jobStatusList.size();
|
||||
this.success = 0;
|
||||
this.failed = 0;
|
||||
this.doing = 0;
|
||||
this.waiting = 0;
|
||||
this.unknown = 0;
|
||||
for (Integer jobStatus: jobStatusList) {
|
||||
if (JobStatusEnum.SUCCESS.getStatus() == jobStatus) {
|
||||
success += 1;
|
||||
} else if (JobStatusEnum.FAILED.getStatus() == jobStatus) {
|
||||
failed += 1;
|
||||
} else if (JobStatusEnum.RUNNING.getStatus() == jobStatus) {
|
||||
doing += 1;
|
||||
} else if (JobStatusEnum.WAITING.getStatus() == jobStatus) {
|
||||
waiting += 1;
|
||||
} else {
|
||||
unknown += 1;
|
||||
}
|
||||
}
|
||||
|
||||
this.status = JobStatusEnum.getStatusBySubStatus(this.total, this.success, this.failed, this.doing).getStatus();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,8 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.job.content;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class BaseJobCreateContent {
|
||||
protected int type;
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.job.content;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.reassign.plan.ReassignTopicPlanDTO;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import javax.validation.constraints.Min;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@ApiModel(description="创建/修改迁移及扩缩副本任务")
|
||||
public class JobCommunityReassignContent extends BaseJobCreateContent {
|
||||
@Min(value = 1, message = "clusterId不允许为null或者小于0")
|
||||
@ApiModelProperty(value = "集群ID, 默认为逻辑集群ID", example = "6")
|
||||
private Long clusterId;
|
||||
|
||||
@Min(value = 1, message = "throttle不允许为null或者小于0")
|
||||
@ApiModelProperty(value = "限流值", example = "102400000")
|
||||
private Long throttleUnitB;
|
||||
|
||||
@NotNull(message = "description不允许为null")
|
||||
@ApiModelProperty(value = "备注信息", example = "测试")
|
||||
private String description;
|
||||
|
||||
@NotNull(message = "topicPlanList不允许为空")
|
||||
@ApiModelProperty("迁移计划")
|
||||
private List<ReassignTopicPlanDTO> topicPlanList;
|
||||
}
|
||||
@@ -0,0 +1,81 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.job.detail;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.vo.job.sub.SubJobVO;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class JobDetail {
|
||||
|
||||
/**
|
||||
* 任务id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 任务类型
|
||||
*/
|
||||
private Integer jobType;
|
||||
|
||||
/**
|
||||
* 任务名称
|
||||
*/
|
||||
private String jobName;
|
||||
|
||||
/**
|
||||
* 任务状态
|
||||
*/
|
||||
private Integer jobStatus;
|
||||
|
||||
/**
|
||||
* 任务描述
|
||||
*/
|
||||
private String jobDesc;
|
||||
|
||||
/**
|
||||
* 任务计划执行时间
|
||||
*/
|
||||
private Date planTime;
|
||||
|
||||
/**
|
||||
* 任务开始执行时间
|
||||
*/
|
||||
private Date startTime;
|
||||
|
||||
/**
|
||||
* 任务完成执行时间
|
||||
*/
|
||||
private Date endTime;
|
||||
|
||||
/**
|
||||
* 任务限流值
|
||||
*/
|
||||
private Double flowLimit;
|
||||
|
||||
/**
|
||||
* 子任务成功数
|
||||
*/
|
||||
private Integer total;
|
||||
|
||||
/**
|
||||
* 子任务成功数
|
||||
*/
|
||||
private Integer success;
|
||||
|
||||
/**
|
||||
* 子任务失败数
|
||||
*/
|
||||
private Integer fail;
|
||||
|
||||
/**
|
||||
* 子任务进行数
|
||||
*/
|
||||
private Integer doing;
|
||||
|
||||
/**
|
||||
* 子任务列表,不同的子任务的实现不一样,需要具体场景具体处理
|
||||
*/
|
||||
private List<SubJobVO> subJobs;
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.job.detail;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.BaseEntity;
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.Date;
|
||||
|
||||
@Data
|
||||
public class JobModifyDetail extends BaseEntity {
|
||||
|
||||
/**
|
||||
* 任务id
|
||||
*/
|
||||
private Long id;
|
||||
|
||||
/**
|
||||
* 任务类型
|
||||
*/
|
||||
private Integer jobType;
|
||||
|
||||
/**
|
||||
* 任务名称
|
||||
*/
|
||||
private String jobName;
|
||||
|
||||
/**
|
||||
* 任务描述
|
||||
*/
|
||||
private String jobDesc;
|
||||
|
||||
/**
|
||||
* 任务状态
|
||||
*/
|
||||
private Integer jobStatus;
|
||||
|
||||
/**
|
||||
* 任务扩展数据
|
||||
*/
|
||||
private String jobData;
|
||||
|
||||
/**
|
||||
* 任务计划开始执行时间
|
||||
*/
|
||||
private Date planTime;
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.job.detail;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public abstract class SubBrokerJobDetail extends SubJobDetail{
|
||||
/**
|
||||
* 源brokerId列表
|
||||
*/
|
||||
private List<Integer> sourceBrokers;
|
||||
|
||||
/**
|
||||
* 目的brokerId列表
|
||||
*/
|
||||
private List<Integer> desBrokers;
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.job.detail;
|
||||
|
||||
public abstract class SubJobDetail {
|
||||
}
|
||||
@@ -0,0 +1,57 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.job.detail;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class SubJobPartitionDetail {
|
||||
/**
|
||||
* partitionId
|
||||
*/
|
||||
private Integer partitionId;
|
||||
|
||||
/**
|
||||
* 源BrokerID
|
||||
*/
|
||||
private Integer sourceBrokerId;
|
||||
|
||||
/**
|
||||
* 目标BrokerID
|
||||
*/
|
||||
private List<Integer> desBrokerIds;
|
||||
|
||||
/**
|
||||
* 需迁移MessageSize
|
||||
*/
|
||||
private Double totalSize;
|
||||
|
||||
/**
|
||||
* 已完成MessageSize
|
||||
*/
|
||||
private Double movedSize;
|
||||
|
||||
/**
|
||||
* 任务状态
|
||||
*/
|
||||
private String status;
|
||||
|
||||
/**
|
||||
* 预计剩余时长
|
||||
*/
|
||||
private Long remainTime;
|
||||
|
||||
/**
|
||||
* BytesIn
|
||||
*/
|
||||
private Long byteIn;
|
||||
|
||||
/**
|
||||
* 同步速率
|
||||
*/
|
||||
private Long byteMove;
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.job.detail;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
public class SubJobReplicaMoveDetail extends SubBrokerJobDetail {
|
||||
/**
|
||||
* topic 名称
|
||||
*/
|
||||
private String topicName;
|
||||
|
||||
/**
|
||||
* 分区列表
|
||||
*/
|
||||
private List<Integer> partitions;
|
||||
|
||||
/**
|
||||
* 当前数据保存时间
|
||||
*/
|
||||
private Long currentTimeSpent;
|
||||
|
||||
/**
|
||||
* 迁移数据时间范围
|
||||
*/
|
||||
private Long moveTimeSpent;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 需迁移MessageSize
|
||||
*/
|
||||
private Double totalSize;
|
||||
|
||||
/**
|
||||
* 已完成MessageSize
|
||||
*/
|
||||
private Double movedSize;
|
||||
|
||||
/**
|
||||
* 预计剩余时长
|
||||
*/
|
||||
private Long remainTime;
|
||||
|
||||
/**
|
||||
* 子任务成功数
|
||||
*/
|
||||
private Integer total;
|
||||
|
||||
/**
|
||||
* 子任务成功数
|
||||
*/
|
||||
private Integer success;
|
||||
|
||||
/**
|
||||
* 子任务失败数
|
||||
*/
|
||||
private Integer fail;
|
||||
|
||||
/**
|
||||
* 子任务进行数
|
||||
*/
|
||||
private Integer doing;
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.job.detail;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class SubJobReplicaScalaDetail extends SubBrokerJobDetail {
|
||||
/**
|
||||
* topic 名称
|
||||
*/
|
||||
private String topicName;
|
||||
|
||||
/**
|
||||
* 原副本数
|
||||
*/
|
||||
private Integer oldReplicaNu;
|
||||
|
||||
/**
|
||||
* 新副本数
|
||||
*/
|
||||
private Integer newReplicaNu;
|
||||
|
||||
/**
|
||||
* 状态
|
||||
*/
|
||||
private Integer status;
|
||||
|
||||
/**
|
||||
* 需迁移MessageSize
|
||||
*/
|
||||
private Double totalSize;
|
||||
|
||||
/**
|
||||
* 已完成MessageSize
|
||||
*/
|
||||
private Double movedSize;
|
||||
|
||||
/**
|
||||
* 预计剩余时长
|
||||
*/
|
||||
private Long remainTime;
|
||||
|
||||
/**
|
||||
* 子任务成功数
|
||||
*/
|
||||
private Integer total;
|
||||
|
||||
/**
|
||||
* 子任务成功数
|
||||
*/
|
||||
private Integer success;
|
||||
|
||||
/**
|
||||
* 子任务失败数
|
||||
*/
|
||||
private Integer fail;
|
||||
|
||||
/**
|
||||
* 子任务进行数
|
||||
*/
|
||||
private Integer doing;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.kafkacontroller;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.io.Serializable;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class KafkaController implements Serializable {
|
||||
/**
|
||||
* 物理集群ID
|
||||
*/
|
||||
private Long clusterPhyId;
|
||||
|
||||
/**
|
||||
* brokerId
|
||||
*/
|
||||
private Integer brokerId;
|
||||
|
||||
/**
|
||||
* 被选举时间
|
||||
*/
|
||||
private Long timestamp;
|
||||
|
||||
public KafkaController(Long clusterPhyId, Integer brokerId, Long timestamp) {
|
||||
this.clusterPhyId = clusterPhyId;
|
||||
this.brokerId = brokerId;
|
||||
this.timestamp = timestamp;
|
||||
}
|
||||
|
||||
public boolean alive() {
|
||||
return !brokerId.equals(Constant.INVALID_CODE);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.kafkauser;
|
||||
|
||||
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
|
||||
import com.xiaojukeji.know.streaming.km.common.utils.ConvertUtil;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import org.apache.kafka.clients.admin.ScramMechanism;
|
||||
|
||||
import java.util.*;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
public class KafkaUser {
|
||||
/**
|
||||
* 集群Id
|
||||
*/
|
||||
private Long clusterPhyId;
|
||||
|
||||
/**
|
||||
* KafkaUser
|
||||
*/
|
||||
private String name;
|
||||
|
||||
/**
|
||||
* 密钥
|
||||
*/
|
||||
private String token;
|
||||
|
||||
/**
|
||||
* 原始数据
|
||||
*/
|
||||
private Properties props;
|
||||
|
||||
public KafkaUser(Long clusterPhyId, String name, String token, Properties props) {
|
||||
this.clusterPhyId = clusterPhyId;
|
||||
this.name = name;
|
||||
this.token = token;
|
||||
this.props = props;
|
||||
}
|
||||
|
||||
public String getCredentialString() {
|
||||
List<String> credentialList = new ArrayList<>();
|
||||
for (ScramMechanism scramMechanism: ScramMechanism.values()) {
|
||||
if (!props.containsKey(scramMechanism.mechanismName())) {
|
||||
continue;
|
||||
}
|
||||
credentialList.add(props.getProperty(scramMechanism.mechanismName()));
|
||||
}
|
||||
|
||||
return ConvertUtil.list2String(credentialList, Constant.COMMA);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.metrics;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.ToString;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ConcurrentHashMap;
|
||||
|
||||
import static com.xiaojukeji.know.streaming.km.common.utils.CommonUtils.monitorTimestamp2min;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/6/16
|
||||
*/
|
||||
@Data
|
||||
@ToString
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public abstract class BaseMetrics implements Serializable {
|
||||
protected Long clusterPhyId;
|
||||
|
||||
protected Long timestamp = monitorTimestamp2min(System.currentTimeMillis());
|
||||
|
||||
protected Map<String, Float> metrics = new ConcurrentHashMap<>();
|
||||
|
||||
public void putMetric(String key, Float value){
|
||||
metrics.put(key, value);
|
||||
}
|
||||
|
||||
public void putMetric(Map<String, Float> metrics){ this.metrics.putAll(metrics);}
|
||||
|
||||
public Float getMetric(String key) {
|
||||
return metrics.get(key);
|
||||
}
|
||||
|
||||
public BaseMetrics(Long clusterPhyId){
|
||||
this.clusterPhyId = clusterPhyId;
|
||||
}
|
||||
|
||||
public abstract String unique();
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.metrics;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.ToString;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/6/17
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ToString
|
||||
public class BrokerMetrics extends BaseMetrics {
|
||||
private Integer brokerId;
|
||||
|
||||
private String host;
|
||||
|
||||
private Integer port;
|
||||
|
||||
public BrokerMetrics(Long clusterPhyId, Integer brokerId){
|
||||
super(clusterPhyId);
|
||||
this.brokerId = brokerId;
|
||||
}
|
||||
|
||||
public BrokerMetrics(Long clusterPhyId, Integer brokerId, String host, Integer port){
|
||||
super(clusterPhyId);
|
||||
this.brokerId = brokerId;
|
||||
this.host = host;
|
||||
this.port = port;
|
||||
}
|
||||
|
||||
public static BrokerMetrics initWithMetric(Long clusterPhyId, Integer brokerId, String metric, Float value){
|
||||
BrokerMetrics brokerMetrics = new BrokerMetrics();
|
||||
brokerMetrics.setClusterPhyId( clusterPhyId );
|
||||
brokerMetrics.setBrokerId( brokerId );
|
||||
brokerMetrics.putMetric(metric, value);
|
||||
return brokerMetrics;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String unique() {
|
||||
return "B@" + clusterPhyId + "@" + brokerId;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,48 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.metrics;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.ToString;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/6/18
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ToString
|
||||
public class ClusterMetrics extends BaseMetrics {
|
||||
private String kafkaVersion;
|
||||
|
||||
public ClusterMetrics(Long clusterPhyId){
|
||||
super(clusterPhyId);
|
||||
}
|
||||
|
||||
public ClusterMetrics(Long clusterPhyId, String kafkaVersion){
|
||||
super(clusterPhyId);
|
||||
this.kafkaVersion = kafkaVersion;
|
||||
}
|
||||
|
||||
public static ClusterMetrics initWithMetrics(Long clusterId, String metric, Float value){
|
||||
ClusterMetrics clusterMetrics = new ClusterMetrics();
|
||||
clusterMetrics.setClusterPhyId(clusterId);
|
||||
clusterMetrics.putMetric(metric, value);
|
||||
|
||||
return clusterMetrics;
|
||||
}
|
||||
|
||||
public static ClusterMetrics initWithMetrics(Long clusterId, String metric, int value){
|
||||
ClusterMetrics clusterMetrics = new ClusterMetrics();
|
||||
clusterMetrics.setClusterPhyId(clusterId);
|
||||
clusterMetrics.putMetric(metric, (float)value);
|
||||
|
||||
return clusterMetrics;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String unique() {
|
||||
return "C@" + clusterPhyId;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.metrics;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author didi
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ClusterPagingMetrics {
|
||||
private Long clusterId;
|
||||
private Float sortValue;
|
||||
private Map<String, Float> metricValues;
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.metrics;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.ToString;
|
||||
|
||||
import static com.xiaojukeji.know.streaming.km.common.constant.Constant.ONE;
|
||||
import static com.xiaojukeji.know.streaming.km.common.constant.Constant.ZERO;
|
||||
|
||||
/**
|
||||
* Consumer实体类
|
||||
* @author tukun
|
||||
* @date 2015/11/12
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ToString
|
||||
public class GroupMetrics extends BaseMetrics{
|
||||
private String group;
|
||||
|
||||
private String topic;
|
||||
|
||||
private Integer partitionId;
|
||||
|
||||
/**
|
||||
* true: group维度的指标, topicName & partitionId 为null; false: group & topicName & partitionId维度的指标
|
||||
*/
|
||||
private boolean bGroupMetric;
|
||||
|
||||
/**
|
||||
* 1: group维度的指标, 0: group & topicName & partitionId维度的指标
|
||||
* 针对类似枚举和状态类属性,使用字符串来表示比使用数值或者bool类型,ES的查询效率更高
|
||||
*/
|
||||
private String groupMetric;
|
||||
|
||||
public GroupMetrics(Long clusterPhyId, String group, boolean bGroupMetric){
|
||||
this.clusterPhyId = clusterPhyId;
|
||||
this.group = group;
|
||||
this.bGroupMetric = bGroupMetric;
|
||||
this.groupMetric = bGroupMetric ? ONE : ZERO;
|
||||
}
|
||||
|
||||
public GroupMetrics(Long clusterPhyId, String group, String topic, Integer partitionId) {
|
||||
this.clusterPhyId = clusterPhyId;
|
||||
this.group = group;
|
||||
this.topic = topic;
|
||||
this.partitionId = partitionId;
|
||||
this.bGroupMetric = false;
|
||||
this.groupMetric = ZERO;
|
||||
}
|
||||
|
||||
public GroupMetrics(Long clusterPhyId, Integer partitionId, String topic, String group, boolean bGroupMetric) {
|
||||
super(clusterPhyId);
|
||||
this.partitionId = partitionId;
|
||||
this.topic = topic;
|
||||
this.group = group;
|
||||
this.bGroupMetric = bGroupMetric;
|
||||
this.groupMetric = bGroupMetric ? ONE : ZERO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String unique() {
|
||||
return ONE.equals( bGroupMetric ) ? "G@" +clusterPhyId + "@" + group
|
||||
: "G@" +clusterPhyId + "@" + group + "@" + partitionId + "@" + topic;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.metrics;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.ToString;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/6/17
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ToString
|
||||
public class PartitionMetrics extends BaseMetrics {
|
||||
private String topic;
|
||||
|
||||
private Integer partitionId;
|
||||
|
||||
private Integer brokerId;
|
||||
|
||||
public PartitionMetrics(Long clusterId, String topicName, Integer brokerId, Integer partitionId){
|
||||
super(clusterId);
|
||||
this.topic = topicName;
|
||||
this.brokerId = brokerId;
|
||||
this.partitionId = partitionId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String unique() {
|
||||
return "P@" + clusterPhyId + "@" + topic + "@" + brokerId + "@" +partitionId;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,29 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.metrics;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class ReplicationMetrics extends BaseMetrics{
|
||||
private String topic;
|
||||
|
||||
private Integer partitionId;
|
||||
|
||||
private Integer brokerId;
|
||||
|
||||
public ReplicationMetrics(Long clusterId, String topicName, Integer brokerId, Integer partitionId){
|
||||
super(clusterId);
|
||||
this.topic = topicName;
|
||||
this.brokerId = brokerId;
|
||||
this.partitionId = partitionId;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String unique() {
|
||||
return "R@" + clusterPhyId + "@" + topic + "@" + brokerId + "@" +partitionId;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.metrics;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.ToString;
|
||||
|
||||
import static com.xiaojukeji.know.streaming.km.common.constant.Constant.ONE;
|
||||
import static com.xiaojukeji.know.streaming.km.common.constant.Constant.ZERO;
|
||||
|
||||
/**
|
||||
* @author zengqiao
|
||||
* @date 20/6/17
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
@ToString
|
||||
public class TopicMetrics extends BaseMetrics {
|
||||
private String topic;
|
||||
|
||||
private Integer brokerId;
|
||||
|
||||
/**
|
||||
* topic的指标是否是有broker上的指标聚合而来,true的时候brokerId为null
|
||||
*/
|
||||
private boolean bBrokerAgg = true;
|
||||
|
||||
/**
|
||||
* brokerAgg: 1:是由broker聚合而成的topic整体维度指标,0:是broker维度的指标
|
||||
* 针对类似枚举和状态类属性,使用字符串来表示,ES的查询效率更高
|
||||
*/
|
||||
private String brokerAgg = ONE;
|
||||
|
||||
public TopicMetrics(String topic, Long clusterPhyId){
|
||||
this.topic = topic;
|
||||
this.clusterPhyId = clusterPhyId;
|
||||
this.bBrokerAgg = true;
|
||||
this.brokerAgg = bBrokerAgg ? ONE : ZERO;
|
||||
}
|
||||
|
||||
public TopicMetrics(String topic, Long clusterPhyId, boolean bBrokerAgg){
|
||||
this.topic = topic;
|
||||
this.clusterPhyId = clusterPhyId;
|
||||
this.bBrokerAgg = bBrokerAgg;
|
||||
this.brokerAgg = bBrokerAgg ? ONE : ZERO;
|
||||
}
|
||||
|
||||
public TopicMetrics(String topic, Long clusterPhyId, Integer brokerId, boolean bBrokerAgg){
|
||||
this.topic = topic;
|
||||
this.clusterPhyId = clusterPhyId;
|
||||
this.brokerId = brokerId;
|
||||
this.bBrokerAgg = bBrokerAgg;
|
||||
this.brokerAgg = bBrokerAgg ? ONE : ZERO;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String unique() {
|
||||
return ONE.equals( bBrokerAgg ) ? "T@" + clusterPhyId + "@" + topic
|
||||
: "T@" + clusterPhyId + "@" + brokerId + "@" + topic;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.metrics;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* @author didi
|
||||
*/
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class TopicPagingMetrics {
|
||||
private String topic;
|
||||
private Float sortValue;
|
||||
private Map<String, Float> metricValues;
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.pagination;
|
||||
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
@ApiModel(description = "分页信息")
|
||||
public class Pagination {
|
||||
@ApiModelProperty(value = "总记录数", example = "100")
|
||||
private long total;
|
||||
|
||||
@ApiModelProperty(value = "当前页码", example = "0")
|
||||
private long pageNo;
|
||||
|
||||
@ApiModelProperty(value = "单页大小", example = "10")
|
||||
private long pageSize;
|
||||
|
||||
public Pagination(long total, long pageNo, long pageSize) {
|
||||
this.total = total;
|
||||
this.pageNo = pageNo;
|
||||
this.pageSize = pageSize;
|
||||
}
|
||||
}
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user