默认
打赏 发表评论 25
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
引用:yqfclid 发表于 2023-01-07 15:20
同步服务按接收者维度写入各自的同步队列,同时查取当前用户设备在线状态,当用户在线时捞取队列中未同步的 ...

多级缓存:本地缓存
签名: im从业10年以上,欢迎切磋![url=http://www.52im.net/static/image/smiley/default/handshake.gif]http://www.52im.net/static/image/smiley/default/handshake
评论 25
引用:天神佑护 发表于 2022-10-08 01:27
不懂就问,请教:4.2 中所指钉钉使用的异步消息队列和同步消息队列分别是什么产品呀?RocketMQ? Kafka? Pul ...

很显然是 rocketmq 自己的产品
rocketmq 有自己的特性,其他mq没有
签名: im从业10年以上,欢迎切磋![url=http://www.52im.net/static/image/smiley/default/handshake.gif]http://www.52im.net/static/image/smiley/default/handshake
引用:JackJiang 发表于 2022-08-22 22:19
其实说到扩散写和扩散写,主要讨论的是群聊,群聊肯定会有一份全量消息存储。而针对每个端的记录,应该不 ...

但看文档的图说的数据模型例子:
确实同步这里不仅保存了位点,而且保存了消息; 但是 不一定全量,比如可以最多保存2000条的队列大小
签名: im从业10年以上,欢迎切磋![url=http://www.52im.net/static/image/smiley/default/handshake.gif]http://www.52im.net/static/image/smiley/default/handshake
引用:mayongjian 发表于 2022-09-04 20:09
因为人和会话都是元数据,数据规模有限,消息数据近乎无限,消息归属于会话,会话与会话之间并无交集,消息 ...

业务单元服务-直接跟各个接入层按需对接:
客户端A -->接入层--> 根据会话直接对接: 单元A 单元B,单元C ,根据业务路由获取,不用跨单元调用

其实就跟单元调用之间没什么关系了
签名: im从业10年以上,欢迎切磋![url=http://www.52im.net/static/image/smiley/default/handshake.gif]http://www.52im.net/static/image/smiley/default/handshake
引用:espen 发表于 2022-08-22 19:56
有个问题点,想请教下:

在4.3中,提到钉钉的消息存储使用的是消息读扩散+写扩散的方式,群内普通消息写 ...

这种设计明显是后期补的漏洞,完全推的思路,后期发现问题了,再补充。我们早期也是推,结果经常把客户端推死,异常不太靠谱。
这里在线的时候:可以理解为每个用户有个队列 uid~msg1,msg 10,...,挨个的推下去;
离线变在线,也推,只是太多超过阀值2000条,则推条最新的让客户端来拉最新的,这里没有说清楚,其实应该拉 什么呢?那么多会话
签名: im从业10年以上,欢迎切磋![url=http://www.52im.net/static/image/smiley/default/handshake.gif]http://www.52im.net/static/image/smiley/default/handshake
引用:yqfclid 发表于 2022-08-31 16:58
DTIM 采用了会话维度划分:因为人和会话都是元数据,数据规模有限,消息数据近乎无限,消息归属于会话,会 ...

拉消息肯定有个应用服务来聚合下。
签名: im从业10年以上,欢迎切磋![url=http://www.52im.net/static/image/smiley/default/handshake.gif]http://www.52im.net/static/image/smiley/default/handshake
引用:yqfclid 发表于 2022-08-31 16:58
DTIM 采用了会话维度划分:因为人和会话都是元数据,数据规模有限,消息数据近乎无限,消息归属于会话,会 ...

消息肯定跨单元路由的;
在线状态,同步到不同的中心。推送给用户时,查询状态是否在线。

签名: im从业10年以上,欢迎切磋![url=http://www.52im.net/static/image/smiley/default/handshake.gif]http://www.52im.net/static/image/smiley/default/handshake
引用:JackJiang 发表于 2022-08-18 21:59
这篇文章是目前为止,有关钉钉的最有价值技术干货,有兴趣的,一定读一读!

签名: im从业10年以上,欢迎切磋![url=http://www.52im.net/static/image/smiley/default/handshake.gif]http://www.52im.net/static/image/smiley/default/handshake
引用:JackJiang 发表于 2022-08-23 10:34
嗯嗯,关键是要动手实践,光看看的话,很快就忘记了

确实要动手;反推他们的实现,然后画成完整的图逻辑,自圆其说也是可以的.
签名: im从业10年以上,欢迎切磋![url=http://www.52im.net/static/image/smiley/default/handshake.gif]http://www.52im.net/static/image/smiley/default/handshake
一说: 当消息进入Receiver之后,会先查询此cid:1001所在的单元,发现是Unit A,路由框架将请求转到A单元,消息在A单元持久化并通过A单元的同步协议,将数据推送到客户端
二说: Processor 消费到 IM 发送事件首先做按接收者的地域分布(DTIM 支持跨域部署, Geography,Geo)做消息事件分流
上面说的是会话路由,下面说的是消息同步分流? @JackJiang 请教站长
签名: im从业10年以上,欢迎切磋![url=http://www.52im.net/static/image/smiley/default/handshake.gif]http://www.52im.net/static/image/smiley/default/handshake
引用:yqfclid 发表于 2022-08-31 16:58
DTIM 采用了会话维度划分:因为人和会话都是元数据,数据规模有限,消息数据近乎无限,消息归属于会话,会 ...

这里应该是,把消息推送到 用户所在单元同步服务;同步服务推送时,根据是否在线来确定.
签名: im从业10年以上,欢迎切磋![url=http://www.52im.net/static/image/smiley/default/handshake.gif]http://www.52im.net/static/image/smiley/default/handshake
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部