B站消息新架构升级
IM 系统基础IM
先思考两个问题
- 技术上数据量越大,降级概率越大,但消息业务场景上数据量大的是影响力更大的UP,业务不接受技术降级,如何破?
- 如果消息流量增加10倍,怎么保障服务不挂?
1. 现状
业务解读

按业务全域现状,在服务端角度分成客服系统、系统通知、互动通知和私信4个业务线,每个业务线内按现状标识了服务分层。私信内分为用户单聊、bToC的批量私信、群聊和应援团小助手四类,这四类细分私信没有技术解耦,单聊和批量私信比较接近系统天花板。

私信单聊发送到触达的pv转化和uv转化不足10%,有明显通过业务优化提升触达率的潜力。
技术解读
私信域内的几个概念解释:
- 会话列表:按聊天人排序的列表。即B站首页右上角信封一跳后看到的历史聊天人列表,以及点击未关注人等折叠会话看到的同属一类的聊天人列表。传达对方账号、最新私信和未读数的信息。点击一个会话后看到的是对聊历史,也称会话历史。
- 会话详情:描述和一个聊天人会话状态的原子概念,包括接收人uid、发送人uid、未读数、会话状态、会话排序位置等。
- 会话历史:按时间线对发送内容排序的列表。一份单聊会话历史既属于自己,也属于另一个和自己的聊天的人。群聊的会话历史属于该群,不属于某个成员。会话历史是收件箱和消息内容合并后的结果。
- 收件箱:将一次发送的时序位置映射到发送内容唯一id的kv存储,可以让服务端按时间序读取一批发送内容唯一id。
- 私信内容:一个包括发送内容唯一id、原始输入内容、消息状态的原子概念。批量私信把同一个发送内容唯一id写入每个收信人的收件箱里。