[Whatsapp] Message queue如何中转,Websocket server为什么独立

  1. 请问message queue在接收到信息以后,负责发送信息的message service是怎么知道这个queue现在有信息了呢?是单独需要写额外的业务逻辑还是说message queue有什么自动通知的功能?

  2. 我看有同学问了类似问题,就是websocket server单独划分出来的好处是什么?websocket这里本身没什么复杂逻辑,把它合并到message service里,就算用户数量多了,和message service一起scale(因为合并了),这样维护容易一些不好吗?

  1. message queue 会向 message service push。这是 message queue 的功能,比如 RabbitMQ 就是这样的。
  2. 不要合并,因为 websocket scaling pattern 和 msg service scaling 是不一样的,websocket 要单纯得多。msg service scale 跟消息的发送方式还有关,比如群发。microservice architecture 思路就是把不相关的业务分到不同的机器。

哦哦,谢谢!问一个和这个推送相关的问题,我有一个处理job的服务,就叫worker service吧,有若干个instance。如果我需要实时monitor所有的worker service的job进度(所有的进度都显示在同一个页面上),有什么比较合适的架构吗?

请看图示:

clarify一下 - 我想问问除了用message queue还有没有别的方法,比如也许用一个cache来存储job id和他们的状态,然后把他中专到monitor service,但是cache好像是不能push的吧?我也考虑过每个Monitor service就直接websocket连接到所有的worker service,但是这又涉及到worker service注册问题。

没有其他选择,就是用 message queue,这个场景是经典的 message queue 应用。就像你说的,Cache 不能 push;Monitor service 和 worker service 直接传递信息的话,如果服务数量变了很难维护。

1 个赞