本文引用了45岁老架构师尼恩的技术分享,即时通讯网有修订和重新排版。
1.png (76.29 KB, 下载次数: 18)
下载附件 保存到相册
9 天前 上传
你说:“1 吃饭了吗?” 他回:“2 刚吃完。” 你又说:“3 吃啥呢?”
“3 吃啥呢?” → “1 吃饭了吗?” → “2 刚吃完。”
String sessionId = msg.getSessionId(); //这里是伪代码,实际代码以mq 的负载均衡机制为准 int nodeIndex = Math.abs(sessionId.hashCode()) % clusterNodeCount; //这里写个伪代码,代表mq 主从复制 ClusterNode targetNode = clusterNodes.get(nodeIndex); targetNode.sendMsg(msg);
long msgSeq = redis.incr("msg_seq_" + sessionId); msg.setSeq(msgSeq); msg.setUniqueKey(sessionId + "_" + msgSeq);
如果你的 Redis 是集群模式,记得确保同一个会话的 key 落在同一 slot,否则 INCR 可能跨节点失效。
//这里是伪代码, 先排序 List<Msg> sortedMsgs = msgList.stream() .sorted(Comparator.comparingLong(Msg::getSeq)) .collect(Collectors.toList()); //这里是伪代码, 再渲染 renderMsgList(sortedMsgs);
不要为“假需求”买单——我们不需要全局有序,只需要业务上有意义的有序。
2.png (15.85 KB, 下载次数: 20)
不是技术做不到,而是要不要做。
3.png (20.23 KB, 下载次数: 19)
来源:即时通讯网 - 即时通讯开发者社区!
轻量级开源移动端即时通讯框架。
快速入门 / 性能 / 指南 / 提问
轻量级Web端即时通讯框架。
详细介绍 / 精编源码 / 手册教程
移动端实时音视频框架。
详细介绍 / 性能测试 / 安装体验
基于MobileIMSDK的移动IM系统。
详细介绍 / 产品截图 / 安装体验
一套产品级Web端IM系统。
详细介绍 / 产品截图 / 演示视频
一套纯血鸿蒙NEXT产品级IM系统。
详细介绍 / 产品截图 / 安装
精华主题数超过100个。
积极发起、参与各类话题的讨论等,主题、发帖内容较有价值。
连续任职达1年以上的合格正式版主
为论区做出突出贡献的开发者、版主等。
Copyright © 2014-2026 即时通讯网 - 即时通讯开发者社区 / 版本 V4.4
苏州网际时代信息科技有限公司 (苏ICP备16005070号-1)
Processed in 0.140625 second(s), 41 queries , Gzip On.