spring cloud config动态修改业务服务注册地址
本次调研的目的,主要为了验证以下两个问题:
一、eureka客户端能否通过config动态修改注册中心地址,不重启服务实现刷新。
二、eureka服务端集群能否通过config动态修改成非集群,从而达到数据不共享的目的。
问题一
环境准备:分别在本地启动两个注册中心(非集群方式),端口为8761和8762,启动一个config配置中心服务,注册到端口为8762的注册中心上。Pass-music服务通过读取config配置中心在svn上的配置文件中的注册地址的方式,注册到8762上。
1.修改pass-music使用的svn上的config配置文件application-dev中的注册中心地址的配置为8761
2.调用/actuator/refresh接口使修改的配置生效。
3.查看注册中心注册服务,pass-music服务已经被注册到了端口为8761的注册中心上了。
问题二:
环境准备:启动两个注册中心,端口分别为8761和8762,并相互注册形成集群。启动配置中心,并将其仅注册到端口为8762的注册中心上。
1.可以看到,由于eureka集群的同步复制功能,config服务已经被同步到8761为端口的注册中心上了。
2.修改注册中心8761、8762在svn上的配置文件中的注册地址的值为它本身(即非集群方式的配置)
3.调用/actuator/refresh接口刷新两个注册中心的配置使其生效
http://127.0.0.1:8762/actuator/refresh
http://127.0.0.1:8761/actuator/refresh
注意:eureka由于开启了安全认证,它的接口调用与普通服务略有不同,请求时需要通过Authorization设置账号和密码进行授权,不然会报错401。
4.间隔一两分钟(缓存原因),再去观察eureka面板发现,config服务已被8761的注册中心踢出。
- 再次修改配置、刷新,会发现config服务又被同步到端口8761的注册中心了。
以上,可以得出结论:
- eureka服务端可以通过结合config配置中心实现集群和非集群的动态切换。
- eureka客户端可以通过结合config配置中心实现注册地址的动态切换。