为了账号安全,请及时绑定邮箱和手机立即绑定

我们可以使用 Web-Sockets 在微服务之间进行通信吗?

我们可以使用 Web-Sockets 在微服务之间进行通信吗?

慕虎7371278 2022-06-04 17:39:44
我们有一个用例,我们有两个微服务,Microservice A将一个长时间运行的任务推送到Microservice B.Microservice B开始处理任务并不断更新任务的状态。现在Microservice A必须不断轮询Microservice B任务状态的更新。我们当前的设置中没有队列。因此,我们想到了创建一个web socketbetween Microservice A,Microservice B以便微服务 B 可以将状态更新推送到Microservice A. 这种设计是否会违反任何原则,Web sockets并且与持续轮询相比,它是否会是一种更好的方法?
查看完整描述

3 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

最推荐的选项是添加一个队列:

  • 这将减少微服务 A 和微服务 B 之间的耦合

  • 这将允许同样对任务状态/结果感兴趣的微服务 C 了解它,而无需对微服务 B 进行任何更改

如果你仍然选择 websocket,你将不得不考虑可扩展性的情况(如果你有两个 MicroserviceB 实例,调用哪个实例),失败(如果一个服务失败,谁重新运行套接字......),和其他一些人。这就是为什么它不是在微服务环境中进行异步调用的最佳选择。


查看完整回答
反对 回复 2022-06-04
?
DIEA

TA贡献1820条经验 获得超2个赞

如果你想走这条路——我建议更好的方法是转移焦点,这样你就有一个中央 websockets“服务器”,你的微服务直接相互连接。然后,您实际上是在复制所有其他架构如何做到这一点,无论是 RabbitMQ 还是 Kafka 等



查看完整回答
反对 回复 2022-06-04
?
弑天下

TA贡献1818条经验 获得超8个赞

Apache Pulsar 能够作为消息代理工作,并具有用于向主题发送消息和侦听主题的 WS 接口。我自己还没有尝试过……但我会测试使用它来发送和监听不同类型的微服务中的事件。Pulsar 本身是可扩展的,允许持久消息传递,例如可以在 Kubernetes 上安装和执行。但我只读过它......现在我必须自己尝试一下:)。



查看完整回答
反对 回复 2022-06-04
  • 3 回答
  • 0 关注
  • 217 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信