Eureka迁移到Nacos之服务名称大小问题解决

我们应用往Eureka中注册使用的名称以及应用内部通过Feign调用,使用的服务名称都是小写,如user-service,但是注册到Eureka中后,应用的名称全部都是以大写的形式存储及展现,由于Eureka客户端对大小写的支持都是一样的,因而通过Feign使用小写的名称调用就没有问题。

现在是将Spring Cloud注册中心由Eureka迁移到Nacos,但是Nacos服务端及Nacos客户端对服务名称的支持是区分大小写的,即从Eureka同步到Nacos中的大写服务名称,通过Feign中使用小写的服务名称调用时,就会报找不到服务的错误。

针对这种情况,考虑了以下四种解决方案: 1、改Nacos的服务端与客户端,使其对大小写服务名称不敏感,如果等官方版本支持,可能不知道到什么时候,要么就自己改,但是以后就不能够升级官方的新版本,与官方支持的版本升级就会脱节; 2、修改Eureka对外提供的服务名称,这个代价也不小,更何况这也不是Eureka的问题; 3、修改应用中的调用,都使用大写,服务注册时名称全部修改为大写,上百个应用相互调用,有非常多的地方要改,成本太高; 4、修改NacosSync,将从Eureka中获取到的服务名称修改为小写后再同步到Nacos中,这种方案成本最小,且修改容易,不会修改到Nacos以及Eureka本身,不影响将来的升级;

在NacosSync中,EurekaNamingService主要负责与Eureka的交互,如注册节点、更新节点、删除节点以及获取应用的节点信息等,此时只需要针对获取到的应用节点信息,将其应用名称处理成小写再返回给调用方即可,具体的变更可查看以下码云的提交:

经验分享 程序员 微信小程序 职场和发展