痛点1:本地服务过多,开发人员需要启动较多服务。
痛点2:本地服务希望能访问到测试环境的其他服务,但不希望自己的服务暴露给测试环境。
痛点3:本地多个连接到测试环境之后,希望本地多个服务之间通讯,访问其他服务去访问测试环境。
处理方案:
1.开发服务连接到测试环境的注册中心,并且设置本服务可以调用测试环境的服务,但是测试环境无法访问本地服务。
eureka:
instance:
hostname: my-service
client:
# 设置注册中心的其他服务无法访问自己的服务
registerWithEureka: false
# 可以调用注册中心中的其他服务
fetchRegistry: true
serviceUrl:
defaultZone: http://{测试环境ip}:8761/eureka/
2.第一步配置之后会。网关就无法访问其他的服务,所以网关需要设置某些服务固定访问本地
zuul:
routes:
my-service:
path: /my-service/**
url: http://localhost:9007/
3.其实单模块开发以及可以正常运行了。通过访问网关访问本地服务,如无配置则访问测试环境对应服务。但是还存在一个问题就是本地多服务之间希望能够联调,也就是能实现本地多服务之间的通讯。
(1)为feginClient设置url,默认为空从注册中心中获取,如果不为空则直接访问对应url
@FeignClient(value = "my-service", url = "${cl-cloud.fegin-client.my-service: }", fallback =XXX.class)
(2)在本地的配置环境中配置对应的url即可
cl-cloud:
fegin-client:
# 希望通过fegin直接访问而不是在注册中心中获取
my-service: http://localhost:9007/