在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作为边缘网关的目的。
最后,我想我知道如何通过代码获得我想要的效果 - 只是想检查一下我是不是先重新发明轮子。
答案 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