钉钉IM的实践挑战.pptx

钉钉IM系统的挑战与实践

万人群

历史消息回溯

高可用

万⼈群的规模

一万人参与的贝多芬第九号交响曲大合唱

为什么要做万⼈群

Ӥփӥᬡ

෈۸ୌᦡ

ي᪁ړՁ

מ௳Ӥփӥᬡ᭲᪠᭗኱

قާᗭฎմӱ෈۸ୌᦡጱԆᴣࣈ

ӻՈኞၚ̵ي᪁Իၞ

万⼈群的技术挑战

稳定

大群大量发消息,系统压力山大

体验

选人组件还能再慢点吗?发红包根本选不到人

2016

2018

2017

成本

成本

很多客户都想有个大群,能不能不要限制大群数量?

⼤群限流

热点大群限流

系统容量足够时,尽量允许大群发消息

消息属性

可见性

全员可见:所有人都可以看到消息

部分可见:部分人可见,其他人看不到消息

多态性

普通:每个人的消息状态完全相同

多态:每个人的消息状态不完全相同

发送者视角

接收者视角

写扩散模型

以用户维度建立消息收件箱

问题:万人群扩散量太大!

消息收件箱

用户id

会话id

消息id

状态

uid1

cid1

msgid1

status1

uid2

cid1

msgid1

status2

uid3

cid1

msgid1

status1

uid10000

cid1

msgid1

status1

读写扩散混合模型

95%以上是普通全员可见消息

相同的状态记录,合并至会话消息表

个性化状态仍然写入消息收件箱,读取时做合并

会话消息表

会话id

消息id

status

cid1

msgid1

sta

文档评论(0)

1亿VIP精品文档

相关文档