合并3.3.0企业版改动

This commit is contained in:
zengqiao
2023-02-24 17:49:26 +08:00
parent cca7246281
commit a82d7f594e
137 changed files with 591 additions and 1082 deletions

View File

@@ -29,6 +29,11 @@
<artifactId>km-core</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>com.xiaojukeji.kafka</groupId>
<artifactId>km-rebalance</artifactId>
<version>${project.parent.version}</version>
</dependency>
<!-- spring -->
<dependency>

View File

@@ -15,6 +15,7 @@ import com.xiaojukeji.know.streaming.km.common.bean.entity.result.Result;
import com.xiaojukeji.know.streaming.km.common.bean.vo.cluster.ClusterPhyBaseVO;
import com.xiaojukeji.know.streaming.km.common.bean.vo.cluster.ClusterPhyDashboardVO;
import com.xiaojukeji.know.streaming.km.common.bean.vo.metrics.line.MetricMultiLinesVO;
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
import com.xiaojukeji.know.streaming.km.common.converter.ClusterVOConverter;
import com.xiaojukeji.know.streaming.km.common.enums.health.HealthStateEnum;
import com.xiaojukeji.know.streaming.km.common.utils.ConvertUtil;
@@ -24,6 +25,10 @@ import com.xiaojukeji.know.streaming.km.common.utils.ValidateUtils;
import com.xiaojukeji.know.streaming.km.core.service.cluster.ClusterMetricService;
import com.xiaojukeji.know.streaming.km.core.service.cluster.ClusterPhyService;
import com.xiaojukeji.know.streaming.km.core.service.version.metrics.kafka.ClusterMetricVersionItems;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.common.BalanceMetricConstant;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.ClusterBalanceItemState;
import com.xiaojukeji.know.streaming.km.rebalance.core.service.ClusterBalanceService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@@ -40,6 +45,9 @@ public class MultiClusterPhyManagerImpl implements MultiClusterPhyManager {
@Autowired
private ClusterMetricService clusterMetricService;
@Autowired
private ClusterBalanceService clusterBalanceService;
@Override
public ClusterPhysState getClusterPhysState() {
List<ClusterPhy> clusterPhyList = clusterPhyService.listAllClusters();
@@ -153,6 +161,11 @@ public class MultiClusterPhyManagerImpl implements MultiClusterPhyManager {
ClusterMetrics clusterMetrics = clusterMetricService.getLatestMetricsFromCache(vo.getId());
clusterMetrics.getMetrics().putIfAbsent(ClusterMetricVersionItems.CLUSTER_METRIC_HEALTH_STATE, (float) HealthStateEnum.UNKNOWN.getDimension());
Result<ClusterMetrics> balanceMetricsResult = this.getClusterLoadReBalanceInfo(vo.getId());
if (balanceMetricsResult.hasData()) {
clusterMetrics.putMetric(balanceMetricsResult.getData().getMetrics());
}
metricsList.add(clusterMetrics);
}
@@ -174,4 +187,21 @@ public class MultiClusterPhyManagerImpl implements MultiClusterPhyManager {
dto.setClusterPhyIds(clusterIdList);
return dto;
}
private Result<ClusterMetrics> getClusterLoadReBalanceInfo(Long clusterPhyId) {
Result<ClusterBalanceItemState> stateResult = clusterBalanceService.getItemStateFromCacheFirst(clusterPhyId);
if (stateResult.failed()) {
return Result.buildFromIgnoreData(stateResult);
}
ClusterBalanceItemState state = stateResult.getData();
ClusterMetrics metric = ClusterMetrics.initWithMetrics(clusterPhyId, BalanceMetricConstant.CLUSTER_METRIC_LOAD_RE_BALANCE_ENABLE, state.getEnable()? Constant.YES: Constant.NO);
metric.putMetric(BalanceMetricConstant.CLUSTER_METRIC_LOAD_RE_BALANCE_CPU, state.getResItemState(Resource.CPU).floatValue());
metric.putMetric(BalanceMetricConstant.CLUSTER_METRIC_LOAD_RE_BALANCE_NW_IN, state.getResItemState(Resource.NW_IN).floatValue());
metric.putMetric(BalanceMetricConstant.CLUSTER_METRIC_LOAD_RE_BALANCE_NW_OUT, state.getResItemState(Resource.NW_OUT).floatValue());
metric.putMetric(BalanceMetricConstant.CLUSTER_METRIC_LOAD_RE_BALANCE_DISK, state.getResItemState(Resource.DISK).floatValue());
return Result.buildSuc(metric);
}
}

View File

@@ -22,12 +22,6 @@
</properties>
<dependencies>
<dependency>
<groupId>com.xiaojukeji.kafka</groupId>
<artifactId>km-rebalance</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>

View File

@@ -36,8 +36,6 @@ public class ESConstant {
public static final Integer DEFAULT_RETRY_TIME = 3;
public static final String PARTITION_INDEX = "ks_kafka_partition_metric";
/**
* 获取Topic-Latest指标时单次允许的Topic数
*/

View File

@@ -1,2 +1,2 @@
BUSINESS_VERSION='false'
BUSINESS_VERSION='true'
PUBLIC_PATH=''

View File

@@ -31,12 +31,7 @@ export const { Provider, Consumer } = React.createContext('zh');
const defaultLanguage = 'zh';
const AppContent = (props: {
getLicenseInfo?: (cbk: (msg: string) => void) => void | undefined;
licenseEventBus?: Record<string, any> | undefined;
}) => {
const { getLicenseInfo, licenseEventBus } = props;
const AppContent = (props: any) => {
return (
<div className="config-system">
<DProLayout.Sider prefixCls={'dcd-two-columns'} width={200} theme={'light'} systemKey={systemKey} menuConf={leftMenus} />
@@ -44,7 +39,7 @@ const AppContent = (props: {
<RouteGuard
routeList={pageRoutes}
beforeEach={() => {
getLicenseInfo?.((msg) => licenseEventBus?.emit('licenseError', msg));
// getLicenseInfo?.((msg) => licenseEventBus?.emit('licenseError', msg));
return Promise.resolve(true);
}}
noMatch={() => <Redirect to="/404" />}
@@ -55,7 +50,6 @@ const AppContent = (props: {
};
const App = (props: any) => {
const { getLicenseInfo, licenseEventBus } = props;
const intlMessages = _.get(localeMap[defaultLanguage], 'intlMessages', intlZhCN);
const locale = _.get(localeMap[defaultLanguage], 'intl', 'zh-CN');
const antdLocale = _.get(localeMap[defaultLanguage], 'dantd', dantdZhCN);
@@ -65,7 +59,7 @@ const App = (props: any) => {
<AppContainer intlProvider={{ locale, messages: intlMessages }} antdProvider={{ locale: antdLocale }}>
<Router basename={systemKey}>
<Switch>
<AppContent getLicenseInfo={getLicenseInfo} licenseEventBus={licenseEventBus} />
<AppContent />
</Switch>
</Router>
</AppContainer>

View File

@@ -72,51 +72,12 @@ const logout = () => {
localStorage.removeItem('userInfo');
};
const LicenseLimitModal = () => {
const [visible, setVisible] = useState<boolean>(false);
const [msg, setMsg] = useState<string>('');
useLayoutEffect(() => {
licenseEventBus.on('licenseError', (desc: string) => {
!visible && setVisible(true);
setMsg(desc);
});
return () => {
licenseEventBus.removeAll('licenseError');
};
}, []);
return (
<Modal
visible={visible}
centered={true}
width={400}
zIndex={10001}
title={
<>
<IconFont type="icon-yichang" style={{ marginRight: 10, fontSize: 18 }} />
</>
}
footer={null}
onCancel={() => setVisible(false)}
>
<div style={{ margin: '0 28px', lineHeight: '24px' }}>
<div>
{msg}<a></a>
</div>
</div>
</Modal>
);
};
const AppContent = (props: { setlanguage: (language: string) => void }) => {
const { pathname } = useLocation();
const history = useHistory();
const userInfo = localStorage.getItem('userInfo');
const [curActiveAppName, setCurActiveAppName] = useState('');
const [versionInfo, setVersionInfo] = useState<VersionInfo>();
useEffect(() => {
if (pathname.startsWith('/config')) {
setCurActiveAppName('config');
@@ -179,7 +140,7 @@ const AppContent = (props: { setlanguage: (language: string) => void }) => {
}}
onMount={(customProps: any) => {
judgePage404();
registerApps(systemsConfig, { ...customProps, getLicenseInfo, licenseEventBus }, () => {
registerApps(systemsConfig, { ...customProps }, () => {
// postMessage();
});
}}
@@ -200,7 +161,6 @@ const AppContent = (props: { setlanguage: (language: string) => void }) => {
}}
/>
</Switch>
<LicenseLimitModal />
</>
</DProLayout.Container>
);
@@ -234,7 +194,6 @@ export default function App(): JSX.Element {
<BrowserRouter basename="">
<Switch>
<Route path="/login" component={Login} />
<Route path="/no-license" exact component={NoLicense} />
<Route render={() => <AppContent setlanguage={setlanguage} />} />
</Switch>
</BrowserRouter>

View File

@@ -33,6 +33,7 @@ interface PropsType {
};
onChange: (options: KsHeaderOptions) => void;
openMetricFilter: () => void;
setScreenType?: any;
}
interface ScopeData {
@@ -56,12 +57,29 @@ const GRID_SIZE_OPTIONS = [
},
];
// connect 筛选逻辑补充
const CONNECT_OPTIONS = [
{
label: '全部',
value: 'all',
},
{
label: 'Cluster',
value: 'Connect',
},
{
label: 'Connector',
value: 'Connector',
},
];
const MetricOperateBar = ({
nodeSelect = {},
hideNodeScope = false,
hideGridSelect = false,
onChange: onChangeCallback,
openMetricFilter,
setScreenType,
}: PropsType): JSX.Element => {
const [gridNum, setGridNum] = useState<number>(GRID_SIZE_OPTIONS[1].value);
const [rangeTime, setRangeTime] = useState<[number, number]>(() => {
@@ -139,6 +157,17 @@ const MetricOperateBar = ({
<DRangeTime timeChange={timeChange} rangeTimeArr={rangeTime} />
</div>
<div className="header-right">
{/* connect 单独逻辑 */}
{setScreenType && (
<Select
style={{ width: 120, marginRight: 10 }}
defaultValue="all"
options={CONNECT_OPTIONS}
onChange={(e) => {
setScreenType(e);
}}
/>
)}
{/* 节点范围 */}
{!hideNodeScope && (
<NodeSelect name={nodeSelect.name || ''} onChange={nodeScopeChange}>

View File

@@ -72,7 +72,7 @@ const ChartList = (props: ChartListProps) => {
const { metricName, metricType, metricUnit, metricLines, showLegend } = data;
return (
<div key={metricName} className="dashboard-drag-item-box">
<div key={metricName + metricType} className="dashboard-drag-item-box">
<div className="dashboard-drag-item-box-title">
<Tooltip
placement="topLeft"

View File

@@ -252,6 +252,7 @@ const ClusterList = (props: { searchParams: SearchParams; showAccessCluster: any
const {
Brokers: brokers,
Zookeepers: zks,
// ConnectionsCount: connect,
HealthCheckPassed: healthCheckPassed,
HealthCheckTotal: healthCheckTotal,
HealthState: healthState,
@@ -352,6 +353,18 @@ const ClusterList = (props: { searchParams: SearchParams; showAccessCluster: any
<div className="indicator-left-item-value">{zookeepersAvailable === -1 ? '-' : zks}</div>
</div>
)}
{/* <div className="indicator-left-item">
<div className="indicator-left-item-title">
<span
className="indicator-left-item-title-dot"
style={{
background: itemData.latestMetrics?.metrics?.BrokersNotAlive ? '#FF7066' : '#34C38F',
}}
></span>
Connect
</div>
<div className="indicator-left-item-value">{connect}</div>
</div> */}
</div>
<div className="indicator-right">
{metricPoints.map((row, index) => {

View File

@@ -61,7 +61,6 @@ const LayoutContainer = () => {
// 路由前置守卫
const routeBeforeEach = useCallback(
(path: string, permissionNode: string | number) => {
getLicenseInfo((msg) => licenseEventBus.emit('licenseError', msg));
// 判断进入页面的前置条件是否满足,如果不满足,则展示加载状态
const isClusterNotExist = path.includes(':clusterId') && !global.clusterInfo;
const isNotLoadedPermissions = typeof global.hasPermission !== 'function';

View File

@@ -3,12 +3,10 @@ package com.xiaojukeji.know.streaming.km.core.service.cluster.impl;
import com.didiglobal.logi.log.ILog;
import com.didiglobal.logi.log.LogFactory;
import com.google.common.collect.Table;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import com.xiaojukeji.know.streaming.km.common.bean.dto.metrices.MetricDTO;
import com.xiaojukeji.know.streaming.km.common.bean.dto.metrices.MetricsClusterPhyDTO;
import com.xiaojukeji.know.streaming.km.common.bean.entity.broker.Broker;
import com.xiaojukeji.know.streaming.km.common.bean.entity.cluster.ClusterPhy;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.ClusterBalanceItemState;
import com.xiaojukeji.know.streaming.km.common.bean.entity.kafkacontroller.KafkaController;
import com.xiaojukeji.know.streaming.km.common.bean.entity.metrics.BrokerMetrics;
import com.xiaojukeji.know.streaming.km.common.bean.entity.metrics.ClusterMetrics;
@@ -40,8 +38,6 @@ import com.xiaojukeji.know.streaming.km.core.service.acl.KafkaAclService;
import com.xiaojukeji.know.streaming.km.core.service.broker.BrokerMetricService;
import com.xiaojukeji.know.streaming.km.core.service.broker.BrokerService;
import com.xiaojukeji.know.streaming.km.core.service.cluster.ClusterMetricService;
import com.xiaojukeji.know.streaming.km.core.service.cluster.ClusterPhyService;
import com.xiaojukeji.know.streaming.km.core.enterprise.rebalance.service.ClusterBalanceService;
import com.xiaojukeji.know.streaming.km.core.service.group.GroupService;
import com.xiaojukeji.know.streaming.km.core.service.health.state.HealthStateService;
import com.xiaojukeji.know.streaming.km.core.service.job.JobService;
@@ -54,7 +50,6 @@ import com.xiaojukeji.know.streaming.km.persistence.cache.LoadedClusterPhyCache;
import com.xiaojukeji.know.streaming.km.persistence.es.dao.ClusterMetricESDAO;
import com.xiaojukeji.know.streaming.km.persistence.kafka.KafkaAdminZKClient;
import com.xiaojukeji.know.streaming.km.persistence.kafka.KafkaJMXClient;
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
import org.apache.kafka.common.TopicPartition;
import org.apache.kafka.common.resource.ResourceType;
import org.springframework.beans.factory.annotation.Autowired;
@@ -72,13 +67,11 @@ import java.util.stream.Collectors;
import static com.xiaojukeji.know.streaming.km.common.bean.entity.metrics.ClusterMetrics.initWithMetrics;
import static com.xiaojukeji.know.streaming.km.common.bean.entity.result.ResultStatus.*;
import static com.xiaojukeji.know.streaming.km.core.service.version.metrics.kafka.TopicMetricVersionItems.*;
import static com.xiaojukeji.know.streaming.km.core.service.version.metrics.kafka.ClusterMetricVersionItems.*;
/**
* @author didi
*/
@Service("clusterMetricService")
@EnterpriseLoadReBalance(all = false)
@Service
public class ClusterMetricServiceImpl extends BaseMetricService implements ClusterMetricService {
private static final ILog LOGGER = LogFactory.getLog(ClusterMetricServiceImpl.class);
@@ -117,9 +110,6 @@ public class ClusterMetricServiceImpl extends BaseMetricService implements Clust
public static final String CLUSTER_METHOD_GET_JOBS_SUCCESS = "getJobsSuccess";
public static final String CLUSTER_METHOD_GET_JOBS_FAILED = "getJobsFailed";
@EnterpriseLoadReBalance(all = false)
public static final String CLUSTER_METHOD_GET_CLUSTER_LOAD_RE_BALANCE_INFO = "getClusterLoadReBalanceInfo";
@Autowired
private HealthStateService healthStateService;
@@ -159,12 +149,6 @@ public class ClusterMetricServiceImpl extends BaseMetricService implements Clust
@Autowired
private JobService jobService;
@Autowired
private ClusterBalanceService clusterBalanceService;
@Autowired
private ClusterPhyService clusterPhyService;
@Override
protected VersionItemTypeEnum getVersionItemType() {
return VersionItemTypeEnum.METRIC_CLUSTER;
@@ -176,7 +160,6 @@ public class ClusterMetricServiceImpl extends BaseMetricService implements Clust
}
@Override
@EnterpriseLoadReBalance(all = false)
protected void initRegisterVCHandler(){
registerVCHandler( CLUSTER_METHOD_DO_NOTHING, this::doNothing);
registerVCHandler( CLUSTER_METHOD_GET_TOPIC_SIZE, this::getTopicSize);
@@ -216,8 +199,6 @@ public class ClusterMetricServiceImpl extends BaseMetricService implements Clust
registerVCHandler( CLUSTER_METHOD_GET_JOBS_WAITING, this::getJobsWaiting);
registerVCHandler( CLUSTER_METHOD_GET_JOBS_SUCCESS, this::getJobsSuccess);
registerVCHandler( CLUSTER_METHOD_GET_JOBS_FAILED, this::getJobsFailed);
registerVCHandler( CLUSTER_METHOD_GET_CLUSTER_LOAD_RE_BALANCE_INFO, this::getClusterLoadReBalanceInfo);
}
@Override
@@ -680,26 +661,6 @@ public class ClusterMetricServiceImpl extends BaseMetricService implements Clust
return Result.buildSuc(initWithMetrics(clusterId, metric, count));
}
@EnterpriseLoadReBalance
private Result<ClusterMetrics> getClusterLoadReBalanceInfo(VersionItemParam metricParam) {
ClusterMetricParam param = (ClusterMetricParam)metricParam;
Result<ClusterBalanceItemState> stateResult = clusterBalanceService.getItemState(param.getClusterId());
if (stateResult.failed()) {
return Result.buildFromIgnoreData(stateResult);
}
ClusterBalanceItemState state = stateResult.getData();
ClusterMetrics metric = ClusterMetrics.initWithMetrics(param.getClusterId(), CLUSTER_METRIC_LOAD_RE_BALANCE_ENABLE, state.getEnable()? Constant.YES: Constant.NO);
metric.putMetric(CLUSTER_METRIC_LOAD_RE_BALANCE_CPU, state.getResItemState(Resource.CPU).floatValue());
metric.putMetric(CLUSTER_METRIC_LOAD_RE_BALANCE_NW_IN, state.getResItemState(Resource.NW_IN).floatValue());
metric.putMetric(CLUSTER_METRIC_LOAD_RE_BALANCE_NW_OUT, state.getResItemState(Resource.NW_OUT).floatValue());
metric.putMetric(CLUSTER_METRIC_LOAD_RE_BALANCE_DISK, state.getResItemState(Resource.DISK).floatValue());
return Result.buildSuc(metric);
}
/**
* 从某一个 controller 的 JMX 中获取指标再聚合得到集群的指标
* @param metricParam

View File

@@ -1,6 +1,5 @@
package com.xiaojukeji.know.streaming.km.core.service.version.metrics.kafka;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import com.xiaojukeji.know.streaming.km.common.bean.entity.version.VersionMetricControlItem;
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
import com.xiaojukeji.know.streaming.km.common.enums.version.VersionEnum;
@@ -20,7 +19,6 @@ import static com.xiaojukeji.know.streaming.km.core.service.cluster.impl.Cluster
* @author didi
*/
@Component
@EnterpriseLoadReBalance(all = false)
public class ClusterMetricVersionItems extends BaseMetricVersionMetric {
/**
* 整体的健康指标
@@ -121,13 +119,6 @@ public class ClusterMetricVersionItems extends BaseMetricVersionMetric {
public static final String CLUSTER_METRIC_JOB_SUCCESS = "JobsSuccess";
public static final String CLUSTER_METRIC_JOB_FAILED = "JobsFailed";
@EnterpriseLoadReBalance
public static final String CLUSTER_METRIC_LOAD_RE_BALANCE_ENABLE = "LoadReBalanceEnable";
public static final String CLUSTER_METRIC_LOAD_RE_BALANCE_CPU = "LoadReBalanceCpu";
public static final String CLUSTER_METRIC_LOAD_RE_BALANCE_NW_IN = "LoadReBalanceNwIn";
public static final String CLUSTER_METRIC_LOAD_RE_BALANCE_NW_OUT = "LoadReBalanceNwOut";
public static final String CLUSTER_METRIC_LOAD_RE_BALANCE_DISK = "LoadReBalanceDisk";
public static final String CLUSTER_METRIC_COLLECT_COST_TIME = Constant.COLLECT_METRICS_COST_TIME_METRICS_NAME;
public ClusterMetricVersionItems(){}
@@ -138,7 +129,6 @@ public class ClusterMetricVersionItems extends BaseMetricVersionMetric {
}
@Override
@EnterpriseLoadReBalance(all = false)
public List<VersionMetricControlItem> init(){
List<VersionMetricControlItem> itemList = new ArrayList<>();
@@ -418,27 +408,6 @@ public class ClusterMetricVersionItems extends BaseMetricVersionMetric {
.name(CLUSTER_METRIC_JOB_FAILED).unit("").desc("集群failed任务总数").category(CATEGORY_JOB)
.extend( buildMethodExtend( CLUSTER_METHOD_GET_JOBS_FAILED )));
// 集群维度-均衡相关
itemList.add( buildAllVersionsItem()
.name(CLUSTER_METRIC_LOAD_RE_BALANCE_ENABLE).unit("是/否").desc("是否开启均衡, 10").category(CATEGORY_CLUSTER)
.extend( buildMethodExtend( CLUSTER_METHOD_GET_CLUSTER_LOAD_RE_BALANCE_INFO )));
itemList.add( buildAllVersionsItem()
.name(CLUSTER_METRIC_LOAD_RE_BALANCE_CPU).unit("是/否").desc("CPU是否均衡, 10").category(CATEGORY_CLUSTER)
.extend( buildMethodExtend( CLUSTER_METHOD_GET_CLUSTER_LOAD_RE_BALANCE_INFO )));
itemList.add( buildAllVersionsItem()
.name(CLUSTER_METRIC_LOAD_RE_BALANCE_NW_IN).unit("是/否").desc("BytesIn是否均衡, 10").category(CATEGORY_CLUSTER)
.extend( buildMethodExtend( CLUSTER_METHOD_GET_CLUSTER_LOAD_RE_BALANCE_INFO )));
itemList.add( buildAllVersionsItem()
.name(CLUSTER_METRIC_LOAD_RE_BALANCE_NW_OUT).unit("是/否").desc("BytesOut是否均衡, 10").category(CATEGORY_CLUSTER)
.extend( buildMethodExtend( CLUSTER_METHOD_GET_CLUSTER_LOAD_RE_BALANCE_INFO )));
itemList.add( buildAllVersionsItem()
.name(CLUSTER_METRIC_LOAD_RE_BALANCE_DISK).unit("是/否").desc("Disk是否均衡, 10").category(CATEGORY_CLUSTER)
.extend( buildMethodExtend( CLUSTER_METHOD_GET_CLUSTER_LOAD_RE_BALANCE_INFO )));
itemList.add(buildAllVersionsItem()
.name(CLUSTER_METRIC_COLLECT_COST_TIME).unit("").desc("采集Cluster指标的耗时").category(CATEGORY_PERFORMANCE)
.extendMethod(CLUSTER_METHOD_DO_NOTHING));

View File

@@ -13,6 +13,7 @@
<artifactId>km-rebalance</artifactId>
<dependencies>
<!--算法依赖的包-->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
@@ -46,22 +47,18 @@
<artifactId>jopt-simple</artifactId>
</dependency>
<!-- <dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<scope>runtime</scope>
<!--应用层依赖的包-->
<dependency>
<groupId>com.xiaojukeji.kafka</groupId>
<artifactId>km-common</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<scope>runtime</scope>
<groupId>com.xiaojukeji.kafka</groupId>
<artifactId>km-core</artifactId>
<version>${project.parent.version}</version>
</dependency>
<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>-->
</dependencies>
</project>

View File

@@ -1,13 +1,13 @@
package com.xiaojukeji.know.streaming.km.rebalance;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xiaojukeji.know.streaming.km.rebalance.executor.ExecutionRebalance;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceParameter;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.HostEnv;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.OptimizerResult;
import com.xiaojukeji.know.streaming.km.rebalance.utils.CommandLineUtils;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.ExecutionRebalance;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceParameter;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.HostEnv;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.OptimizerResult;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils.CommandLineUtils;
import joptsimple.OptionParser;
import joptsimple.OptionSet;
import org.apache.commons.io.FileUtils;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.exception;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.exception;
public class OptimizationFailureException extends Exception {
public OptimizationFailureException(String message, Throwable cause) {

View File

@@ -1,16 +1,16 @@
package com.xiaojukeji.know.streaming.km.rebalance.executor;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceGoal;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceParameter;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceThreshold;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BrokerBalanceState;
import com.xiaojukeji.know.streaming.km.rebalance.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.model.Load;
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.GoalOptimizer;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.OptimizationOptions;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.OptimizerResult;
import com.xiaojukeji.know.streaming.km.rebalance.utils.GoalUtils;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceGoal;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceParameter;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceThreshold;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BrokerBalanceState;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Load;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.GoalOptimizer;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.OptimizationOptions;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.OptimizerResult;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils.GoalUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Validate;
import org.slf4j.Logger;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.executor.common;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common;
public class BalanceActionHistory {
//均衡目标

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.executor.common;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common;
public class BalanceDetailed {
private int brokerId;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.executor.common;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common;
public enum BalanceGoal {
// KM传参时使用

View File

@@ -1,6 +1,6 @@
package com.xiaojukeji.know.streaming.km.rebalance.executor.common;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common;
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
import java.util.Map;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.executor.common;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common;
import java.util.List;
import java.util.Properties;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.executor.common;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common;
import java.util.List;

View File

@@ -1,6 +1,6 @@
package com.xiaojukeji.know.streaming.km.rebalance.executor.common;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common;
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
public class BalanceThreshold {
private final Resource _resource;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.executor.common;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common;
public class BrokerBalanceState {
//CPU平均资源

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.executor.common;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common;
public class HostEnv {
//BrokerId

View File

@@ -1,13 +1,13 @@
package com.xiaojukeji.know.streaming.km.rebalance.executor.common;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xiaojukeji.know.streaming.km.rebalance.model.Broker;
import com.xiaojukeji.know.streaming.km.rebalance.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.model.ReplicaPlacementInfo;
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ExecutionProposal;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.OptimizationOptions;
import com.xiaojukeji.know.streaming.km.rebalance.utils.GoalUtils;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Broker;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ReplicaPlacementInfo;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ExecutionProposal;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.OptimizationOptions;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils.GoalUtils;
import org.apache.kafka.common.TopicPartition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.executor.common;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common;
import java.util.List;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.metric;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric;
/**
* @author leewei

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.metric;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric;
/**
* @author leewei

View File

@@ -1,7 +1,7 @@
package com.xiaojukeji.know.streaming.km.rebalance.metric;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric;
import com.xiaojukeji.know.streaming.km.rebalance.model.Load;
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Load;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
import org.apache.kafka.common.TopicPartition;
import java.util.*;

View File

@@ -1,10 +1,10 @@
package com.xiaojukeji.know.streaming.km.rebalance.metric.elasticsearch;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric.elasticsearch;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xiaojukeji.know.streaming.km.rebalance.metric.Metric;
import com.xiaojukeji.know.streaming.km.rebalance.metric.MetricStore;
import com.xiaojukeji.know.streaming.km.rebalance.metric.Metrics;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric.Metric;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric.MetricStore;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric.Metrics;
import org.apache.commons.io.IOUtils;
import org.apache.http.HttpHost;
import org.elasticsearch.client.Request;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.model;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.model;
import org.apache.kafka.common.TopicPartition;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.model;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.model;
import java.util.Arrays;

View File

@@ -1,6 +1,6 @@
package com.xiaojukeji.know.streaming.km.rebalance.model;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.model;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceActionHistory;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceActionHistory;
import org.apache.kafka.common.TopicPartition;
import java.util.*;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.model;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.model;
import java.util.Arrays;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.model;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.model;
import org.apache.kafka.common.TopicPartition;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.model;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.model;
import java.util.*;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.model;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.model;
import org.apache.kafka.common.TopicPartition;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.model;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.model;
import java.util.Objects;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.model;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.model;
/**
* @author leewei

View File

@@ -1,9 +1,9 @@
package com.xiaojukeji.know.streaming.km.rebalance.model;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.model;
import com.xiaojukeji.know.streaming.km.rebalance.metric.MetricStore;
import com.xiaojukeji.know.streaming.km.rebalance.metric.Metrics;
import com.xiaojukeji.know.streaming.km.rebalance.metric.elasticsearch.ElasticsearchMetricStore;
import com.xiaojukeji.know.streaming.km.rebalance.utils.MetadataUtils;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric.MetricStore;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric.Metrics;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric.elasticsearch.ElasticsearchMetricStore;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils.MetadataUtils;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.common.Cluster;
import org.apache.kafka.common.Node;

View File

@@ -0,0 +1,5 @@
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer;
public enum ActionAcceptance {
ACCEPT, REJECT;
}

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.optimizer;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer;
public enum ActionType {
REPLICA_MOVEMENT("REPLICA"),

View File

@@ -1,17 +1,17 @@
package com.xiaojukeji.know.streaming.km.rebalance.optimizer;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer;
import com.xiaojukeji.know.streaming.km.rebalance.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.model.Replica;
import com.xiaojukeji.know.streaming.km.rebalance.model.ReplicaPlacementInfo;
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.goals.Goal;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Replica;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ReplicaPlacementInfo;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.goals.Goal;
import org.apache.commons.lang3.StringUtils;
import org.apache.kafka.common.TopicPartition;
import java.util.*;
import java.util.stream.Collectors;
import static com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionAcceptance.ACCEPT;
import static com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionAcceptance.ACCEPT;
public class AnalyzerUtils {

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.optimizer;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer;
import org.apache.kafka.common.TopicPartition;

View File

@@ -1,6 +1,6 @@
package com.xiaojukeji.know.streaming.km.rebalance.optimizer;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer;
import com.xiaojukeji.know.streaming.km.rebalance.model.ReplicaPlacementInfo;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ReplicaPlacementInfo;
import org.apache.kafka.common.TopicPartition;
import java.util.*;

View File

@@ -1,9 +1,9 @@
package com.xiaojukeji.know.streaming.km.rebalance.optimizer;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.OptimizerResult;
import com.xiaojukeji.know.streaming.km.rebalance.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.model.ReplicaPlacementInfo;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.goals.Goal;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.OptimizerResult;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ReplicaPlacementInfo;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.goals.Goal;
import org.apache.kafka.common.TopicPartition;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@@ -1,7 +1,7 @@
package com.xiaojukeji.know.streaming.km.rebalance.optimizer;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceParameter;
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceParameter;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
import java.util.*;

View File

@@ -1,9 +1,9 @@
package com.xiaojukeji.know.streaming.km.rebalance.optimizer.goals;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.goals;
import com.xiaojukeji.know.streaming.km.rebalance.model.Broker;
import com.xiaojukeji.know.streaming.km.rebalance.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.model.Replica;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.*;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Broker;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Replica;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.*;
import java.util.*;
import java.util.stream.Collectors;

View File

@@ -1,10 +1,10 @@
package com.xiaojukeji.know.streaming.km.rebalance.optimizer.goals;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.goals;
import com.xiaojukeji.know.streaming.km.rebalance.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionAcceptance;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionType;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.BalancingAction;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionAcceptance;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionType;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.BalancingAction;
/**
* @author leewei

View File

@@ -0,0 +1,17 @@
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.goals;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionAcceptance;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.BalancingAction;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.OptimizationOptions;
import java.util.Set;
public interface Goal {
void optimize(ClusterModel clusterModel, Set<Goal> optimizedGoals, OptimizationOptions optimizationOptions);
String name();
ActionAcceptance actionAcceptance(BalancingAction action, ClusterModel clusterModel);
}

View File

@@ -1,10 +1,10 @@
package com.xiaojukeji.know.streaming.km.rebalance.optimizer.goals;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.goals;
import com.xiaojukeji.know.streaming.km.rebalance.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionAcceptance;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionType;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.BalancingAction;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionAcceptance;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionType;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.BalancingAction;
/**
* @author leewei

View File

@@ -1,6 +1,6 @@
package com.xiaojukeji.know.streaming.km.rebalance.optimizer.goals;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.goals;
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
/**
* @author leewei

View File

@@ -1,10 +1,10 @@
package com.xiaojukeji.know.streaming.km.rebalance.optimizer.goals;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.goals;
import com.xiaojukeji.know.streaming.km.rebalance.model.*;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionAcceptance;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionType;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.BalancingAction;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.OptimizationOptions;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.*;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionAcceptance;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionType;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.BalancingAction;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.OptimizationOptions;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@@ -1,22 +1,22 @@
package com.xiaojukeji.know.streaming.km.rebalance.optimizer.goals;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.goals;
import com.xiaojukeji.know.streaming.km.rebalance.model.Broker;
import com.xiaojukeji.know.streaming.km.rebalance.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.model.Replica;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionAcceptance;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.BalancingAction;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.OptimizationOptions;
import com.xiaojukeji.know.streaming.km.rebalance.utils.GoalUtils;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Broker;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Replica;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionAcceptance;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.BalancingAction;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.OptimizationOptions;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils.GoalUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.*;
import java.util.stream.Collectors;
import static com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionAcceptance.ACCEPT;
import static com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionAcceptance.REJECT;
import static com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionType.REPLICA_MOVEMENT;
import static com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionType.LEADERSHIP_MOVEMENT;
import static com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionAcceptance.ACCEPT;
import static com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionAcceptance.REJECT;
import static com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionType.REPLICA_MOVEMENT;
import static com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionType.LEADERSHIP_MOVEMENT;
public class TopicLeadersDistributionGoal extends AbstractGoal {
private static final Logger logger = LoggerFactory.getLogger(TopicLeadersDistributionGoal.class);

View File

@@ -1,13 +1,13 @@
package com.xiaojukeji.know.streaming.km.rebalance.optimizer.goals;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.goals;
import com.xiaojukeji.know.streaming.km.rebalance.model.Broker;
import com.xiaojukeji.know.streaming.km.rebalance.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.model.Replica;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionAcceptance;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionType;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.BalancingAction;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.OptimizationOptions;
import com.xiaojukeji.know.streaming.km.rebalance.utils.GoalUtils;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Broker;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Replica;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionAcceptance;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionType;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.BalancingAction;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.OptimizationOptions;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils.GoalUtils;
import java.util.*;
import java.util.stream.Collectors;

View File

@@ -0,0 +1,7 @@
package com.xiaojukeji.know.streaming.km.rebalance.algorithm;
/**
*
* Re-Balance算法部分代码
*
* */

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.utils;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils;
import joptsimple.OptionParser;

View File

@@ -1,11 +1,11 @@
package com.xiaojukeji.know.streaming.km.rebalance.utils;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceGoal;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceParameter;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceThreshold;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.HostEnv;
import com.xiaojukeji.know.streaming.km.rebalance.model.*;
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.AnalyzerUtils;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceGoal;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceParameter;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceThreshold;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.HostEnv;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.*;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.AnalyzerUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.rebalance.utils;
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils;
import org.apache.kafka.clients.*;
import org.apache.kafka.clients.consumer.internals.NoAvailableBrokersException;

View File

@@ -0,0 +1,35 @@
package com.xiaojukeji.know.streaming.km.rebalance.common;
public class BalanceMetricConstant {
public static final String CLUSTER_METRIC_LOAD_RE_BALANCE_ENABLE = "LoadReBalanceEnable";
public static final String CLUSTER_METRIC_LOAD_RE_BALANCE_CPU = "LoadReBalanceCpu";
public static final String CLUSTER_METRIC_LOAD_RE_BALANCE_NW_IN = "LoadReBalanceNwIn";
public static final String CLUSTER_METRIC_LOAD_RE_BALANCE_NW_OUT = "LoadReBalanceNwOut";
public static final String CLUSTER_METRIC_LOAD_RE_BALANCE_DISK = "LoadReBalanceDisk";
// 集群维度-均衡相关
// itemList.add( buildAllVersionsItem()
// .name(CLUSTER_METRIC_LOAD_RE_BALANCE_ENABLE).unit("是/否").desc("是否开启均衡, 10否").category(CATEGORY_CLUSTER)
// .extend( buildMethodExtend( CLUSTER_METHOD_GET_CLUSTER_LOAD_RE_BALANCE_INFO )));
//
// itemList.add( buildAllVersionsItem()
// .name(CLUSTER_METRIC_LOAD_RE_BALANCE_CPU).unit("是/否").desc("CPU是否均衡, 10否").category(CATEGORY_CLUSTER)
// .extend( buildMethodExtend( CLUSTER_METHOD_GET_CLUSTER_LOAD_RE_BALANCE_INFO )));
//
// itemList.add( buildAllVersionsItem()
// .name(CLUSTER_METRIC_LOAD_RE_BALANCE_NW_IN).unit("是/否").desc("BytesIn是否均衡, 10否").category(CATEGORY_CLUSTER)
// .extend( buildMethodExtend( CLUSTER_METHOD_GET_CLUSTER_LOAD_RE_BALANCE_INFO )));
//
// itemList.add( buildAllVersionsItem()
// .name(CLUSTER_METRIC_LOAD_RE_BALANCE_NW_OUT).unit("是/否").desc("BytesOut是否均衡, 10否").category(CATEGORY_CLUSTER)
// .extend( buildMethodExtend( CLUSTER_METHOD_GET_CLUSTER_LOAD_RE_BALANCE_INFO )));
//
// itemList.add( buildAllVersionsItem()
// .name(CLUSTER_METRIC_LOAD_RE_BALANCE_DISK).unit("是/否").desc("Disk是否均衡, 10否").category(CATEGORY_CLUSTER)
// .extend( buildMethodExtend( CLUSTER_METHOD_GET_CLUSTER_LOAD_RE_BALANCE_INFO )));
}

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.dto;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.dto;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import io.swagger.annotations.ApiModelProperty;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.dto;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.dto;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.PaginationBaseDTO;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.dto;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.dto;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.dto;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.dto;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import lombok.AllArgsConstructor;

View File

@@ -1,8 +1,8 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@@ -27,7 +27,7 @@ public class ClusterBalanceItemState {
/**
* 子项是否均衡:key: disk,bytesIn,bytesOut,cpu ; value:true:已均衡false:未均衡
* @see com.xiaojukeji.know.streaming.km.rebalance.model.Resource
* @see com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource
*/
private Map<String, Boolean> itemState;

View File

@@ -1,7 +1,7 @@
/*
* 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.enterprise.rebalance.bean.entity.job;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import com.xiaojukeji.know.streaming.km.common.bean.entity.BaseEntity;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import lombok.Data;

View File

@@ -1,7 +1,7 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.detail.ClusterBalanceDetailDataGroupByTopic;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.detail.ClusterBalanceDetailDataGroupByTopic;
import lombok.Data;
import java.util.Date;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import lombok.Data;

View File

@@ -1,8 +1,8 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.content;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.content;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import com.xiaojukeji.know.streaming.km.common.bean.entity.job.content.BaseJobCreateContent;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.dto.ClusterBalanceIntervalDTO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.dto.ClusterBalanceIntervalDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.detail;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.detail;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.detail;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.detail;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.detail;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.detail;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.detail;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.detail;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import io.swagger.annotations.ApiModel;

View File

@@ -1,7 +1,7 @@
/*
* 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.enterprise.rebalance.bean.po;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.po;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;

View File

@@ -1,7 +1,7 @@
/*
* 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.enterprise.rebalance.bean.po;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.po;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xiaojukeji.know.streaming.km.common.bean.po.BasePO;

View File

@@ -1,7 +1,7 @@
/*
* 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.enterprise.rebalance.bean.po;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.po;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xiaojukeji.know.streaming.km.common.bean.po.BasePO;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.vo;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.vo;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import io.swagger.annotations.ApiModel;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.vo;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.vo;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import io.swagger.annotations.ApiModel;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.vo;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.vo;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import io.swagger.annotations.ApiModelProperty;

View File

@@ -1,10 +1,10 @@
/*
* 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.enterprise.rebalance.bean.vo;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.vo;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.ClusterBalanceInterval;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.ClusterBalanceInterval;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.vo;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.vo;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import io.swagger.annotations.ApiModel;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.vo;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.vo;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import io.swagger.annotations.ApiModel;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.vo;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.vo;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import io.swagger.annotations.ApiModel;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.vo;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.vo;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import io.swagger.annotations.ApiModel;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.vo;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.vo;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.vo;
package com.xiaojukeji.know.streaming.km.rebalance.common.bean.vo;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import io.swagger.annotations.ApiModel;

View File

@@ -1,42 +1,42 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.converter;
package com.xiaojukeji.know.streaming.km.rebalance.common.converter;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.dto.ClusterBalanceIntervalDTO;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.dto.ClusterBalancePreviewDTO;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.dto.ClusterBalanceStrategyDTO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.dto.ClusterBalanceIntervalDTO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.dto.ClusterBalancePreviewDTO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.dto.ClusterBalanceStrategyDTO;
import com.xiaojukeji.know.streaming.km.common.bean.entity.broker.Broker;
import com.xiaojukeji.know.streaming.km.common.bean.entity.broker.BrokerSpec;
import com.xiaojukeji.know.streaming.km.common.bean.entity.cluster.ClusterPhy;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.ClusterBalanceInterval;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.ClusterBalanceReassignExtendData;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.detail.ClusterBalancePlanDetail;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.content.JobClusterBalanceContent;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.ClusterBalanceInterval;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.ClusterBalanceReassignExtendData;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.detail.ClusterBalancePlanDetail;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.content.JobClusterBalanceContent;
import com.xiaojukeji.know.streaming.km.common.bean.entity.topic.Topic;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.po.ClusterBalanceJobConfigPO;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.po.ClusterBalanceJobPO;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.po.ClusterBalanceReassignPO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.po.ClusterBalanceJobConfigPO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.po.ClusterBalanceJobPO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.po.ClusterBalanceReassignPO;
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.vo.*;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.enums.ClusterBalanceStateEnum;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.enums.ClusterBalanceTypeEnum;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.vo.*;
import com.xiaojukeji.know.streaming.km.rebalance.common.enums.ClusterBalanceStateEnum;
import com.xiaojukeji.know.streaming.km.rebalance.common.enums.ClusterBalanceTypeEnum;
import com.xiaojukeji.know.streaming.km.common.enums.job.JobStatusEnum;
import com.xiaojukeji.know.streaming.km.common.enums.job.JobTypeEnum;
import com.xiaojukeji.know.streaming.km.common.utils.CommonUtils;
import com.xiaojukeji.know.streaming.km.common.utils.ConvertUtil;
import com.xiaojukeji.know.streaming.km.common.utils.ValidateUtils;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.*;
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.*;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
import org.apache.kafka.clients.CommonClientConfigs;
import java.util.*;
import java.util.function.Function;
import java.util.stream.Collectors;
import static com.xiaojukeji.know.streaming.km.common.constant.ESConstant.*;
@EnterpriseLoadReBalance
public class ClusterBalanceConverter {
public final static String PARTITION_INDEX = "ks_kafka_partition_metric";
private ClusterBalanceConverter() {
}

View File

@@ -1,17 +1,17 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.converter;
package com.xiaojukeji.know.streaming.km.rebalance.common.converter;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.ClusterBalanceReassignDetail;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.ClusterBalanceReassignExtendData;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.detail.ClusterBalanceDetailDataGroupByPartition;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.detail.ClusterBalanceDetailDataGroupByTopic;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.ClusterBalanceReassignDetail;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.ClusterBalanceReassignExtendData;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.detail.ClusterBalanceDetailDataGroupByPartition;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.detail.ClusterBalanceDetailDataGroupByTopic;
import com.xiaojukeji.know.streaming.km.common.bean.entity.job.Job;
import com.xiaojukeji.know.streaming.km.common.bean.entity.job.JobStatus;
import com.xiaojukeji.know.streaming.km.common.bean.entity.job.detail.JobDetail;
import com.xiaojukeji.know.streaming.km.common.bean.entity.job.detail.SubJobReplicaMoveDetail;
import com.xiaojukeji.know.streaming.km.common.bean.entity.reassign.strategy.ReplaceReassignSub;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.po.ClusterBalanceJobPO;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.po.ClusterBalanceReassignPO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.po.ClusterBalanceJobPO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.po.ClusterBalanceReassignPO;
import com.xiaojukeji.know.streaming.km.common.bean.vo.job.sub.SubJobClusterBalanceReplicaMoveVO;
import com.xiaojukeji.know.streaming.km.common.bean.vo.job.sub.SubJobPartitionDetailVO;
import com.xiaojukeji.know.streaming.km.common.bean.vo.job.sub.SubJobVO;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.enums;
package com.xiaojukeji.know.streaming.km.rebalance.common.enums;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import lombok.Getter;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.enums;
package com.xiaojukeji.know.streaming.km.rebalance.common.enums;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import lombok.Getter;

View File

@@ -4,6 +4,6 @@
* 当前 package 模块是依据产品的要求依赖 km-extends/km-rebalance 模块构建产品实际使用功能
*/
@EnterpriseLoadReBalance
package com.xiaojukeji.know.streaming.km.core.enterprise.rebalance;
package com.xiaojukeji.know.streaming.km.rebalance.common;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;

View File

@@ -1,4 +1,4 @@
package com.xiaojukeji.know.streaming.km.core.enterprise.rebalance.job;
package com.xiaojukeji.know.streaming.km.rebalance.core.job;
import com.didiglobal.logi.log.ILog;
import com.didiglobal.logi.log.LogFactory;
@@ -6,41 +6,41 @@ import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.Enterprise
import com.xiaojukeji.know.streaming.km.common.bean.entity.broker.Broker;
import com.xiaojukeji.know.streaming.km.common.bean.entity.broker.BrokerSpec;
import com.xiaojukeji.know.streaming.km.common.bean.entity.cluster.ClusterPhy;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.ClusterBalanceReassignDetail;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.detail.ClusterBalanceDetailDataGroupByTopic;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.ClusterBalanceReassignDetail;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.detail.ClusterBalanceDetailDataGroupByTopic;
import com.xiaojukeji.know.streaming.km.common.bean.entity.job.Job;
import com.xiaojukeji.know.streaming.km.common.bean.entity.job.JobStatus;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.content.JobClusterBalanceContent;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.content.JobClusterBalanceContent;
import com.xiaojukeji.know.streaming.km.common.bean.entity.job.detail.JobDetail;
import com.xiaojukeji.know.streaming.km.common.bean.entity.job.detail.JobModifyDetail;
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.Result;
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.ResultStatus;
import com.xiaojukeji.know.streaming.km.common.bean.entity.topic.Topic;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.po.ClusterBalanceJobPO;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.po.ClusterBalanceReassignPO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.po.ClusterBalanceJobPO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.po.ClusterBalanceReassignPO;
import com.xiaojukeji.know.streaming.km.common.bean.po.job.JobPO;
import com.xiaojukeji.know.streaming.km.common.bean.vo.job.sub.SubJobPartitionDetailVO;
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
import com.xiaojukeji.know.streaming.km.common.constant.JobConstant;
import com.xiaojukeji.know.streaming.km.common.constant.MsgConstant;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.converter.ClusterBalanceConverter;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.converter.ClusterBalanceReassignConverter;
import com.xiaojukeji.know.streaming.km.rebalance.common.converter.ClusterBalanceConverter;
import com.xiaojukeji.know.streaming.km.rebalance.common.converter.ClusterBalanceReassignConverter;
import com.xiaojukeji.know.streaming.km.common.enums.job.JobActionEnum;
import com.xiaojukeji.know.streaming.km.common.enums.job.JobTypeEnum;
import com.xiaojukeji.know.streaming.km.common.utils.ConvertUtil;
import com.xiaojukeji.know.streaming.km.core.service.broker.BrokerService;
import com.xiaojukeji.know.streaming.km.core.service.broker.BrokerSpecService;
import com.xiaojukeji.know.streaming.km.core.service.cluster.ClusterPhyService;
import com.xiaojukeji.know.streaming.km.core.enterprise.rebalance.service.ClusterBalanceJobService;
import com.xiaojukeji.know.streaming.km.core.enterprise.rebalance.service.ClusterBalanceReassignService;
import com.xiaojukeji.know.streaming.km.core.service.config.ConfigUtils;
import com.xiaojukeji.know.streaming.km.core.service.job.JobHandler;
import com.xiaojukeji.know.streaming.km.core.service.topic.TopicService;
import com.xiaojukeji.know.streaming.km.persistence.mysql.job.JobDAO;
import com.xiaojukeji.know.streaming.km.persistence.kafka.zookeeper.service.KafkaZKDAO;
import com.xiaojukeji.know.streaming.km.rebalance.executor.ExecutionRebalance;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceParameter;
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.OptimizerResult;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.ExecutionRebalance;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceParameter;
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.OptimizerResult;
import com.xiaojukeji.know.streaming.km.rebalance.core.service.ClusterBalanceJobService;
import com.xiaojukeji.know.streaming.km.rebalance.core.service.ClusterBalanceReassignService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
@@ -143,8 +143,7 @@ public class ClusterBalanceJobHandler implements JobHandler {
ClusterBalanceJobPO clusterBalanceJobPO = ClusterBalanceConverter.convert2ClusterBalanceJobPO(job.getId(), dto, optimizerResult, brokers, operator, generateReassignmentJson);
Result<Void> result = clusterBalanceJobService.createClusterBalanceJob(clusterBalanceJobPO, operator);
if (result.failed()){
logger.error("method=clusterBalanceJobHandler.submit||job={}||errMsg={}!",
job, result.getMessage());
logger.error("method=submit||job={}||errMsg={}!", job, result.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return result;
}
@@ -152,8 +151,7 @@ public class ClusterBalanceJobHandler implements JobHandler {
//生成迁移明细
Result<Void> cbrResult = clusterBalanceReassignService.addBatchBalanceReassign(reassignPOS);
if (cbrResult.failed()){
logger.error("method=clusterBalanceJobHandler.submit||job={}||errMsg={}!",
job, cbrResult.getMessage());
logger.error("method=submit||job={}||errMsg={}!", job, cbrResult.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return cbrResult;
}
@@ -162,14 +160,13 @@ public class ClusterBalanceJobHandler implements JobHandler {
job.setTarget(optimizerResult.resultOverview().getMoveTopics());
int count = jobDAO.updateById(ConvertUtil.obj2Obj(job, JobPO.class));
if (count < 0){
logger.error("method=clusterBalanceJobHandler.submit||job={}||errMsg={}!",
job, result.getMessage());
logger.error("method=submit||job={}||errMsg={}!", job, result.getMessage());
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return Result.buildFrom(ResultStatus.MYSQL_OPERATE_FAILED);
}
}catch (Exception e){
logger.error("method=clusterBalanceJobHandler.submit||job={}||errMsg=exception", job, e);
logger.error("method=submit||job={}||errMsg=exception", job, e);
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
return Result.buildFailure(e.getMessage());
}

View File

@@ -4,6 +4,6 @@
* 当前 package 模块是依据产品的要求依赖 km-extends/km-rebalance 模块构建产品实际使用功能
*/
@EnterpriseLoadReBalance
package com.xiaojukeji.know.streaming.km.common.enterprise.rebalance;
package com.xiaojukeji.know.streaming.km.rebalance.core;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;

View File

@@ -1,8 +1,8 @@
package com.xiaojukeji.know.streaming.km.core.enterprise.rebalance.service;
package com.xiaojukeji.know.streaming.km.rebalance.core.service;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.Result;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.po.ClusterBalanceJobConfigPO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.po.ClusterBalanceJobConfigPO;
@EnterpriseLoadReBalance
public interface ClusterBalanceJobConfigService {

View File

@@ -1,12 +1,12 @@
package com.xiaojukeji.know.streaming.km.core.enterprise.rebalance.service;
package com.xiaojukeji.know.streaming.km.rebalance.core.service;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.PaginationBaseDTO;
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.PaginationResult;
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.Result;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.po.ClusterBalanceJobPO;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.po.ClusterBalanceReassignPO;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.vo.ClusterBalanceHistoryVO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.po.ClusterBalanceJobPO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.po.ClusterBalanceReassignPO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.vo.ClusterBalanceHistoryVO;
import java.util.List;
import java.util.Map;

View File

@@ -1,10 +1,10 @@
package com.xiaojukeji.know.streaming.km.core.enterprise.rebalance.service;
package com.xiaojukeji.know.streaming.km.rebalance.core.service;
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.ClusterBalanceReassignDetail;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.ClusterBalanceReassignDetail;
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.Result;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.po.ClusterBalanceJobPO;
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.po.ClusterBalanceReassignPO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.po.ClusterBalanceJobPO;
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.po.ClusterBalanceReassignPO;
import java.util.List;

Some files were not shown because too many files have changed in this diff Show More