我在使用端口8004的python中有一个应用程序,该应用程序具有端点。我需要将其集成到微服务平台中,该平台具有Eureka发现服务器端口8001,Spring Boot Admin端口8002,网关端口80。网关使用Zuul代理,并将请求转发到所需的服务。

我有两个选择:


更改我的python-app的代码,以便它可以具有Spring Cloud服务的端点
或者使用Spring Cloud Sidecar-实现了这些端点。
https://cloud.spring.io/spring-cloud-netflix/multi/multi__polyglot_support_with_sidecar.html


我决定要搭便车。 Sidecar端口8003,python-app端口8004。@EnableSidecar批注+ @EnableDiscoveryClient-和魔术。然后,我需要添加网关配置以将请求转发到python-service。而且我需要对Sidecar Zuul Proxy进行配置,因此它将请求转发到python应用程序。

网关端口80-> sidecar端口8003-> python-app端口8004。

美丽,而且有效。当我打开Eureka Web-ui时,所有服务都在那里。当我打开Spring Boot Admin UI时,它说python-service(它的sidecar)关闭了。

Spring Boot Admin客户端(在sidecar端进行配置),其端口为28003,因此与sidecar不同。

management:
  server:
    port: 18003
  endpoints:
    web:
      exposure:
        include: '*'
  endpoint:
    health:
      show-details: ALWAYS


我用@EnableZuulProxy替换了@EnableSidecar。现在一切正常,并且在Spring Boot Admin中可见python-app。

我的两个问题:


如果默认情况下Sidecar不需要断路器,为什么@EnableSidecar具有@EnableCircuitBreaker?如果有一个sidecar实例和多个python-service实例,这是有道理的。我有1:1-一台Sidecar和一台python-app。如果无法使用python应用,则sidecar应该返回错误。我不需要断路器吗?还是我
为什么注释@EnableSidecar影响Spring Boot客户端,所以它不会显示在Spring Boot Admin UI上。我认为有一个错误,或者我该如何在Spring Boot Admin Web-ui中启用对sidecar的监视。


Spring Boot版本是2.0.7,Spring Cloud版本是2.0.0

最佳答案

Sidecar不应将请求代理到非jvm服务中。它使用java eu​​reka客户端代表非jvm服务进行注册。然后,非jvm服务可以使用Sidecar中的嵌入式zuul向其他服务发出请求。不需要知道eureka,hystrix(断路器)或功能区(客户端负载平衡器),但这是可选的。

09-04 10:52