路由管理优化

This commit is contained in:
tanghc
2019-03-15 14:40:46 +08:00
parent 2138ff6fda
commit 448b1ece1a
2 changed files with 14 additions and 11 deletions

View File

@@ -122,12 +122,13 @@ public abstract class BaseRouteManager<R extends BaseServiceRouteInfo<E>, E exte
// 列出子节点数据列表需要使用BUILD_INITIAL_CACHE同步初始化模式才能获得异步是获取不到的
List<ChildData> childDataList = childrenCache.getCurrentData();
log.info("获取service列表");
log.info("========== 加载路由信息 ==========");
log.info("{} # 根节点", sopRouteRootPath);
for (ChildData childData : childDataList) {
String serviceNodeData = new String(childData.getData());
R serviceRouteInfo = JSON.parseObject(serviceNodeData, getServiceRouteInfoClass());
String servicePath = childData.getPath();
log.info("\t* service节点路径:" + servicePath + ",该节点的数据为:" + serviceNodeData);
log.info("\t{} # service节点,节点数据:{}", servicePath, serviceNodeData);
this.loadServiceRouteItem(client, serviceRouteInfo, servicePath);
}
log.info("监听服务节点增删改rootPath:{}", sopRouteRootPath);
@@ -139,20 +140,20 @@ public abstract class BaseRouteManager<R extends BaseServiceRouteInfo<E>, E exte
synchronized (type) {
// 通过判断event type的方式来实现不同事件的触发
if (PathChildrenCacheEvent.Type.CHILD_ADDED.equals(type)) {
String nodeData = new String(event.getData().getData());
R serviceRouteInfo = JSON.parseObject(nodeData, getServiceRouteInfoClass());
String serviceNodeData = new String(event.getData().getData());
R serviceRouteInfo = JSON.parseObject(serviceNodeData, getServiceRouteInfoClass());
// 添加子节点时触发
String servicePath = event.getData().getPath();
log.info("新增serviceId节点{},数据:{}", servicePath, nodeData);
log.info("新增serviceId节点{}节点数据:{}", servicePath, serviceNodeData);
loadServiceRouteItem(client, serviceRouteInfo, servicePath);
} else if (PathChildrenCacheEvent.Type.CHILD_UPDATED.equals(type)) {
// 修改子节点数据时触发,暂时没有什么操作
String nodeData = new String(event.getData().getData());
log.info("修改serviceId节点{},数据:{}", event.getData().getPath(), nodeData);
log.info("修改serviceId节点{}节点数据:{}", event.getData().getPath(), nodeData);
} else if (PathChildrenCacheEvent.Type.CHILD_REMOVED.equals(type)) {
// 删除service节点
String nodeData = new String(event.getData().getData());
log.info("删除serviceId节点{},数据:{}", event.getData().getPath(), nodeData);
log.info("删除serviceId节点{}节点数据:{}", event.getData().getPath(), nodeData);
R serviceRouteInfo = JSON.parseObject(nodeData, getServiceRouteInfoClass());
routeRepository.deleteAll(serviceRouteInfo.getServiceId());
}
@@ -174,7 +175,7 @@ public abstract class BaseRouteManager<R extends BaseServiceRouteInfo<E>, E exte
String routeItemPath = servicePath + "/" + pathName;
byte[] routeItemData = client.getData().forPath(routeItemPath);
String routeDataJson = buildZookeeperData(routeItemData);
log.info("加载路由path:{}, 数据:{}", routeItemPath, routeDataJson);
log.info("\t\t{} # 路由节点,节点数据:{}", routeItemPath, routeDataJson);
this.saveRouteItem(serviceRouteInfo, routeDataJson);
}
this.watchRouteItems(client, serviceRouteInfo, servicePath);
@@ -201,17 +202,17 @@ public abstract class BaseRouteManager<R extends BaseServiceRouteInfo<E>, E exte
if (PathChildrenCacheEvent.Type.CHILD_ADDED.equals(type)) {
// 新增单个路由
String routeDataJson = buildZookeeperData(event.getData().getData());
log.info("新增单个路由serviceId:{}, route:{}", serviceRouteInfo.getServiceId(), routeDataJson);
log.info("新增单个路由serviceId:{}, 路由数据:{}", serviceRouteInfo.getServiceId(), routeDataJson);
saveRouteItem(serviceRouteInfo, routeDataJson);
} else if (PathChildrenCacheEvent.Type.CHILD_UPDATED.equals(type)) {
// 修改单个路由
String routeDataJson = buildZookeeperData(event.getData().getData());
log.info("修改单个路由serviceId:{}, route:{}", serviceRouteInfo.getServiceId(), routeDataJson);
log.info("修改单个路由serviceId:{}, 路由数据:{}", serviceRouteInfo.getServiceId(), routeDataJson);
updateRouteItem(serviceRouteInfo, routeDataJson);
} else if (PathChildrenCacheEvent.Type.CHILD_REMOVED.equals(type)) {
// 删除单个路由
String routeDataJson = buildZookeeperData(event.getData().getData());
log.info("删除单个路由serviceId:{}, route:{}", serviceRouteInfo.getServiceId(), routeDataJson);
log.info("删除单个路由serviceId:{}, 路由数据:{}", serviceRouteInfo.getServiceId(), routeDataJson);
deleteRouteItem(serviceRouteInfo, routeDataJson);
}
}