Design slack channel

""" System design是design一个slack channel, 要求允许打开新会话(thread)。 如果要开的新thread 之前existing thread包括的参与者已经存在了 要reuse existing thread

(2) 设计一个在线聊天系统
要求是能多人组聊
(3) 设计面 设计聊天系统
基本需求

  1. 支持多人聊天 发送和查看消息 保留所有聊天记录
  2. 给定用户 列出参与的聊天小组(根据最新消息的时间排序 支持分页)
  3. 给定聊天小组 列出最近的聊天记录(根据消息发送时间排序 支持分页)
    扩展需求
  4. 支持实时聊天
  5. 支持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

Push/Pull :

你可能感兴趣的:(Design slack channel)