我有一个用例,我使用2个运行.NET Rest API的pod(容器)。Rest API是使用 Saga 模式开发的,因此http请求通常使用RabbitMQ消息通过不同的微服务。由于pod共享相同的消息队列名称,因此可能会发生消息被不同的pod接受的情况。
问:有没有办法从没有收到http请求消息的pod发送响应?http上下文是否只在原始pod中需要响应?是否可以共享?
我已经试过上面描述的方法了,但是API根本不发送响应。即使它成功了,客户端也会以超时结束。
我有一个用例,我使用2个运行.NET Rest API的pod(容器)。Rest API是使用 Saga 模式开发的,因此http请求通常使用RabbitMQ消息通过不同的微服务。由于pod共享相同的消息队列名称,因此可能会发生消息被不同的pod接受的情况。
问:有没有办法从没有收到http请求消息的pod发送响应?http上下文是否只在原始pod中需要响应?是否可以共享?
我已经试过上面描述的方法了,但是API根本不发送响应。即使它成功了,客户端也会以超时结束。
1条答案
按热度按时间pjngdqdw1#
无法从最初未接收到HTTP请求的pod发送响应,但您可以使用服务网格(如Istio)来管理pod之间的通信。
在这种情况下,您可以配置服务网格以基于某些规则将请求路由到特定的pod,并允许pod彼此通信,或者您可以通过反向代理或负载平衡器在pod之间共享数据,反向代理或负载平衡器可以接收传入请求并确定哪个pod应该处理该请求,然后处理该请求的pod可以生成响应并将其发送回中间组件。它会将响应转发回客户端。您也可以浏览分布式数据存储。
请检查此Document