spring-cloud zone, 类似 dubbo group 功能

spring-cloud zone 本地开发使用

当我们使用spring-cloud微服务框架时(netflix eureka组合),有很多微服务程序。开发时,本地启动eureka并注册所有微服务,成本太高。
直接使用公共开发环境的eureka,确实省事。比如有A, B, C三个服务,A没有变化,B有修改,C有修改并调用B,此时本地不用启动A,只启动B和C就可以。
不过不注意又有个问题,C调用B时,有时候调用公共环境上B服务,甚至其他开发者启动的B服务。dubbo有group配置给服务分组解决此问题;对于spring-cloud,此时需要配置zone:

1
2
eureka.instance.metadataMap.zone: YOUR-NAME
eureka.client.preferSameZoneEureka: true

本地各个服务都配置zone且相同,各个开发者的zone不同,公共环境默认是defaultZone。然后,C调用B时,就不再混乱了,只调用本地的。(A服务则访问其他zone的)

刚接触spring-cloud时,不知道怎么解决这个问题,baidu或google搜spring-cloud中group功能也没有好答案。自己动手吧,写了个client继承LoadBalancerFeignClient,用@Configuration机制配置了下,忙活半天多,可以了。转念一想,不对啊,这个功能spring-cloud应该有啊,看看文档去吧。果不其然,确实有。犯了个错误:不看文档就瞎弄。使用xxx库或工具时,先看看xxx的官方文档,很有用!

参考