中级农民
- 积分
- 102
- 大米
- 颗
- 鳄梨
- 个
- 水井
- 尺
- 蓝莓
- 颗
- 萝卜
- 根
- 小米
- 粒
- 学分
- 个
- 注册时间
- 2020-5-15
- 最后登录
- 1970-1-1
|
就FOLLOW UP说下我的看法。
1st. 如果每个client 都有多个设备怎么办?(手机,电脑, ipad)
>> 多设备往往都是通过server同步。每个客户端存一个变量cur_max_id。如果SERVER存在比客户端ID还大的MESSAGE,说明有新信息。我写过一个多端实现的设计,具体可以看这里:“Message synchronization across multiple devices”https://systeminterview.com/design-a-chat-system.php
2nd. sender 如果要修改已经发生的消息如何处理?
>>这个问题看起来比较open ended.因为消息一旦发出去,就没有可能完全消除。比如说消息接收端还是有可能从push notification看到以前的消息。具体怎么设计得看use case.比如,需要存储不同的message version吗?还是直接换成最新的消息就可以了?如果是直接的替换,比如用户A改了 message_from_a。那么用户A会告诉SERVER。然后SERVER把新的消息传给用户B,那么用户B就可以更新message的内容了。
3rd. 如何monitor 整个系统的正常运行。
>>Monitoring往往可以分会single host level monitoring 和monitoring the whole web server tier, cache tier, database tier, etc. 市场上有很多tools可以integrate. 聊天系统和客户端往往通过websocket连接,所以efficient connection management非常重要。
我以前写过比较详细的聊天系统设计,如果感兴趣的话可以看一下。https://systeminterview.com/design-a-chat-system.php
|
|