开发者社区 > 云原生 > 正文

2.0.4版本中 永久实列注册逻辑问题

NamingClientProxyDelegate.getExecuteCllientProxy中已经根据实列类型获取具体的NamingClientProxy,如果是临时实列则使用 NamingGrpcClilentProxy,如果是永久实列则使用 NamingHttpClientProxy,那么既然已经判断过了,为什么还要在NamingHttpClientProxy 中再次判断,也就是说下述 if 代码块根本不会进入。

@OverRide public void registerService(String serviceName, String groupName, Instance instance) throws NacosException {

NAMING_LOGGER.info("[REGISTER-SERVICE] {} registering service {} with instance: {}", namespaceId, serviceName,
        instance);
String groupedServiceName = NamingUtils.getGroupedName(serviceName, groupName);
if (instance.isEphemeral()) {
    BeatInfo beatInfo = beatReactor.buildBeatInfo(groupedServiceName, instance);
    beatReactor.addBeatInfo(groupedServiceName, beatInfo);
}
final Map<String, String> params = new HashMap<String, String>(32);
params.put(CommonParams.NAMESPACE_ID, namespaceId);
params.put(CommonParams.SERVICE_NAME, groupedServiceName);
params.put(CommonParams.GROUP_NAME, groupName);
params.put(CommonParams.CLUSTER_NAME, instance.getClusterName());
params.put(IP_PARAM, instance.getIp());
params.put(PORT_PARAM, String.valueOf(instance.getPort()));
params.put(WEIGHT_PARAM, String.valueOf(instance.getWeight()));
params.put("enable", String.valueOf(instance.isEnabled()));
params.put(HEALTHY_PARAM, String.valueOf(instance.isHealthy()));
params.put(EPHEMERAL_PARAM, String.valueOf(instance.isEphemeral()));
params.put(META_PARAM, JacksonUtils.toJson(instance.getMetadata()));

reqApi(UtilAndComs.nacosUrlInstance, params, HttpMethod.POST);

}

原提问者GitHub用户LeonardoEzio

展开
收起
学习娃 2023-05-22 15:49:33 3151 0
1 条回答
写回答
取消 提交回答
  • NamingHttpClientProxy 是由旧版本(1.X)的逻辑中重构而来,因此保留了旧版本中的所有逻辑。最终应该会被彻底移除

    原回答者GitHub用户KomachiSion

    2023-05-23 09:28:25
    赞同 展开评论 打赏
问答地址:

阿里云拥有国内全面的云原生产品技术以及大规模的云原生应用实践,通过全面容器化、核心技术互联网化、应用 Serverless 化三大范式,助力制造业企业高效上云,实现系统稳定、应用敏捷智能。拥抱云原生,让创新无处不在。

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载