【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 还是有必要的,我的想法是拿来做服务的大类拆分
遇到了同样的困惑

分组是怎么来的,能否在服务配置里面自定义
nacos版本为
2.0.2.RELEASEapplication.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
