nacos-spring-boot-project icon indicating copy to clipboard operation
nacos-spring-boot-project copied to clipboard

java sdk nacos-discovery-spring-boot-starter 使用过程中的疑问

Open dzpxlz opened this issue 3 years ago • 0 comments

你好: 在使用nacos sdk java版中有2个疑问点, 我使用的版本如下:0.2.10

我的配置中 #设置成临时实例 nacos.discovery.register.ephemeral=true 注册过程中有2个疑问 疑问一: 这个地方: NamingClientProxyDelegate类中注册实例如下: @Override public void registerService(String serviceName, String groupName, Instance instance) throws NacosException { getExecuteClientProxy(instance).registerService(serviceName, groupName, instance); }

private NamingClientProxy getExecuteClientProxy(Instance instance) { return instance.isEphemeral() ? grpcClientProxy : httpClientProxy; }

和NamingHttpClientProxy.registerService.java中的代码会不会存在重复问题 @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>(16);
    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);
    
}

如果说:instance.isEphemeral() 为true的话 根本就不会走NamingHttpClientProxy代理了。

疑问二: 在NamingGrpcClientProxy.registerService方法中我看没有设置instanceId。 这样就会导致调用/nacos/v1/ns/instance获取到的instanceId会是空的。

是设计如此 还是有点小问题。 麻烦大佬们解答下。

dzpxlz avatar Oct 13 '21 07:10 dzpxlz