查看: 2629| 回复: 1
跳转到指定楼层
上一主题 下一主题
收起左侧

[题目讨论] 求问Design Messenger 的Follow up 问题

全局:

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
各位大佬好。
面试中被要求设计 chart service/Messenger. 我回答了主要两点:
1st. Table stores connections.
2nd. Table stores unread messages(处理用户不在线的情况)

Follow up 很懵:
1st. 如果每个client 都有多个设备怎么办?(手机,电脑, ipad)
2nd. sender 如果要修改已经发生的消息如何处理?
3rd. 如何monitor 整个系统的正常运行。
请有经验的大佬指点。非常感谢

上一篇:问个web crawler的题
下一篇:推荐个不错的youtube视频讲system design
推荐
deltaZero 2020-8-10 09:52:25 | 只看该作者
全局:
就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
回复

使用道具 举报

无效楼层,该帖已经被删除
您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表