文档章节

IM的群组消息同步具体设计

通九互联科技
 通九互联科技
发布于 2015/07/14 11:38
字数 421
阅读 447
收藏 2

上一篇Blog我提到过,每一个Channel都有一个自己的leveldb做缓存。同时,有位朋友建议我不要用缓存,经过思考后,我依然决定使用缓存。我为什么要这么做呢。

如上面图的场景,一个Sender,两个Reciver。其中一个Reciver是一个一直在线的用户,而另一个Reciver是一个因为某种原因离线了一小段的用。在途中Channel中的K为键而V为数据。

我们可以按照2个主要情况分析:

  1. Reciver是暂时离线有同步Key。

  2. Reciver全新加入一个Channel无同步Key。

对于第一种情况:

我们可以快速的将用户同步到K:SeqN-1处,如果Sender在这个时候发送数据,那么这个用户用K:SeqN-1再次同步Channel消息的时候就会发现K:SeqN的存在。

对于第二种情况:

按照小时切分数据,我们很容易计算出当前小时区间,同时我们知道小时队列中有多少数据。我们可以快速的给出最后N-1条数据,并将用户同步到K:SeqN-1。如果用户要翻看前面的历史,我们同样可以使用K:Seq1向前同步。


那么这么做的好处是什么,就是所有群组中的用户看到的消息顺序是一致的,而非像QQ群组那样,偶尔出现,某个人和群组中所有人的消息顺序不一致的问题。

模型简单实现https://github.com/DavidAlphaFox/mm_channel



© 著作权归作者所有

下一篇: IM的群组设计
通九互联科技

通九互联科技

粉丝 133
博文 37
码字总数 21775
作品 1
大连
个人站长
私信 提问
加载中

评论(2)

通九互联科技
通九互联科技 博主

引用来自“风清扬1987”的评论

技术大拿!!!!!!!!!
抄微信的而已
风清扬1987
技术大拿!!!!!!!!!
如何快速开发一个IM系统? | 技术贴

云妹导读: 本文将会给大家介绍如何开发一个简单的即时通讯系统(IM)。Timeline 模型是 TableStore团队针对消息数据场景所新创的一个数据模型,它的特色在于能够满足消息数据场景对消息保序、...

阿里云科技快讯
2018/08/20
0
0
TableStore Timeline:轻松构建千万级IM和Feed流系统

场景 移动互联网时代,微信和微博已经成为这个时代的两大支柱类社交应用。 这两类应用,其中一个是IM产品,一个是Feed流产品,微信的朋友圈也属于Feed流。 如果再细心去发现,会发现基本所有...

少强
2017/12/27
0
0
Android P正式版即将到来:后台应用保活、消息推送的真正噩梦

1、前言 对于广大Android开发者来说,Android O(即Android 8.0)还没玩热,Andriod P(即Andriod 9.0)又要来了。 下图上谷歌官方公布的Android P发布路线图: Android P的最后一个开发者预...

JackJiang2011
2018/08/02
0
0
Android P正式版即将到来:后台应用保活、消息推送的真正噩梦

1、前言 对于广大Android开发者来说,Android O(即Android 8.0)还没玩热,Andriod P(即Andriod 9.0)又要来了。 下图上谷歌官方公布的Android P发布路线图: Android P的最后一个开发者预...

首席大胸器
2018/08/02
842
0
恩布企业IM 1.7 版本,企业内部通讯平台

恩布企业IM,开源企业IM,免费企业即时通讯,企业内部通讯平台,Entboost发布v1.7版本,主要版本更新内容: 增加实现一个帐号能同时登录PC和手机客户端,支持聊天内容同步显示功能; 增加离线...

akee
2014/12/08
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

对比ubuntu与centos系统 ​​​​

CentOS与Ubuntu该如何选择,哪个更好用。笔者在自媒体平台收集了一些网友的观点,较为经典,分享给大家。至于应该选择哪个,希望看完本文章后,读者心中有数。 观点1:CentOS适用于服务器,U...

老孟的Linux私房菜
今天
13
0
Java的基本类型

一、Java的基本类型 Java的基本类型有哪些? boolean char byte short int long float double ? 延伸思考 思考一:为什么有的书籍说Java存在第9种数据类型? 实际上,JAVA中还存在另外一种基...

yumoop
今天
14
0
OSChina 周四乱弹 —— 富婆小时候

Osc乱弹歌单(2019)请戳(这里) 【今日歌曲】 @猿敲月下码 :#今日歌曲推荐# 分享陈慧娴的单曲《夜机》 《夜机》- 陈慧娴 手机党少年们想听歌,请使劲儿戳(这里) @開源中國張學友 :早上...

小小编辑
今天
26
0
MyMinimad ── Linux下用libmad写的mp3解码播放程序(四)

优化了内存使用,不再使用mmap映射整个文件到内存 /* * 本程序是从 minimad 改进而来,如要更详细的说明请参看 minimad.c * * Gu Zhou, 2009/12/25, SiChuan University, China *...

代码强国
今天
18
0
Minikube安装

1、下载Minikube二进制文件 sudo curl -Lo minikube https://kubernetes.oss-cn-hangzhou.aliyuncs.com/minikube/releases/latest/minikube-linux-amd64 2、设置权限 sudo chmod +x minikube......

RogueQ
今天
11
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部