群消息这么复杂,怎么能做到不丢不重?

  1. 云栖社区>
  2. 阿里云MVP>
  3. 博客>
  4. 正文

群消息这么复杂,怎么能做到不丢不重?

子夜初商南 2019-08-14 00:53:42 浏览126
展开阅读全文

【需求缘起】

群聊是多人社交的基本诉求,不管是QQ群,还是微信群,一个群友在群内发了一条消息:

(1)在线的群友能第一时间收到消息

(2)离线的群友能在登陆后收到消息

由于“消息风暴扩散系数”的存在(概念详见《QQ状态同步究竟是推还是拉?》),群消息的复杂度要远高于单对单消息。群消息的实时性,可达性,离线消息是今天将要讨论的核心话题。

【常见的群消息流程】

开始讲群消息投递流程之前,先介绍两个群业务的核心数据结构:

群成员表:用来描述一个群里有多少成员

t_group_users(group_id, user_id)

群离线消息表:用来描述一个群成员的离线消息

t_offine_msgs(user_id, group_id, sender_id,time, msg_id, msg_detail)

业务场景举例:

(1)一个群中有x,A,B,C,D共5个成

网友评论

登录后评论
0/500
评论
子夜初商南
+ 关注
所属云栖号: 阿里云MVP