mirror of
https://github.com/didi/KnowStreaming.git
synced 2025-12-24 03:42:07 +08:00
合并3.3.0企业版改动
This commit is contained in:
@@ -29,6 +29,11 @@
|
|||||||
<artifactId>km-core</artifactId>
|
<artifactId>km-core</artifactId>
|
||||||
<version>${project.parent.version}</version>
|
<version>${project.parent.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.xiaojukeji.kafka</groupId>
|
||||||
|
<artifactId>km-rebalance</artifactId>
|
||||||
|
<version>${project.parent.version}</version>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- spring -->
|
<!-- spring -->
|
||||||
<dependency>
|
<dependency>
|
||||||
|
|||||||
@@ -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.ClusterPhyBaseVO;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.vo.cluster.ClusterPhyDashboardVO;
|
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.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.converter.ClusterVOConverter;
|
||||||
import com.xiaojukeji.know.streaming.km.common.enums.health.HealthStateEnum;
|
import com.xiaojukeji.know.streaming.km.common.enums.health.HealthStateEnum;
|
||||||
import com.xiaojukeji.know.streaming.km.common.utils.ConvertUtil;
|
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.ClusterMetricService;
|
||||||
import com.xiaojukeji.know.streaming.km.core.service.cluster.ClusterPhyService;
|
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.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.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
@@ -40,6 +45,9 @@ public class MultiClusterPhyManagerImpl implements MultiClusterPhyManager {
|
|||||||
@Autowired
|
@Autowired
|
||||||
private ClusterMetricService clusterMetricService;
|
private ClusterMetricService clusterMetricService;
|
||||||
|
|
||||||
|
@Autowired
|
||||||
|
private ClusterBalanceService clusterBalanceService;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ClusterPhysState getClusterPhysState() {
|
public ClusterPhysState getClusterPhysState() {
|
||||||
List<ClusterPhy> clusterPhyList = clusterPhyService.listAllClusters();
|
List<ClusterPhy> clusterPhyList = clusterPhyService.listAllClusters();
|
||||||
@@ -153,6 +161,11 @@ public class MultiClusterPhyManagerImpl implements MultiClusterPhyManager {
|
|||||||
ClusterMetrics clusterMetrics = clusterMetricService.getLatestMetricsFromCache(vo.getId());
|
ClusterMetrics clusterMetrics = clusterMetricService.getLatestMetricsFromCache(vo.getId());
|
||||||
clusterMetrics.getMetrics().putIfAbsent(ClusterMetricVersionItems.CLUSTER_METRIC_HEALTH_STATE, (float) HealthStateEnum.UNKNOWN.getDimension());
|
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);
|
metricsList.add(clusterMetrics);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -174,4 +187,21 @@ public class MultiClusterPhyManagerImpl implements MultiClusterPhyManager {
|
|||||||
dto.setClusterPhyIds(clusterIdList);
|
dto.setClusterPhyIds(clusterIdList);
|
||||||
return dto;
|
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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,12 +22,6 @@
|
|||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency>
|
|
||||||
<groupId>com.xiaojukeji.kafka</groupId>
|
|
||||||
<artifactId>km-rebalance</artifactId>
|
|
||||||
<version>${project.parent.version}</version>
|
|
||||||
</dependency>
|
|
||||||
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework</groupId>
|
<groupId>org.springframework</groupId>
|
||||||
<artifactId>spring-web</artifactId>
|
<artifactId>spring-web</artifactId>
|
||||||
|
|||||||
@@ -36,8 +36,6 @@ public class ESConstant {
|
|||||||
|
|
||||||
public static final Integer DEFAULT_RETRY_TIME = 3;
|
public static final Integer DEFAULT_RETRY_TIME = 3;
|
||||||
|
|
||||||
public static final String PARTITION_INDEX = "ks_kafka_partition_metric";
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取Topic-Latest指标时,单次允许的Topic数
|
* 获取Topic-Latest指标时,单次允许的Topic数
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,2 +1,2 @@
|
|||||||
BUSINESS_VERSION='false'
|
BUSINESS_VERSION='true'
|
||||||
PUBLIC_PATH=''
|
PUBLIC_PATH=''
|
||||||
|
|||||||
@@ -31,12 +31,7 @@ export const { Provider, Consumer } = React.createContext('zh');
|
|||||||
|
|
||||||
const defaultLanguage = 'zh';
|
const defaultLanguage = 'zh';
|
||||||
|
|
||||||
const AppContent = (props: {
|
const AppContent = (props: any) => {
|
||||||
getLicenseInfo?: (cbk: (msg: string) => void) => void | undefined;
|
|
||||||
licenseEventBus?: Record<string, any> | undefined;
|
|
||||||
}) => {
|
|
||||||
const { getLicenseInfo, licenseEventBus } = props;
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="config-system">
|
<div className="config-system">
|
||||||
<DProLayout.Sider prefixCls={'dcd-two-columns'} width={200} theme={'light'} systemKey={systemKey} menuConf={leftMenus} />
|
<DProLayout.Sider prefixCls={'dcd-two-columns'} width={200} theme={'light'} systemKey={systemKey} menuConf={leftMenus} />
|
||||||
@@ -44,7 +39,7 @@ const AppContent = (props: {
|
|||||||
<RouteGuard
|
<RouteGuard
|
||||||
routeList={pageRoutes}
|
routeList={pageRoutes}
|
||||||
beforeEach={() => {
|
beforeEach={() => {
|
||||||
getLicenseInfo?.((msg) => licenseEventBus?.emit('licenseError', msg));
|
// getLicenseInfo?.((msg) => licenseEventBus?.emit('licenseError', msg));
|
||||||
return Promise.resolve(true);
|
return Promise.resolve(true);
|
||||||
}}
|
}}
|
||||||
noMatch={() => <Redirect to="/404" />}
|
noMatch={() => <Redirect to="/404" />}
|
||||||
@@ -55,7 +50,6 @@ const AppContent = (props: {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const App = (props: any) => {
|
const App = (props: any) => {
|
||||||
const { getLicenseInfo, licenseEventBus } = props;
|
|
||||||
const intlMessages = _.get(localeMap[defaultLanguage], 'intlMessages', intlZhCN);
|
const intlMessages = _.get(localeMap[defaultLanguage], 'intlMessages', intlZhCN);
|
||||||
const locale = _.get(localeMap[defaultLanguage], 'intl', 'zh-CN');
|
const locale = _.get(localeMap[defaultLanguage], 'intl', 'zh-CN');
|
||||||
const antdLocale = _.get(localeMap[defaultLanguage], 'dantd', dantdZhCN);
|
const antdLocale = _.get(localeMap[defaultLanguage], 'dantd', dantdZhCN);
|
||||||
@@ -65,7 +59,7 @@ const App = (props: any) => {
|
|||||||
<AppContainer intlProvider={{ locale, messages: intlMessages }} antdProvider={{ locale: antdLocale }}>
|
<AppContainer intlProvider={{ locale, messages: intlMessages }} antdProvider={{ locale: antdLocale }}>
|
||||||
<Router basename={systemKey}>
|
<Router basename={systemKey}>
|
||||||
<Switch>
|
<Switch>
|
||||||
<AppContent getLicenseInfo={getLicenseInfo} licenseEventBus={licenseEventBus} />
|
<AppContent />
|
||||||
</Switch>
|
</Switch>
|
||||||
</Router>
|
</Router>
|
||||||
</AppContainer>
|
</AppContainer>
|
||||||
|
|||||||
@@ -72,51 +72,12 @@ const logout = () => {
|
|||||||
localStorage.removeItem('userInfo');
|
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 AppContent = (props: { setlanguage: (language: string) => void }) => {
|
||||||
const { pathname } = useLocation();
|
const { pathname } = useLocation();
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
const userInfo = localStorage.getItem('userInfo');
|
const userInfo = localStorage.getItem('userInfo');
|
||||||
const [curActiveAppName, setCurActiveAppName] = useState('');
|
const [curActiveAppName, setCurActiveAppName] = useState('');
|
||||||
const [versionInfo, setVersionInfo] = useState<VersionInfo>();
|
const [versionInfo, setVersionInfo] = useState<VersionInfo>();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
if (pathname.startsWith('/config')) {
|
if (pathname.startsWith('/config')) {
|
||||||
setCurActiveAppName('config');
|
setCurActiveAppName('config');
|
||||||
@@ -179,7 +140,7 @@ const AppContent = (props: { setlanguage: (language: string) => void }) => {
|
|||||||
}}
|
}}
|
||||||
onMount={(customProps: any) => {
|
onMount={(customProps: any) => {
|
||||||
judgePage404();
|
judgePage404();
|
||||||
registerApps(systemsConfig, { ...customProps, getLicenseInfo, licenseEventBus }, () => {
|
registerApps(systemsConfig, { ...customProps }, () => {
|
||||||
// postMessage();
|
// postMessage();
|
||||||
});
|
});
|
||||||
}}
|
}}
|
||||||
@@ -200,7 +161,6 @@ const AppContent = (props: { setlanguage: (language: string) => void }) => {
|
|||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
</Switch>
|
</Switch>
|
||||||
<LicenseLimitModal />
|
|
||||||
</>
|
</>
|
||||||
</DProLayout.Container>
|
</DProLayout.Container>
|
||||||
);
|
);
|
||||||
@@ -234,7 +194,6 @@ export default function App(): JSX.Element {
|
|||||||
<BrowserRouter basename="">
|
<BrowserRouter basename="">
|
||||||
<Switch>
|
<Switch>
|
||||||
<Route path="/login" component={Login} />
|
<Route path="/login" component={Login} />
|
||||||
<Route path="/no-license" exact component={NoLicense} />
|
|
||||||
<Route render={() => <AppContent setlanguage={setlanguage} />} />
|
<Route render={() => <AppContent setlanguage={setlanguage} />} />
|
||||||
</Switch>
|
</Switch>
|
||||||
</BrowserRouter>
|
</BrowserRouter>
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ interface PropsType {
|
|||||||
};
|
};
|
||||||
onChange: (options: KsHeaderOptions) => void;
|
onChange: (options: KsHeaderOptions) => void;
|
||||||
openMetricFilter: () => void;
|
openMetricFilter: () => void;
|
||||||
|
setScreenType?: any;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface ScopeData {
|
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 = ({
|
const MetricOperateBar = ({
|
||||||
nodeSelect = {},
|
nodeSelect = {},
|
||||||
hideNodeScope = false,
|
hideNodeScope = false,
|
||||||
hideGridSelect = false,
|
hideGridSelect = false,
|
||||||
onChange: onChangeCallback,
|
onChange: onChangeCallback,
|
||||||
openMetricFilter,
|
openMetricFilter,
|
||||||
|
setScreenType,
|
||||||
}: PropsType): JSX.Element => {
|
}: PropsType): JSX.Element => {
|
||||||
const [gridNum, setGridNum] = useState<number>(GRID_SIZE_OPTIONS[1].value);
|
const [gridNum, setGridNum] = useState<number>(GRID_SIZE_OPTIONS[1].value);
|
||||||
const [rangeTime, setRangeTime] = useState<[number, number]>(() => {
|
const [rangeTime, setRangeTime] = useState<[number, number]>(() => {
|
||||||
@@ -139,6 +157,17 @@ const MetricOperateBar = ({
|
|||||||
<DRangeTime timeChange={timeChange} rangeTimeArr={rangeTime} />
|
<DRangeTime timeChange={timeChange} rangeTimeArr={rangeTime} />
|
||||||
</div>
|
</div>
|
||||||
<div className="header-right">
|
<div className="header-right">
|
||||||
|
{/* connect 单独逻辑 */}
|
||||||
|
{setScreenType && (
|
||||||
|
<Select
|
||||||
|
style={{ width: 120, marginRight: 10 }}
|
||||||
|
defaultValue="all"
|
||||||
|
options={CONNECT_OPTIONS}
|
||||||
|
onChange={(e) => {
|
||||||
|
setScreenType(e);
|
||||||
|
}}
|
||||||
|
/>
|
||||||
|
)}
|
||||||
{/* 节点范围 */}
|
{/* 节点范围 */}
|
||||||
{!hideNodeScope && (
|
{!hideNodeScope && (
|
||||||
<NodeSelect name={nodeSelect.name || ''} onChange={nodeScopeChange}>
|
<NodeSelect name={nodeSelect.name || ''} onChange={nodeScopeChange}>
|
||||||
|
|||||||
@@ -72,7 +72,7 @@ const ChartList = (props: ChartListProps) => {
|
|||||||
const { metricName, metricType, metricUnit, metricLines, showLegend } = data;
|
const { metricName, metricType, metricUnit, metricLines, showLegend } = data;
|
||||||
|
|
||||||
return (
|
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">
|
<div className="dashboard-drag-item-box-title">
|
||||||
<Tooltip
|
<Tooltip
|
||||||
placement="topLeft"
|
placement="topLeft"
|
||||||
|
|||||||
@@ -252,6 +252,7 @@ const ClusterList = (props: { searchParams: SearchParams; showAccessCluster: any
|
|||||||
const {
|
const {
|
||||||
Brokers: brokers,
|
Brokers: brokers,
|
||||||
Zookeepers: zks,
|
Zookeepers: zks,
|
||||||
|
// ConnectionsCount: connect,
|
||||||
HealthCheckPassed: healthCheckPassed,
|
HealthCheckPassed: healthCheckPassed,
|
||||||
HealthCheckTotal: healthCheckTotal,
|
HealthCheckTotal: healthCheckTotal,
|
||||||
HealthState: healthState,
|
HealthState: healthState,
|
||||||
@@ -352,6 +353,18 @@ const ClusterList = (props: { searchParams: SearchParams; showAccessCluster: any
|
|||||||
<div className="indicator-left-item-value">{zookeepersAvailable === -1 ? '-' : zks}</div>
|
<div className="indicator-left-item-value">{zookeepersAvailable === -1 ? '-' : zks}</div>
|
||||||
</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>
|
||||||
<div className="indicator-right">
|
<div className="indicator-right">
|
||||||
{metricPoints.map((row, index) => {
|
{metricPoints.map((row, index) => {
|
||||||
|
|||||||
@@ -61,7 +61,6 @@ const LayoutContainer = () => {
|
|||||||
// 路由前置守卫
|
// 路由前置守卫
|
||||||
const routeBeforeEach = useCallback(
|
const routeBeforeEach = useCallback(
|
||||||
(path: string, permissionNode: string | number) => {
|
(path: string, permissionNode: string | number) => {
|
||||||
getLicenseInfo((msg) => licenseEventBus.emit('licenseError', msg));
|
|
||||||
// 判断进入页面的前置条件是否满足,如果不满足,则展示加载状态
|
// 判断进入页面的前置条件是否满足,如果不满足,则展示加载状态
|
||||||
const isClusterNotExist = path.includes(':clusterId') && !global.clusterInfo;
|
const isClusterNotExist = path.includes(':clusterId') && !global.clusterInfo;
|
||||||
const isNotLoadedPermissions = typeof global.hasPermission !== 'function';
|
const isNotLoadedPermissions = typeof global.hasPermission !== 'function';
|
||||||
|
|||||||
@@ -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.ILog;
|
||||||
import com.didiglobal.logi.log.LogFactory;
|
import com.didiglobal.logi.log.LogFactory;
|
||||||
import com.google.common.collect.Table;
|
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.MetricDTO;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.metrices.MetricsClusterPhyDTO;
|
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.broker.Broker;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.cluster.ClusterPhy;
|
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.kafkacontroller.KafkaController;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.metrics.BrokerMetrics;
|
import com.xiaojukeji.know.streaming.km.common.bean.entity.metrics.BrokerMetrics;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.metrics.ClusterMetrics;
|
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.BrokerMetricService;
|
||||||
import com.xiaojukeji.know.streaming.km.core.service.broker.BrokerService;
|
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.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.group.GroupService;
|
||||||
import com.xiaojukeji.know.streaming.km.core.service.health.state.HealthStateService;
|
import com.xiaojukeji.know.streaming.km.core.service.health.state.HealthStateService;
|
||||||
import com.xiaojukeji.know.streaming.km.core.service.job.JobService;
|
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.es.dao.ClusterMetricESDAO;
|
||||||
import com.xiaojukeji.know.streaming.km.persistence.kafka.KafkaAdminZKClient;
|
import com.xiaojukeji.know.streaming.km.persistence.kafka.KafkaAdminZKClient;
|
||||||
import com.xiaojukeji.know.streaming.km.persistence.kafka.KafkaJMXClient;
|
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.TopicPartition;
|
||||||
import org.apache.kafka.common.resource.ResourceType;
|
import org.apache.kafka.common.resource.ResourceType;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
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.metrics.ClusterMetrics.initWithMetrics;
|
||||||
import static com.xiaojukeji.know.streaming.km.common.bean.entity.result.ResultStatus.*;
|
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.TopicMetricVersionItems.*;
|
||||||
import static com.xiaojukeji.know.streaming.km.core.service.version.metrics.kafka.ClusterMetricVersionItems.*;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author didi
|
* @author didi
|
||||||
*/
|
*/
|
||||||
@Service("clusterMetricService")
|
@Service
|
||||||
@EnterpriseLoadReBalance(all = false)
|
|
||||||
public class ClusterMetricServiceImpl extends BaseMetricService implements ClusterMetricService {
|
public class ClusterMetricServiceImpl extends BaseMetricService implements ClusterMetricService {
|
||||||
private static final ILog LOGGER = LogFactory.getLog(ClusterMetricServiceImpl.class);
|
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_SUCCESS = "getJobsSuccess";
|
||||||
public static final String CLUSTER_METHOD_GET_JOBS_FAILED = "getJobsFailed";
|
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
|
@Autowired
|
||||||
private HealthStateService healthStateService;
|
private HealthStateService healthStateService;
|
||||||
|
|
||||||
@@ -159,12 +149,6 @@ public class ClusterMetricServiceImpl extends BaseMetricService implements Clust
|
|||||||
@Autowired
|
@Autowired
|
||||||
private JobService jobService;
|
private JobService jobService;
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ClusterBalanceService clusterBalanceService;
|
|
||||||
|
|
||||||
@Autowired
|
|
||||||
private ClusterPhyService clusterPhyService;
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected VersionItemTypeEnum getVersionItemType() {
|
protected VersionItemTypeEnum getVersionItemType() {
|
||||||
return VersionItemTypeEnum.METRIC_CLUSTER;
|
return VersionItemTypeEnum.METRIC_CLUSTER;
|
||||||
@@ -176,7 +160,6 @@ public class ClusterMetricServiceImpl extends BaseMetricService implements Clust
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@EnterpriseLoadReBalance(all = false)
|
|
||||||
protected void initRegisterVCHandler(){
|
protected void initRegisterVCHandler(){
|
||||||
registerVCHandler( CLUSTER_METHOD_DO_NOTHING, this::doNothing);
|
registerVCHandler( CLUSTER_METHOD_DO_NOTHING, this::doNothing);
|
||||||
registerVCHandler( CLUSTER_METHOD_GET_TOPIC_SIZE, this::getTopicSize);
|
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_WAITING, this::getJobsWaiting);
|
||||||
registerVCHandler( CLUSTER_METHOD_GET_JOBS_SUCCESS, this::getJobsSuccess);
|
registerVCHandler( CLUSTER_METHOD_GET_JOBS_SUCCESS, this::getJobsSuccess);
|
||||||
registerVCHandler( CLUSTER_METHOD_GET_JOBS_FAILED, this::getJobsFailed);
|
registerVCHandler( CLUSTER_METHOD_GET_JOBS_FAILED, this::getJobsFailed);
|
||||||
|
|
||||||
registerVCHandler( CLUSTER_METHOD_GET_CLUSTER_LOAD_RE_BALANCE_INFO, this::getClusterLoadReBalanceInfo);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -680,26 +661,6 @@ public class ClusterMetricServiceImpl extends BaseMetricService implements Clust
|
|||||||
return Result.buildSuc(initWithMetrics(clusterId, metric, count));
|
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 中获取指标再聚合得到集群的指标
|
* 从某一个 controller 的 JMX 中获取指标再聚合得到集群的指标
|
||||||
* @param metricParam
|
* @param metricParam
|
||||||
|
|||||||
@@ -16,5 +16,5 @@ public class ConfigUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Value("${cluster-balance.ignored-topics.time-second:300}")
|
@Value("${cluster-balance.ignored-topics.time-second:300}")
|
||||||
private Integer clusterBalanceIgnoredTopicsTimeSecond;
|
private Integer clusterBalanceIgnoredTopicsTimeSecond;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ public class HealthStateServiceImpl implements HealthStateService {
|
|||||||
// DB中不存在,则默认是存活的
|
// DB中不存在,则默认是存活的
|
||||||
metrics.getMetrics().put(BROKER_METRIC_HEALTH_STATE, (float)HealthStateEnum.GOOD.getDimension());
|
metrics.getMetrics().put(BROKER_METRIC_HEALTH_STATE, (float)HealthStateEnum.GOOD.getDimension());
|
||||||
} else if (!broker.alive()) {
|
} else if (!broker.alive()) {
|
||||||
metrics.getMetrics().put(BROKER_METRIC_HEALTH_STATE, (float)HealthStateEnum.DEAD.getDimension());
|
metrics.getMetrics().put(BROKER_METRIC_HEALTH_STATE, (float) HealthStateEnum.DEAD.getDimension());
|
||||||
} else {
|
} else {
|
||||||
metrics.getMetrics().put(BROKER_METRIC_HEALTH_STATE, (float)this.calHealthState(aggResultList).getDimension());
|
metrics.getMetrics().put(BROKER_METRIC_HEALTH_STATE, (float)this.calHealthState(aggResultList).getDimension());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
package com.xiaojukeji.know.streaming.km.core.service.version.metrics.kafka;
|
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.bean.entity.version.VersionMetricControlItem;
|
||||||
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
|
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
|
||||||
import com.xiaojukeji.know.streaming.km.common.enums.version.VersionEnum;
|
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
|
* @author didi
|
||||||
*/
|
*/
|
||||||
@Component
|
@Component
|
||||||
@EnterpriseLoadReBalance(all = false)
|
|
||||||
public class ClusterMetricVersionItems extends BaseMetricVersionMetric {
|
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_SUCCESS = "JobsSuccess";
|
||||||
public static final String CLUSTER_METRIC_JOB_FAILED = "JobsFailed";
|
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 static final String CLUSTER_METRIC_COLLECT_COST_TIME = Constant.COLLECT_METRICS_COST_TIME_METRICS_NAME;
|
||||||
|
|
||||||
public ClusterMetricVersionItems(){}
|
public ClusterMetricVersionItems(){}
|
||||||
@@ -138,7 +129,6 @@ public class ClusterMetricVersionItems extends BaseMetricVersionMetric {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@EnterpriseLoadReBalance(all = false)
|
|
||||||
public List<VersionMetricControlItem> init(){
|
public List<VersionMetricControlItem> init(){
|
||||||
List<VersionMetricControlItem> itemList = new ArrayList<>();
|
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)
|
.name(CLUSTER_METRIC_JOB_FAILED).unit("个").desc("集群failed任务总数").category(CATEGORY_JOB)
|
||||||
.extend( buildMethodExtend( CLUSTER_METHOD_GET_JOBS_FAILED )));
|
.extend( buildMethodExtend( CLUSTER_METHOD_GET_JOBS_FAILED )));
|
||||||
|
|
||||||
// 集群维度-均衡相关
|
|
||||||
itemList.add( buildAllVersionsItem()
|
|
||||||
.name(CLUSTER_METRIC_LOAD_RE_BALANCE_ENABLE).unit("是/否").desc("是否开启均衡, 1:是;0:否").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是否均衡, 1:是;0:否").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是否均衡, 1:是;0:否").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是否均衡, 1:是;0:否").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是否均衡, 1:是;0:否").category(CATEGORY_CLUSTER)
|
|
||||||
.extend( buildMethodExtend( CLUSTER_METHOD_GET_CLUSTER_LOAD_RE_BALANCE_INFO )));
|
|
||||||
|
|
||||||
itemList.add(buildAllVersionsItem()
|
itemList.add(buildAllVersionsItem()
|
||||||
.name(CLUSTER_METRIC_COLLECT_COST_TIME).unit("秒").desc("采集Cluster指标的耗时").category(CATEGORY_PERFORMANCE)
|
.name(CLUSTER_METRIC_COLLECT_COST_TIME).unit("秒").desc("采集Cluster指标的耗时").category(CATEGORY_PERFORMANCE)
|
||||||
.extendMethod(CLUSTER_METHOD_DO_NOTHING));
|
.extendMethod(CLUSTER_METHOD_DO_NOTHING));
|
||||||
|
|||||||
@@ -13,6 +13,7 @@
|
|||||||
<artifactId>km-rebalance</artifactId>
|
<artifactId>km-rebalance</artifactId>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<!--算法依赖的包-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.apache.kafka</groupId>
|
<groupId>org.apache.kafka</groupId>
|
||||||
<artifactId>kafka-clients</artifactId>
|
<artifactId>kafka-clients</artifactId>
|
||||||
@@ -46,22 +47,18 @@
|
|||||||
<artifactId>jopt-simple</artifactId>
|
<artifactId>jopt-simple</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- <dependency>
|
|
||||||
<groupId>org.slf4j</groupId>
|
<!--应用层依赖的包-->
|
||||||
<artifactId>slf4j-log4j12</artifactId>
|
<dependency>
|
||||||
<scope>runtime</scope>
|
<groupId>com.xiaojukeji.kafka</groupId>
|
||||||
|
<artifactId>km-common</artifactId>
|
||||||
|
<version>${project.parent.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>log4j</groupId>
|
<groupId>com.xiaojukeji.kafka</groupId>
|
||||||
<artifactId>log4j</artifactId>
|
<artifactId>km-core</artifactId>
|
||||||
<scope>runtime</scope>
|
<version>${project.parent.version}</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>commons-logging</groupId>
|
|
||||||
<artifactId>commons-logging</artifactId>
|
|
||||||
<version>1.2</version>
|
|
||||||
<scope>runtime</scope>
|
|
||||||
</dependency>-->
|
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
</project>
|
</project>
|
||||||
@@ -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.core.type.TypeReference;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.executor.ExecutionRebalance;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.ExecutionRebalance;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceParameter;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceParameter;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.HostEnv;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.HostEnv;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.OptimizerResult;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.OptimizerResult;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.utils.CommandLineUtils;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils.CommandLineUtils;
|
||||||
import joptsimple.OptionParser;
|
import joptsimple.OptionParser;
|
||||||
import joptsimple.OptionSet;
|
import joptsimple.OptionSet;
|
||||||
import org.apache.commons.io.FileUtils;
|
import org.apache.commons.io.FileUtils;
|
||||||
@@ -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 class OptimizationFailureException extends Exception {
|
||||||
public OptimizationFailureException(String message, Throwable cause) {
|
public OptimizationFailureException(String message, Throwable cause) {
|
||||||
@@ -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.algorithm.executor.common.BalanceGoal;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceParameter;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceParameter;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceThreshold;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceThreshold;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BrokerBalanceState;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BrokerBalanceState;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.ClusterModel;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.Load;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Load;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.GoalOptimizer;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.GoalOptimizer;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.OptimizationOptions;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.OptimizationOptions;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.OptimizerResult;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.OptimizerResult;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.utils.GoalUtils;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils.GoalUtils;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.commons.lang3.Validate;
|
import org.apache.commons.lang3.Validate;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@@ -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 {
|
public class BalanceActionHistory {
|
||||||
//均衡目标
|
//均衡目标
|
||||||
@@ -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 {
|
public class BalanceDetailed {
|
||||||
private int brokerId;
|
private int brokerId;
|
||||||
@@ -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 {
|
public enum BalanceGoal {
|
||||||
// KM传参时使用
|
// KM传参时使用
|
||||||
@@ -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;
|
import java.util.Map;
|
||||||
|
|
||||||
@@ -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.List;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
@@ -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.List;
|
||||||
|
|
||||||
@@ -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 {
|
public class BalanceThreshold {
|
||||||
private final Resource _resource;
|
private final Resource _resource;
|
||||||
@@ -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 {
|
public class BrokerBalanceState {
|
||||||
//CPU平均资源
|
//CPU平均资源
|
||||||
@@ -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 {
|
public class HostEnv {
|
||||||
//BrokerId
|
//BrokerId
|
||||||
@@ -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.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.Broker;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Broker;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.ClusterModel;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.ReplicaPlacementInfo;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ReplicaPlacementInfo;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ExecutionProposal;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ExecutionProposal;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.OptimizationOptions;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.OptimizationOptions;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.utils.GoalUtils;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils.GoalUtils;
|
||||||
import org.apache.kafka.common.TopicPartition;
|
import org.apache.kafka.common.TopicPartition;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -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.List;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.xiaojukeji.know.streaming.km.rebalance.metric;
|
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author leewei
|
* @author leewei
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.xiaojukeji.know.streaming.km.rebalance.metric;
|
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author leewei
|
* @author leewei
|
||||||
@@ -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.algorithm.model.Load;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
|
||||||
import org.apache.kafka.common.TopicPartition;
|
import org.apache.kafka.common.TopicPartition;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -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.JsonNode;
|
||||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.metric.Metric;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric.Metric;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.metric.MetricStore;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric.MetricStore;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.metric.Metrics;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric.Metrics;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
import org.apache.http.HttpHost;
|
import org.apache.http.HttpHost;
|
||||||
import org.elasticsearch.client.Request;
|
import org.elasticsearch.client.Request;
|
||||||
@@ -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;
|
import org.apache.kafka.common.TopicPartition;
|
||||||
|
|
||||||
@@ -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;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@@ -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 org.apache.kafka.common.TopicPartition;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -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;
|
import java.util.Arrays;
|
||||||
|
|
||||||
@@ -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;
|
import org.apache.kafka.common.TopicPartition;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.xiaojukeji.know.streaming.km.rebalance.model;
|
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.model;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@@ -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;
|
import org.apache.kafka.common.TopicPartition;
|
||||||
|
|
||||||
@@ -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;
|
import java.util.Objects;
|
||||||
|
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.xiaojukeji.know.streaming.km.rebalance.model;
|
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.model;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author leewei
|
* @author leewei
|
||||||
@@ -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.algorithm.metric.MetricStore;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.metric.Metrics;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric.Metrics;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.metric.elasticsearch.ElasticsearchMetricStore;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.metric.elasticsearch.ElasticsearchMetricStore;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.utils.MetadataUtils;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils.MetadataUtils;
|
||||||
import org.apache.kafka.clients.producer.ProducerConfig;
|
import org.apache.kafka.clients.producer.ProducerConfig;
|
||||||
import org.apache.kafka.common.Cluster;
|
import org.apache.kafka.common.Cluster;
|
||||||
import org.apache.kafka.common.Node;
|
import org.apache.kafka.common.Node;
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer;
|
||||||
|
|
||||||
|
public enum ActionAcceptance {
|
||||||
|
ACCEPT, REJECT;
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.xiaojukeji.know.streaming.km.rebalance.optimizer;
|
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer;
|
||||||
|
|
||||||
public enum ActionType {
|
public enum ActionType {
|
||||||
REPLICA_MOVEMENT("REPLICA"),
|
REPLICA_MOVEMENT("REPLICA"),
|
||||||
@@ -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.algorithm.model.ClusterModel;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.Replica;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Replica;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.ReplicaPlacementInfo;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ReplicaPlacementInfo;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.goals.Goal;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.goals.Goal;
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.apache.kafka.common.TopicPartition;
|
import org.apache.kafka.common.TopicPartition;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
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 {
|
public class AnalyzerUtils {
|
||||||
|
|
||||||
@@ -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;
|
import org.apache.kafka.common.TopicPartition;
|
||||||
|
|
||||||
@@ -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 org.apache.kafka.common.TopicPartition;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
@@ -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.algorithm.executor.common.OptimizerResult;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.ClusterModel;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.ReplicaPlacementInfo;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ReplicaPlacementInfo;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.goals.Goal;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.goals.Goal;
|
||||||
import org.apache.kafka.common.TopicPartition;
|
import org.apache.kafka.common.TopicPartition;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
@@ -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.algorithm.executor.common.BalanceParameter;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
@@ -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.algorithm.model.Broker;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.ClusterModel;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.Replica;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Replica;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.*;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.*;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -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.algorithm.model.ClusterModel;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionAcceptance;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionAcceptance;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionType;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionType;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.BalancingAction;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.BalancingAction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author leewei
|
* @author leewei
|
||||||
@@ -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);
|
||||||
|
}
|
||||||
@@ -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.algorithm.model.ClusterModel;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionAcceptance;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionAcceptance;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionType;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionType;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.BalancingAction;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.BalancingAction;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author leewei
|
* @author leewei
|
||||||
@@ -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
|
* @author leewei
|
||||||
@@ -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.algorithm.model.*;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionAcceptance;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionAcceptance;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionType;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionType;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.BalancingAction;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.BalancingAction;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.OptimizationOptions;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.OptimizationOptions;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -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.algorithm.model.Broker;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.ClusterModel;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.Replica;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Replica;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionAcceptance;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionAcceptance;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.BalancingAction;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.BalancingAction;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.OptimizationOptions;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.OptimizationOptions;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.utils.GoalUtils;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils.GoalUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
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;
|
||||||
import static com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionAcceptance.REJECT;
|
import static com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionAcceptance.REJECT;
|
||||||
import static com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionType.REPLICA_MOVEMENT;
|
import static com.xiaojukeji.know.streaming.km.rebalance.algorithm.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.ActionType.LEADERSHIP_MOVEMENT;
|
||||||
|
|
||||||
public class TopicLeadersDistributionGoal extends AbstractGoal {
|
public class TopicLeadersDistributionGoal extends AbstractGoal {
|
||||||
private static final Logger logger = LoggerFactory.getLogger(TopicLeadersDistributionGoal.class);
|
private static final Logger logger = LoggerFactory.getLogger(TopicLeadersDistributionGoal.class);
|
||||||
@@ -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.algorithm.model.Broker;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.ClusterModel;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.ClusterModel;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.Replica;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Replica;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionAcceptance;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionAcceptance;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.ActionType;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.ActionType;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.BalancingAction;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.BalancingAction;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.OptimizationOptions;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.OptimizationOptions;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.utils.GoalUtils;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils.GoalUtils;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package com.xiaojukeji.know.streaming.km.rebalance.algorithm;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* Re-Balance算法部分代码
|
||||||
|
*
|
||||||
|
* */
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package com.xiaojukeji.know.streaming.km.rebalance.utils;
|
package com.xiaojukeji.know.streaming.km.rebalance.algorithm.utils;
|
||||||
|
|
||||||
import joptsimple.OptionParser;
|
import joptsimple.OptionParser;
|
||||||
|
|
||||||
@@ -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.algorithm.executor.common.BalanceGoal;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceParameter;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceParameter;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceThreshold;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceThreshold;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.HostEnv;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.HostEnv;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.*;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.*;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.optimizer.AnalyzerUtils;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.optimizer.AnalyzerUtils;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@@ -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.*;
|
||||||
import org.apache.kafka.clients.consumer.internals.NoAvailableBrokersException;
|
import org.apache.kafka.clients.consumer.internals.NoAvailableBrokersException;
|
||||||
@@ -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("是否开启均衡, 1:是;0:否").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是否均衡, 1:是;0:否").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是否均衡, 1:是;0:否").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是否均衡, 1:是;0:否").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是否均衡, 1:是;0:否").category(CATEGORY_CLUSTER)
|
||||||
|
// .extend( buildMethodExtend( CLUSTER_METHOD_GET_CLUSTER_LOAD_RE_BALANCE_INFO )));
|
||||||
|
|
||||||
|
}
|
||||||
@@ -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.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
@@ -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.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.PaginationBaseDTO;
|
import com.xiaojukeji.know.streaming.km.common.bean.dto.pagination.PaginationBaseDTO;
|
||||||
@@ -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.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
||||||
@@ -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.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
import com.xiaojukeji.know.streaming.km.common.bean.dto.BaseDTO;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
@@ -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.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
|
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.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
@@ -27,7 +27,7 @@ public class ClusterBalanceItemState {
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* 子项是否均衡:key: disk,bytesIn,bytesOut,cpu ; value:true:已均衡,false:未均衡
|
* 子项是否均衡: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;
|
private Map<String, Boolean> itemState;
|
||||||
|
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, WINIT and/or its affiliates. All rights reserved. Use, Copy is subject to authorized license.
|
* 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.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.BaseEntity;
|
import com.xiaojukeji.know.streaming.km.common.bean.entity.BaseEntity;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -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.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 lombok.Data;
|
||||||
|
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -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.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.job.content.BaseJobCreateContent;
|
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 io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, WINIT and/or its affiliates. All rights reserved. Use, Copy is subject to authorized license.
|
* 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.baomidou.mybatisplus.annotation.TableName;
|
||||||
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, WINIT and/or its affiliates. All rights reserved. Use, Copy is subject to authorized license.
|
* 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.baomidou.mybatisplus.annotation.TableName;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.po.BasePO;
|
import com.xiaojukeji.know.streaming.km.common.bean.po.BasePO;
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, WINIT and/or its affiliates. All rights reserved. Use, Copy is subject to authorized license.
|
* 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.baomidou.mybatisplus.annotation.TableName;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.po.BasePO;
|
import com.xiaojukeji.know.streaming.km.common.bean.po.BasePO;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import io.swagger.annotations.ApiModelProperty;
|
import io.swagger.annotations.ApiModelProperty;
|
||||||
@@ -1,10 +1,10 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2015, WINIT and/or its affiliates. All rights reserved. Use, Copy is subject to authorized license.
|
* 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.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 io.swagger.annotations.ApiModelProperty;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
|
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import io.swagger.annotations.ApiModel;
|
import io.swagger.annotations.ApiModel;
|
||||||
@@ -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.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.dto.ClusterBalanceIntervalDTO;
|
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.dto.ClusterBalanceIntervalDTO;
|
||||||
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.dto.ClusterBalancePreviewDTO;
|
import com.xiaojukeji.know.streaming.km.rebalance.common.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.ClusterBalanceStrategyDTO;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.broker.Broker;
|
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.broker.BrokerSpec;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.cluster.ClusterPhy;
|
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.rebalance.common.bean.entity.ClusterBalanceInterval;
|
||||||
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.ClusterBalanceReassignExtendData;
|
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.ClusterBalanceReassignExtendData;
|
||||||
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.detail.ClusterBalancePlanDetail;
|
import com.xiaojukeji.know.streaming.km.rebalance.common.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.job.content.JobClusterBalanceContent;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.topic.Topic;
|
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.rebalance.common.bean.po.ClusterBalanceJobConfigPO;
|
||||||
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.po.ClusterBalanceJobPO;
|
import com.xiaojukeji.know.streaming.km.rebalance.common.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.ClusterBalanceReassignPO;
|
||||||
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
|
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.rebalance.common.bean.vo.*;
|
||||||
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.enums.ClusterBalanceStateEnum;
|
import com.xiaojukeji.know.streaming.km.rebalance.common.enums.ClusterBalanceStateEnum;
|
||||||
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.enums.ClusterBalanceTypeEnum;
|
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.JobStatusEnum;
|
||||||
import com.xiaojukeji.know.streaming.km.common.enums.job.JobTypeEnum;
|
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.CommonUtils;
|
||||||
import com.xiaojukeji.know.streaming.km.common.utils.ConvertUtil;
|
import com.xiaojukeji.know.streaming.km.common.utils.ConvertUtil;
|
||||||
import com.xiaojukeji.know.streaming.km.common.utils.ValidateUtils;
|
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.algorithm.executor.common.*;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.model.Resource;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.model.Resource;
|
||||||
import org.apache.kafka.clients.CommonClientConfigs;
|
import org.apache.kafka.clients.CommonClientConfigs;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import static com.xiaojukeji.know.streaming.km.common.constant.ESConstant.*;
|
|
||||||
|
|
||||||
@EnterpriseLoadReBalance
|
@EnterpriseLoadReBalance
|
||||||
public class ClusterBalanceConverter {
|
public class ClusterBalanceConverter {
|
||||||
|
|
||||||
|
public final static String PARTITION_INDEX = "ks_kafka_partition_metric";
|
||||||
|
|
||||||
private ClusterBalanceConverter() {
|
private ClusterBalanceConverter() {
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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.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.enterprise.rebalance.bean.entity.job.ClusterBalanceReassignExtendData;
|
import com.xiaojukeji.know.streaming.km.rebalance.common.bean.entity.job.ClusterBalanceReassignExtendData;
|
||||||
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.entity.job.detail.ClusterBalanceDetailDataGroupByPartition;
|
import com.xiaojukeji.know.streaming.km.rebalance.common.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.detail.ClusterBalanceDetailDataGroupByTopic;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.job.Job;
|
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.JobStatus;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.job.detail.JobDetail;
|
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.job.detail.SubJobReplicaMoveDetail;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.reassign.strategy.ReplaceReassignSub;
|
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.rebalance.common.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.ClusterBalanceReassignPO;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.vo.job.sub.SubJobClusterBalanceReplicaMoveVO;
|
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.SubJobPartitionDetailVO;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.vo.job.sub.SubJobVO;
|
import com.xiaojukeji.know.streaming.km.common.bean.vo.job.sub.SubJobVO;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -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 com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -4,6 +4,6 @@
|
|||||||
* 当前 package 模块是依据产品的要求,依赖 km-extends/km-rebalance 模块,构建产品实际使用功能
|
* 当前 package 模块是依据产品的要求,依赖 km-extends/km-rebalance 模块,构建产品实际使用功能
|
||||||
*/
|
*/
|
||||||
@EnterpriseLoadReBalance
|
@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;
|
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
@@ -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.ILog;
|
||||||
import com.didiglobal.logi.log.LogFactory;
|
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.Broker;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.broker.BrokerSpec;
|
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.bean.entity.cluster.ClusterPhy;
|
||||||
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.enterprise.rebalance.bean.entity.job.detail.ClusterBalanceDetailDataGroupByTopic;
|
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.Job;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.job.JobStatus;
|
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.JobDetail;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.job.detail.JobModifyDetail;
|
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.Result;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.ResultStatus;
|
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.bean.entity.topic.Topic;
|
||||||
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.bean.po.ClusterBalanceJobPO;
|
import com.xiaojukeji.know.streaming.km.rebalance.common.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.ClusterBalanceReassignPO;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.po.job.JobPO;
|
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.bean.vo.job.sub.SubJobPartitionDetailVO;
|
||||||
import com.xiaojukeji.know.streaming.km.common.constant.Constant;
|
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.JobConstant;
|
||||||
import com.xiaojukeji.know.streaming.km.common.constant.MsgConstant;
|
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.rebalance.common.converter.ClusterBalanceConverter;
|
||||||
import com.xiaojukeji.know.streaming.km.common.enterprise.rebalance.converter.ClusterBalanceReassignConverter;
|
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.JobActionEnum;
|
||||||
import com.xiaojukeji.know.streaming.km.common.enums.job.JobTypeEnum;
|
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.common.utils.ConvertUtil;
|
||||||
import com.xiaojukeji.know.streaming.km.core.service.broker.BrokerService;
|
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.broker.BrokerSpecService;
|
||||||
import com.xiaojukeji.know.streaming.km.core.service.cluster.ClusterPhyService;
|
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.config.ConfigUtils;
|
||||||
import com.xiaojukeji.know.streaming.km.core.service.job.JobHandler;
|
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.core.service.topic.TopicService;
|
||||||
import com.xiaojukeji.know.streaming.km.persistence.mysql.job.JobDAO;
|
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.persistence.kafka.zookeeper.service.KafkaZKDAO;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.executor.ExecutionRebalance;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.ExecutionRebalance;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.BalanceParameter;
|
import com.xiaojukeji.know.streaming.km.rebalance.algorithm.executor.common.BalanceParameter;
|
||||||
import com.xiaojukeji.know.streaming.km.rebalance.executor.common.OptimizerResult;
|
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.Autowired;
|
||||||
import org.springframework.beans.factory.annotation.Value;
|
import org.springframework.beans.factory.annotation.Value;
|
||||||
import org.springframework.stereotype.Component;
|
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);
|
ClusterBalanceJobPO clusterBalanceJobPO = ClusterBalanceConverter.convert2ClusterBalanceJobPO(job.getId(), dto, optimizerResult, brokers, operator, generateReassignmentJson);
|
||||||
Result<Void> result = clusterBalanceJobService.createClusterBalanceJob(clusterBalanceJobPO, operator);
|
Result<Void> result = clusterBalanceJobService.createClusterBalanceJob(clusterBalanceJobPO, operator);
|
||||||
if (result.failed()){
|
if (result.failed()){
|
||||||
logger.error("method=clusterBalanceJobHandler.submit||job={}||errMsg={}!",
|
logger.error("method=submit||job={}||errMsg={}!", job, result.getMessage());
|
||||||
job, result.getMessage());
|
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
@@ -152,8 +151,7 @@ public class ClusterBalanceJobHandler implements JobHandler {
|
|||||||
//生成迁移明细
|
//生成迁移明细
|
||||||
Result<Void> cbrResult = clusterBalanceReassignService.addBatchBalanceReassign(reassignPOS);
|
Result<Void> cbrResult = clusterBalanceReassignService.addBatchBalanceReassign(reassignPOS);
|
||||||
if (cbrResult.failed()){
|
if (cbrResult.failed()){
|
||||||
logger.error("method=clusterBalanceJobHandler.submit||job={}||errMsg={}!",
|
logger.error("method=submit||job={}||errMsg={}!", job, cbrResult.getMessage());
|
||||||
job, cbrResult.getMessage());
|
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
return cbrResult;
|
return cbrResult;
|
||||||
}
|
}
|
||||||
@@ -162,14 +160,13 @@ public class ClusterBalanceJobHandler implements JobHandler {
|
|||||||
job.setTarget(optimizerResult.resultOverview().getMoveTopics());
|
job.setTarget(optimizerResult.resultOverview().getMoveTopics());
|
||||||
int count = jobDAO.updateById(ConvertUtil.obj2Obj(job, JobPO.class));
|
int count = jobDAO.updateById(ConvertUtil.obj2Obj(job, JobPO.class));
|
||||||
if (count < 0){
|
if (count < 0){
|
||||||
logger.error("method=clusterBalanceJobHandler.submit||job={}||errMsg={}!",
|
logger.error("method=submit||job={}||errMsg={}!", job, result.getMessage());
|
||||||
job, result.getMessage());
|
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
return Result.buildFrom(ResultStatus.MYSQL_OPERATE_FAILED);
|
return Result.buildFrom(ResultStatus.MYSQL_OPERATE_FAILED);
|
||||||
}
|
}
|
||||||
|
|
||||||
}catch (Exception e){
|
}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();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
return Result.buildFailure(e.getMessage());
|
return Result.buildFailure(e.getMessage());
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,6 @@
|
|||||||
* 当前 package 模块是依据产品的要求,依赖 km-extends/km-rebalance 模块,构建产品实际使用功能
|
* 当前 package 模块是依据产品的要求,依赖 km-extends/km-rebalance 模块,构建产品实际使用功能
|
||||||
*/
|
*/
|
||||||
@EnterpriseLoadReBalance
|
@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;
|
import com.xiaojukeji.know.streaming.km.common.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
@@ -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.annotations.enterprise.EnterpriseLoadReBalance;
|
||||||
import com.xiaojukeji.know.streaming.km.common.bean.entity.result.Result;
|
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
|
@EnterpriseLoadReBalance
|
||||||
public interface ClusterBalanceJobConfigService {
|
public interface ClusterBalanceJobConfigService {
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user