同问,度娘一番,没找到答案,最终看的代码,大概知道怎么回事了。
这个是下面引用源码的版本
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-discovery
com.alibaba.nacos
nacos-client
0.2.2.RELEASE
com.alibaba.nacos
nacos-client
1.1.0
没有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 还是有必要的,我的想法是拿来做服务的大类拆分