一 背景
某些情况下我们的业务服务在开发环境查询时无数据,此时如果想让开发环境临时调用生产的某个业务服务获取数据,如果你们用的是eureka,你会发现会比较麻烦。
也许此时我们会考虑到用listOfServers,但是正常情况下用listOfServers是需要把eureka给disabled掉,而用了eureka再配置了listOfServers就有可能不生效。看起来的感觉就是两者只能选择其一。
二 配置
仅适用listOfServers的情况配置如下
下面是把eureka给禁用了,并且指定了xxx-server服务的ribbon负载均衡的服务器地址1
2
3
4
5
6
7eureka:
client:
register-with-eureka: false
fetch-registry: false
ribbon.eureka.enabled: false
xxx-server.ribbon.listOfServers: 192.168.90.221:8080
保留eureka不禁用的前提下我们如何指定某些服务的ribbon负载均衡的地址,具体配置如下
通过添加以下配置,可以单独指定某些服务不使用eureka拉取下拉的服务地址列表做负载均衡,而是用自己配置里专门指定的地址。1
2
3
4
5
6
7# 此处缺省了Eureka的配置 ....
# <client> 替换为具体的服务
<client>.ribbon.listOfServers: 192.168.90.221:8080
<client>.ribbon.NIWSServerListClassName: com.netflix.loadbalancer.ConfigurationBasedServerList
<client>.ribbon.NFLoadBalancerClassName: com.netflix.loadbalancer.ZoneAwareLoadBalancer
<client>.ribbon.NFLoadBalancerRuleClassName: com.netflix.loadbalancer.AvailabilityFilteringRule
<client>.ribbon.NFLoadBalancerPingClassName: com.netflix.loadbalancer.DummyPing
三 总结
虽然,通过以上的方式,可能巧妙的给某些服务指定地址,但是,此举是比较危险的,一般都不建议这么做,如果开发环境的服务,指向了生产并且涉及到更新等操作,可能会不小心把生产的数据给改了,导致出现一些生产故障。除非某些特殊情况,仅仅是用到了查询,而且在开发环境很难造出生产的数据的情况也许可以临时这么干。