spring cloud netflix服务通过zuul服务

时间:2018-01-25 07:05:57

标签: spring-cloud spring-cloud-netflix

在spring-cloud-netflix设置中(一切都使用feign,ribbon,eureka,zuul),对于CompositeAB,是否有任何简单/优雅/开箱即用的方式(即基于serviceId vs URL的发现)通过Zuul与ServiceA和ServiceB沟通?在我见过的所有示例中,CompositeAB直接发现并调用ServiceA,而不是通过Zuul路由调用ServiceA。

换句话说,如果ServiceA在Eureka中注册为service-a,那么自动创建的Zuul服务代理是以任何可发现的方式在Eureka中公开的吗?

对于真实环境,这涉及网络拓扑和防火墙(CompositeAB和ServiceA之间没有直接路由 - 一切都需要通过网关)。在CompositeAB中使用URL并不可怕,但似乎打败了注册表存在的目的(理想情况下,Zuul会将服务代理注册为a" zuul-service-a" in注册表)。也就是说,我确实知道这个特殊用例并不能真正适合Zuul作为边缘网关的目的。

最后,我我知道如何通过代码获得我想要的效果 - 只是想检查一下我是不是先重新发明轮子。

1 个答案:

答案 0 :(得分:0)

确保您的Zuul代理正在注册Eureka并获取注册表。任何在eureka注册的服务都会获得一条路线。

您不必允许通过代理访问注册到eureka的所有服务。

Zuul代理的示例application.yml,它只允许service-a和service-b:

eureka:
  client:
    fetchRegistry: true

zuul:
  add-proxy-headers: true
  ignored-services: "*"
  routes:
    service-a:
      serviceId: service-a
    service-b:
      serviceId: service-b