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

默认
发表评论 1
想开发IM:买成品怕坑?租第3方怕贵?找开源自已撸?尽量别走弯路了... 找站长给点建议
求教IM系统中,暂存于kafka的离线消息如果不能及时消费并存DB时
在思考一个问题,我们现在对离线消息的处理是,如果用户不在线,就把这条消息写入到kafka里,然后再消费存储到db中。但是万一离线用户登录的时候,kafka里的消息没有来得及消费到db中,这里用户从db获取离线消息就会获取不到,这不就会造成了消息延迟了嘛。或者是有没有必要把离线消息写入kafka中,直接写入db就好,这两种方法有啥优劣,请大家赐教

即时通讯网 - 即时通讯开发者社区! 来源: - 即时通讯开发者社区!

上一篇:[已回复] 求助iOS接入MobileIMSDK,发消息时连接会断开的问题下一篇:跟着源码学IM(十):基于Netty,搭建高性能IM集群(含技术思路+源码)
推荐方案
评论 1
离线消息用MQ解偶是肯定有好处的:
1)可以在高并发时销峰去谷(这是高负载系统的典型作法);
2)可以让im实例跟离线处理逻辑进行解偶,很方便进行分布式扩展(比如搞成自动管理的微服务);
3)可以让高性能的im实例跟慢io的DB操作进行解偶(其实就是第1)点的作用。

总之,你的方向是没错的,具体有延迟什么的,可以针对性优化,理论上的绝对及时肯定是作不到的,好在im这种场景,极端情况下的延迟也没什么大不了,如果消息有顺序id,下次拉取到时再自动插到当前的消息之前,也是没有什么问题的,做im可以多从产品的角度考虑问题,没有必要钻技术的牛角尖的。
签名: 《Protobuf到底比JSON快几倍?全方位实测!》http://www.52im.net/thread-4095-1-1.html
打赏楼主 ×
使用微信打赏! 使用支付宝打赏!

返回顶部