From 09691137108bf28b238a29ea46e6f23e1e16da2d Mon Sep 17 00:00:00 2001 From: Eric Zhao Date: Wed, 16 Jan 2019 16:24:01 +0800 Subject: [PATCH] Improve cluster embedded demo Signed-off-by: Eric Zhao --- .../cluster/init/DemoClusterInitFunc.java | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/sentinel-demo/sentinel-demo-cluster/sentinel-demo-cluster-embedded/src/main/java/com/alibaba/csp/sentinel/demo/cluster/init/DemoClusterInitFunc.java b/sentinel-demo/sentinel-demo-cluster/sentinel-demo-cluster-embedded/src/main/java/com/alibaba/csp/sentinel/demo/cluster/init/DemoClusterInitFunc.java index 59ef0cda..d1199290 100644 --- a/sentinel-demo/sentinel-demo-cluster/sentinel-demo-cluster-embedded/src/main/java/com/alibaba/csp/sentinel/demo/cluster/init/DemoClusterInitFunc.java +++ b/sentinel-demo/sentinel-demo-cluster/sentinel-demo-cluster-embedded/src/main/java/com/alibaba/csp/sentinel/demo/cluster/init/DemoClusterInitFunc.java @@ -58,14 +58,19 @@ public class DemoClusterInitFunc implements InitFunc { @Override public void init() throws Exception { - // Init token client related data source. + // Register client dynamic rule data source. initDynamicRuleProperty(); + // Register token client related data source. + // Token client common config: initClientConfigProperty(); + // Token client assign config (e.g. target token server) retrieved from assign map: initClientServerAssignProperty(); - // Init token server related data source. + // Register token server related data source. + // Register dynamic rule data source supplier for token server: registerClusterRuleSupplier(); + // Token server transport config extracted from assign map: initServerTransportConfigProperty(); // Init cluster state property for extracting mode from cluster map data source. @@ -101,15 +106,16 @@ public class DemoClusterInitFunc implements InitFunc { private void registerClusterRuleSupplier() { // Register cluster flow rule property supplier which creates data source by namespace. + // Flow rule dataId format: ${namespace}-flow-rules ClusterFlowRuleManager.setPropertySupplier(namespace -> { ReadableDataSource> ds = new NacosDataSource<>(remoteAddress, groupId, - flowDataId, source -> JSON.parseObject(source, new TypeReference>() {})); + namespace + DemoConstants.FLOW_POSTFIX, source -> JSON.parseObject(source, new TypeReference>() {})); return ds.getProperty(); }); // Register cluster parameter flow rule property supplier which creates data source by namespace. ClusterParamFlowRuleManager.setPropertySupplier(namespace -> { ReadableDataSource> ds = new NacosDataSource<>(remoteAddress, groupId, - paramDataId, source -> JSON.parseObject(source, new TypeReference>() {})); + namespace + DemoConstants.PARAM_FLOW_POSTFIX, source -> JSON.parseObject(source, new TypeReference>() {})); return ds.getProperty(); }); } @@ -147,6 +153,8 @@ public class DemoClusterInitFunc implements InitFunc { if (groupList.stream().anyMatch(this::machineEqual)) { return ClusterStateManager.CLUSTER_SERVER; } + // If current machine belongs to any of the token server group, then it's token client. + // Otherwise it's unassigned, should be set to NOT_STARTED. boolean canBeClient = groupList.stream() .flatMap(e -> e.getClientSet().stream()) .anyMatch(e -> e.equals(getCurrentMachineId())); @@ -180,8 +188,9 @@ public class DemoClusterInitFunc implements InitFunc { } private String getCurrentMachineId() { + // Note: this may not work well for container-based env. return HostNameUtil.getIp() + SEPARATOR + TransportConfig.getRuntimePort(); } private static final String SEPARATOR = "@"; -} +} \ No newline at end of file