老师,
你第二节课,上课的内容挺不错, 不过据我之前的部分经验, Messenger System 主要还有两个tricky的地方. 如果一些面试官做过类似项目的话,涉及到这些follow up深挖的话,可能会涉及到。 您是否能帮助分析一下,这两个方面对课上的设计有没有影响
- Guarrentee delivery
据我了解即便client和server 保持了双通道链接,但是ws在实现方面做了取舍,也就说是server是不能够保证client能够Guarrentee delivery。如果在consistency这一块有很高的要求要确保消息deliver,对课上的设计是否有影响。
我目前能想到的思路是类似于你课上提到的,在client和server直接通信 不直接用裸websocket, 用MQTT protocal over websocket,或者decouple 通信这一块,直接用亚麻aws IOT + MQTT 或者azure 的iot, MQTT 用它的 QoS level 1, At least once delivery 。
您觉得如何? 不过, 它具体实现的原理是怎么样的,我一直没搞明白,能否讲讲或者有比较好的资料
- Scale out
websocket的优点很明显,缺点也很鲜明,就是client只和一台server node保持长连接,那么等有新消息或者更新的时候,系统如何找到对应的server node来进行投递消息或者 pub sub 通知 呢? 或者系统如何能广播通知到其他server nodes的对应的 target client/clients 呢?
我目前能想到的思路是 利用distributed message queue 或者redis的pub sub 在server nodes 之间 同步, 您觉得如何?
这对我们课上的设计有没用影响,还是说我们课上的queue已经是distributed 能够通知到对应的node?
感谢!