""" System design是design一个slack channel, 要求允许打开新会话(thread)。 如果要开的新thread 之前existing thread包括的参与者已经存在了 要reuse existing thread
(2) 设计一个在线聊天系统
要求是能多人组聊
(3) 设计面 设计聊天系统
基本需求
- 支持多人聊天 发送和查看消息 保留所有聊天记录
- 给定用户 列出参与的聊天小组(根据最新消息的时间排序 支持分页)
- 给定聊天小组 列出最近的聊天记录(根据消息发送时间排序 支持分页)
扩展需求 - 支持实时聊天
- 支持FB Scale
(4) 设计airbnb messaging inbox,先算Load,然后讨论了数据库怎么设计,聊了一些group chat是如何设计的。schema改了一些,这轮还可以,工作有几年了,虽然没做过聊天系统,但是点基本都可以答出来。
"""
Scenario:
支持多人聊天
显示用户参加的聊天小组,显示最近的聊天记录
Service
Message Service (send message, receive message every 10 seconds)
Channel service (keep a record who is actively online and push to them)
Real time service (push message to user who are online)
Data model
Thread Table: Thread_id, owner_id, participant_ids, last_updated_at, last_read_at
Message Table: Message_id, Thread_id, sender_id, content, timeStamp
User table: user_id, user_info,
scale
Sharding: thread 按 user_id sharding, message 按thread sharing
网友评论