响应来自另一个机器节点js

时间:2017-03-16 11:48:38

标签: node.js http

情况: 负载均衡器说它后面有2台机器A和B.假设机器A通过负载平衡器从客户端接收请求,并将消息传递给消费者是微服务的队列。微服务完成其工作并发出json消息。此json消息将被发送回客户端。

目前的实施: 微服务将它创建的json消息发送回机器A和微服务之间的队列。服务器id在消息中传递给微服务,通过它可以知道将消息发布到哪个队列。所以基本上微服务和负载均衡器后面的每台机器之间都有队列。

问题: 随着流量的增加,机器的数量也在增加,微服务和机器之间的队列数也是如此。有没有办法回应机器A收到的机器B的请求?我不知道如何维护上下文。有人建议Redis,但有可能吗?

1 个答案:

答案 0 :(得分:0)

您似乎关心服务A和服务B之间的上下文,但是您决定使用某种分布式队列,您能详细说明您使用的是哪个队列实现吗? (也许是RabbitMQ?)

是否需要保持上下文?如果您可以重新构建应用程序,以便不需要保留上下文,或者您可以来回传递来自服务A和服务B的“上下文ID”,那么就没有必要将它强耦合,根据定义,为什么你想要微服务。

你可以不用解耦的方式水平缩放它们。

如果你仍然需要以同步的方式进行通信,那么排队可能不是一个简单的方法。

我建议在服务A和服务B之间使用某种RPC实现,看看gRPC,https://github.com/grpc/grpc.github.io/blob/master/docs/tutorials/basic/node.md,或者如果它过于复杂,你可以只拥有一个私有的基于HTTP的API,而不是两台机器和在集群内部进行通信。

祝你好运。