请选择 进入手机版 | 继续访问电脑版

默认
打赏 发表评论 30
引用:weixiaoyao 发表于 2018-12-27 17:55
群聊时当多个发送者A,B都发送群消息时,服务端序列方式也无法保证多个发送者的消息序列,假设A先发,B后发 ...

im这种产品很讲究现实情况。

我们回归到现实:假设你现在正在一个QQ群里,一般正常的群聊,大家都是你一句我一句,按打字速度,和大家的理解速度,再频繁的聊天,基本上都是几秒才出现一条,且很有规律,因为对话总是你一句我一句。这种情况下,每条消息的间隔,至少有几秒钟,按照服务器的处理效率来说,本身也比较难以出现后一条消息先于前一条送达。

你可能坚持认为,肯定会存在消息一条接一条,而且间隔极短,那不就有很大几率出现了吗?但:那就是如果是这样情况,那还是聊天吗?不可能这个在收到那个人发出的消息瞬间就发出了自已的消息,因为他需要理解时间、需要打字时间。你可能还坚持说,肯定有这种情况,但换个思路想想,极短的时间内群内出现大量消息,那不这就是刷屏吗,哪还是聊天?既然是刷屏消息,它到底有没有乱序,你怎么判断的出来?或者有什么意义要判断出来?

所以。我的个人观点是,群聊消息顺序这种事情要想保证理论上的绝对正确,难度很高,但回归现实,这种问题可以很简单的处理,不需要纠结绝对的理论。

评分

1

查看评分

签名: 《面试必考,史上最通俗大小端字节序详解》http://www.52im.net/thread-3101-1-1.html
学习了,不过要做到全一致性真的很困难
签名: sdfs
引用:shi553210541 发表于 2019-09-11 11:23
学习了,不过要做到全一致性真的很困难

允许万有一失
签名: 《面试必考,史上最通俗大小端字节序详解》http://www.52im.net/thread-3101-1-1.html
沈剑老师,给力啊
签名: now start 。。。
这篇很赞!我们目前是读扩展的timeline模型,群聊和单聊统一,都是严格单调递增的position标记消息,用mysql分片表事务保证position的原子性
是每个会话都要有一组唯一的seq么?
引用:916422 发表于 2020-05-20 10:37
是每个会话都要有一组唯一的seq么?

会话间不一定要唯一,但会话内一定要唯一
签名: 《面试必考,史上最通俗大小端字节序详解》http://www.52im.net/thread-3101-1-1.html
签名: 的 哈啊哈哈哈
引用:JackJiang 发表于 2020-05-20 13:36
会话间不一定要唯一,但会话内一定要唯一

可能我没描述清楚,是每个会话都要生成独有seq空间么?
引用:916422 发表于 2020-05-21 16:42
可能我没描述清楚,是每个会话都要生成独有seq空间么?

理论上是的
签名: 《面试必考,史上最通俗大小端字节序详解》http://www.52im.net/thread-3101-1-1.html
不错的文章
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部