我们有一个用例,其中有两个微服务,Microservice A
将长时间运行的任务推送到Microservice B
.
Microservice B
开始处理任务并不断更新任务的状态。现在Microservice A
必须不断轮询Microservice B
了解任务状态的更新。
我们当前的设置中没有队列。
所以,我们想到创建一个web socket
之间Microservice A
and Microservice B
这样微服务B就可以将状态更新推送到Microservice A
。此设计是否违反任何原则Web sockets
与持续轮询相比,这是否是一个更好的方法?
最推荐的选项是添加队列:
- 这将减少微服务 A 和微服务 B 之间的耦合
- 这将允许对任务状态/结果感兴趣的微服务 C 知道它,而无需对微服务 B 进行任何更改
如果您仍然选择 websocket,则必须考虑可扩展性的情况(如果您有两个 MicroserviceB 实例,调用哪一个怎么办)、故障(如果一个服务失败怎么办,谁重新运行套接字……),和其他一些。这就是为什么它不是在微服务环境中执行异步调用的最佳选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)