本文作者拉丁解牛说技术,即时通讯网有修订和改动。
cover-opti.jpg (36.76 KB, 下载次数: 2)
下载附件 保存到相册
前天 21:25 上传
0.jpg (44.69 KB, 下载次数: 1)
前天 21:26 上传
1.png (15.86 KB, 下载次数: 2)
2.png (22.27 KB, 下载次数: 2)
3.png (27.07 KB, 下载次数: 2)
on_group_message_arrive(msg): group = group_cache.load(msg.group_id) members = group.member_list # 1000 人 members = filter_out_sender(members, msg.from) # 999 人 for member in members: copy = clone_with_target(msg, member.uid) copy.uuid = msg.uuid + "|G" + member.short_id // 副本标识 publish_to_dispatcher(copy)
4.png (17.34 KB, 下载次数: 2)
单条 MQ 写入耗时 ~1~3ms,999 条串行 ≈ 1~3 秒;并行能压到 100ms 内,但 broker 压力大 如果有 100 个千人群同时活跃,MQ broker 每秒要接收 ~10 万条扇出消息
on_group_message_arrive(msg): members = filter_out_sender(group.member_list, msg.from) for batch in chunk(members, batch_size=50): // 50 人一批 batch_msg = { "origin": msg, "targets": [m.uid for m in batch] } publish_to_dispatcher(batch_msg) // 一次 MQ 写
5.png (54.03 KB, 下载次数: 2)
6.png (13.96 KB, 下载次数: 2)
前天 21:27 上传
on_dispatcher_consume(copy_msg): try: route_and_deliver(copy_msg) except RetryableError as e: if copy_msg.retry_count < 5: reject_and_requeue(copy_msg) // MQ 重投 else: send_to_dead_letter_queue(copy_msg) // 死信,SRE 处理 metrics.inc("group.fanout.dead_letter") except FatalError as e: send_to_dead_letter_queue(copy_msg)
7.png (16.15 KB, 下载次数: 2)
8.png (29.69 KB, 下载次数: 2)
9.png (19.79 KB, 下载次数: 2)
10.png (14.29 KB, 下载次数: 2)
11.png (17.63 KB, 下载次数: 2)
12.png (25.43 KB, 下载次数: 2)
来源:即时通讯网 - 即时通讯开发者社区!
轻量级开源移动端即时通讯框架。
快速入门 / 性能 / 指南 / 提问
轻量级Web端即时通讯框架。
详细介绍 / 精编源码 / 手册教程
移动端实时音视频框架。
详细介绍 / 性能测试 / 安装体验
基于MobileIMSDK的移动IM系统。
详细介绍 / 产品截图 / 安装体验
一套产品级Web端IM系统。
详细介绍 / 产品截图 / 演示视频
一套纯血鸿蒙NEXT产品级IM系统。
详细介绍 / 产品截图 / 安装
精华主题数超过100个。
积极发起、参与各类话题的讨论等,主题、发帖内容较有价值。
连续任职达1年以上的合格正式版主
为论区做出突出贡献的开发者、版主等。
Copyright © 2014-2026 即时通讯网 - 即时通讯开发者社区 / 版本 V4.4
苏州网际时代信息科技有限公司 (苏ICP备16005070号-1)
Processed in 0.124016 second(s), 37 queries , Gzip On.