默认

IM消息ID技术专题(三):解密融云IM产品的聊天消息ID生成策略

查看数: 242047 | 评论数: 31 | 收藏 8
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2019-09-19 15:36

正文摘要:

本文来自融云技术团队原创分享,原文发布于“融云全球互联网通信云”公众号,原题《如何实现分布式场景下唯一 ID 生成?》,即时通讯网收录时有部分改动。 1、引言 对于IM应用来说,消息ID(或称序列号)是个看似 ...

评论

helloc 发表于 17 天前
引用:ZJoker 发表于 2022-11-04 22:56
有专门的ID发号器服务

文章没有提到额外的发号服务吧
helloc 发表于 18 天前
今天读完感觉怪,可能是我钻牛角尖了
假如同一个群聊的两条消息,在同一时间到达不同的两个消息服务,并且获取消息id,
那不就满足了时间相同,不自旋,会话类型和会话id相同了吗
然后得出一个重复的消息Id
helloc 发表于 24 天前
引用:穷屌丝2 发表于 2024-08-13 18:20
怎么个流程呢,是先不带id发送给服务端吗,服务端生成填充。那么客户端的消息没id,什么时候能给到他呢?

你可以看融云的另一个产品,服务端生成id后,通过ack的机制把消息id带回客户端
helloc 发表于 24 天前
引用:xiaoskery2 发表于 2023-08-21 15:40
会话类型+会话id一共只有22位,能表示的会话会不会太少了?冲突了怎么办?
像有匿名用户的场景,会不断的 ...

会话id不需要全局唯一吧,只要保证用户个人不重复就行,2的22次方有四百多万呢,一个客户怎么可能使用四百多万的会话
helloc 发表于 1 个月前
引用:JackJiang 发表于 2026-05-08 17:35
网页端你一样可以js代码去生成,规则一致即可

好的,谢谢Jack老师
JackJiang 发表于 1 个月前
引用:helloc 发表于 2026-05-08 17:07
emmm,客户端我理解,如果是网页端咋办呢

网页端你一样可以js代码去生成,规则一致即可
helloc 发表于 1 个月前
引用:JackJiang 发表于 2026-05-08 16:58
最方便的是办法:哪个端发出的消息就哪个端生成

emmm,客户端我理解,如果是网页端咋办呢
JackJiang 发表于 1 个月前
引用:helloc 发表于 2026-05-08 15:35
假如产品是多端的话,这些发号器是在哪个阶段给id生成给消息啊

最方便的是办法:哪个端发出的消息就哪个端生成
helloc 发表于 1 个月前
假如产品是多端的话,这些发号器是在哪个阶段给id生成给消息啊
mawl 发表于 1 年前
引用:JackJiang 发表于 2023-08-21 16:01
qq活了24年了,qq号现在才多少位。。。
先不说这22位能不能正的用完,假使真的会用完,我估计公司肯定比 ...

会话和qq号是不一样的,一个QQ号有N个会话
穷屌丝2 发表于 1 年前
引用:ZJoker 发表于 2022-11-04 22:56
有专门的ID发号器服务

怎么个流程呢,是先不带id发送给服务端吗,服务端生成填充。那么客户端的消息没id,什么时候能给到他呢?
游客 发表于 2 年前
6.取会话 ID 的低 16 位作为 lowBits
int lowBits = (sessionIdInt & 0xFFFF) << 16;
这一步有问题吧,2^16=65536,65536-1 转为16进制为: 0xFFFF,(sessionIdInt & 0xFFFF) 这个意思是先把sessionIdInt 中高于16位的都为0,然后左移16位,z 这样 sessionIdInt 就是32位了呀
JackJiang 发表于 2 年前
引用:xiaoskery2 发表于 2023-08-21 15:40
会话类型+会话id一共只有22位,能表示的会话会不会太少了?冲突了怎么办?
像有匿名用户的场景,会不断的 ...

qq活了24年了,qq号现在才多少位。。。
先不说这22位能不能正的用完,假使真的会用完,我估计公司肯定比这个id先走。。。
xiaoskery2 发表于 2 年前
会话类型+会话id一共只有22位,能表示的会话会不会太少了?冲突了怎么办?
像有匿名用户的场景,会不断的产生匿名账号,匿名账号每次都会产生新的会话id,时间长了会话id就不够用了。
JackJiang 发表于 3 年前
引用:HK意境 发表于 2023-02-10 21:18
这相当于是全局递增的是吧,不能做到会话级别递增吧

融云的是全局唯一
HK意境 发表于 3 年前
这相当于是全局递增的是吧,不能做到会话级别递增吧
zenggang 发表于 3 年前
集群模式如何确保ID不重复, 因为ID没有work_id 信息
ZJoker 发表于 3 年前
引用:林北lpepsi 发表于 2021-09-11 23:32
有个疑惑,ID生成是在哪里生成,是客户端每次要发送消息前,请求这个ID生成的服务嘛,然后把生成的ID加到消 ...

有专门的ID发号器服务
BrainWong 发表于 3 年前
想问一下,使用这个算法生成的id,是不是就不需要另外弄一个id生成服务了?
林北lpepsi 发表于 4 年前
有个疑惑,ID生成是在哪里生成,是客户端每次要发送消息前,请求这个ID生成的服务嘛,然后把生成的ID加到消息中发给服务器

返回顶部