【Java】nacos服务注册如何配置分组?

config可以用group字段区分分组 但是discovery如何配置分组

nacos1.0.0

spring:

cloud:

nacos:

config:

file-extension: yaml

server-addr:

namespace:

//我可以在这里配置 配置中心的分组

group: Octopus

discovery:

//但是这里如何配置服务注册的分组

server-addr: ${spring.cloud.nacos.config.server-addr}

namespace: ${spring.cloud.nacos.config.namespace}

service: dev

回答

同问,度娘一番,没找到答案,最终看的代码,大概知道怎么回事了。

这个是下面引用源码的版本

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>

<exclusions>

<exclusion>

<groupId>com.alibaba.nacos</groupId>

<artifactId>nacos-client</artifactId>

</exclusion>

</exclusions>

<version>0.2.2.RELEASE</version>

</dependency>

<dependency>

<groupId>com.alibaba.nacos</groupId>

<artifactId>nacos-client</artifactId>

<version>1.1.0</version>

</dependency>

没有group的原因在于下面的代码

/* org.springframework.cloud.alibaba.nacos.registry.NacosServiceRegistry */

//spring-cloud-alibaba-nacos-discovery-0.2.2.RELEASE.jar

// org.springframework.cloud.alibaba.nacos.registry.NacosServiceRegistry

// 最终的实现类为 com.alibaba.nacos.client.naming.NacosNamingService

//nacos-client-0.2.1-RC1.jar

private final NamingService namingService;

@Override

public void register(Registration registration) {

if (StringUtils.isEmpty(registration.getServiceId())) {

log.warn("No service to register for nacos client...");

return;

}

String serviceId = registration.getServiceId();

Instance instance = new Instance();

instance.setIp(registration.getHost());

instance.setPort(registration.getPort());

instance.setWeight(nacosDiscoveryProperties.getWeight());

instance.setClusterName(nacosDiscoveryProperties.getClusterName());

instance.setMetadata(registration.getMetadata());

try {

namingService.registerInstance(serviceId, instance);

log.info("nacos registry, {} {}:{} register finished", serviceId,

instance.getIp(), instance.getPort());

}

catch (Exception e) {

log.error("nacos registry, {} register failed...{},", serviceId,

registration.toString(), e);

}

}

主要是 namingService.registerInstance(serviceId, instance); 这一句,这句代码是去注册服务的,但是很明显,里面没有 group ,为什么这么说,是因为 NamingService 的实现类 中 有 下面的方法

/* com.alibaba.nacos.client.naming.NacosNamingService */

//nacos-client-0.2.1-RC1.jar

@Override

public void registerInstance(String serviceName, Instance instance) throws NacosException {

registerInstance(serviceName, Constants.DEFAULT_GROUP, instance);

}

@Override

public void registerInstance(String serviceName, String groupName, Instance instance) throws NacosException {

if (instance.isEphemeral()) {

BeatInfo beatInfo = new BeatInfo();

beatInfo.setServiceName(NamingUtils.getGroupedName(serviceName, groupName));

beatInfo.setIp(instance.getIp());

beatInfo.setPort(instance.getPort());

beatInfo.setCluster(instance.getClusterName());

beatInfo.setWeight(instance.getWeight());

beatInfo.setMetadata(instance.getMetadata());

beatInfo.setScheduled(false);

long instanceInterval = instance.getInstanceHeartBeatInterval();

beatInfo.setPeriod(instanceInterval == 0 ? DEFAULT_HEART_BEAT_INTERVAL : instanceInterval);

beatReactor.addBeatInfo(NamingUtils.getGroupedName(serviceName, groupName), beatInfo);

}

serverProxy.registerService(NamingUtils.getGroupedName(serviceName, groupName), groupName, instance);

}

不知道 spring-cloud-starter-alibaba-nacos-discovery 是基于什么考虑没有将 group 进行封装(或者我没有找到?),
个人觉得 group 还是有必要的,我的想法是拿来做服务的大类拆分

遇到了同样的困惑

【Java】nacos服务注册如何配置分组?

分组是怎么来的,能否在服务配置里面自定义

nacos版本为

2.0.2.RELEASE

application.properties为

## 命名空间

## 命名空间需要现在nacos web上的命名空间模块进行新增,得到其ID,使用id进行配置

spring.cloud.nacos.discovery.namespace=f1d75df4-4d0b-404b-8b50-8640fae3351f

## 分组,名称自定义

spring.cloud.nacos.discovery.group=develop-local

这样的话,就可以一定义命名空间和分组了。

以上是 【Java】nacos服务注册如何配置分组? 的全部内容, 来源链接: utcz.com/a/87683.html

回到顶部