涡轮流双端口绑定问题

Turbine stream double port binding issue

我正在使用 Spring Boot 1.5.4 和 Spring Cloud Dalston SR4 在 Cloud Foundry 上建立 Turbine 服务器并聚合我的应用程序 Hystrix 流。另外我想添加 Spring Boot Actuator 监控和管理到 Turbine 服务器。我意识到有足够的文档说明如何在本地环境中执行此操作,并且我确实在本地运行了它。但是,当部署到 Cloud Foundry 时,我无法在 Url 绑定中使用端口号。

问题是涡轮流由一个端口上的 RxNetty 服务器提供,而执行器端点由另一个端口上的 Tomcat 提供。在 Cloud Foundry 中,我只能将 Url 绑定到 RxNetty 端点或 Tomcat 端点,不能同时绑定两者。

management.port 和 turbine.stream.port 的任何组合都不允许我从一个主机绑定访问涡轮流和执行器端点。以下是我希望能够执行的操作的示例:-

https://myapp.mydomain.com/info(报告执行器信息详情) https://myapp.mydomain.com/turbine.stream(流式涡轮机指标)

注意:这些Url中没有端口号。

对您在 Cloud Foundry 上的应用程序的请求通过 Cloud Foundry Go 路由器,它使用 http 主机 header 将流量定向到所有容器实例 运行 您的应用程序。基于 http 的 gorouter expecter 只有一个端口被应用程序打开以转发 http 流量。但是,gorouter 还支持 tcp 路由,这应该允许您打开多个端口。有关 cloud foundry 上 tcp 与 http 路由的说明,请参阅docs

如果您 运行 使用 Pivotal Cloud Foundry,则可以使用 Spring Cloud Serviecs 为 PCF 提供的断路器仪表板,然后您无需设置涡轮流。 Spring 云服务仪表板使用 RabbitMQ 而不是 SSE 事件,请参阅 SCS docs 了解详细信息

现在回到这个话题。正如 spencer gibb 所指出的,迁移到 spring boot 2.0 和 cloud Finchley 是可行的。