程序聚合 软件案例 轻量高并发IM网关-实时通讯中间件-IMGateway

轻量高并发IM网关-实时通讯中间件-IMGateway

2026-05-15 19:58:43
行业:社交、电商
载体:插件、安卓APP
技术:Go、Protocol Buffers、Redis

业务和功能介绍

1、立项背景和目标:在直播和社交场景中,IM是核心基础设施但第三方SDK费用高且不可控,自研Erlang方案门槛又太高。目标是基于Go构建一个轻量级高并发IM网关,单机承载10万级WebSocket长连接,支持单聊、群聊和离线消息,让中小团队无需依赖第三方即可搭建自有IM服务。

2、核心功能模块:(1)连接管理模块——基于gorilla/websocket实现读写分离的双goroutine模型,每个连接独立管理心跳、超时、缓冲区;(2)自研二进制协议——8字节定长头+变长payload,相比JSON压缩约70%传输量,支持13种操作码覆盖认证/消息/房间/同步等场景;(3)Hub消息分发中心——单goroutine事件循环管理连接注册/注销/消息路由,房间广播采用快照读写分离避免锁竞争;(4)离线消息队列——基于Redis Sorted Set按时间戳排序存储,上线后通过SyncReq拉取增量消息;(5)房间系统——支持动态加入/退出/广播,Presence通知实时感知成员变化。

3、业务流程:客户端通过HTTP获取JWT Token → 建立WebSocket连接 → 发送Auth包完成认证 → 单聊发Msg包(Hub查表转发或写离线队列)→ 群聊发JoinRoom+RoomMsg包(Hub广播给房间成员)→ 离线用户上线后发SyncReq拉取未读消息。

项目实现

1、整体架构:采用单进程多goroutine模型,Gin负责HTTP控制面(Token签发、健康检查、房间管理),核心数据面全部走WebSocket+自研二进制协议。Hub作为中央消息总线,单goroutine处理Register/Unregister/Inbound三个channel,避免加锁。存储层用Redis做离线消息持久化和集群间Pub/Sub转发。部署用Docker Compose一键拉起Redis+网关服务。

2、我的负责模块和结果:(1)独立设计并实现了自研二进制协议,包含编解码器和5种Payload序列化方案,经压测验证比JSON方案降低约70%传输量;(2)实现Hub消息分发中心,单节点稳定承载10万并发WebSocket连接,消息吞吐量约85000 msg/s,P99延迟38ms;(3)实现离线消息队列,基于Redis ZSET保证消息按序存储,7天自动过期;(4)编写Node.js压测脚本,输出完整的并发/吞吐/延迟报告。

3、遇到的难点和解决方案:(1)10万连接内存占用过高——将每个连接的send channel从1024降到256,配合非阻塞发送+满则断连策略,内存从4.2GB降到2.1GB;(2)房间广播时遍历成员表导致锁持有时间长——改为先RLock快照成员列表再释放锁逐个发送,将广播耗时从120ms降到15ms;(3)断连检测不准——用atomic.Bool替代mutex+flag,避免Close()被重复调用导致channel panic。

示例图片视频


云想衣裳花想容
30天前活跃
方向: 后端-Go、人工智能-AI应用开发、
交付率:100.00%
相似推荐
省级税务大数据中台
从零开始构建大数据平台,构建数据中台,开发数据分析应用,用机器学习进行数据分析和风险管理。 包括: 数据管理平台 数据上云、数据标准化,数据加工,应用指标建设等。 数据分析应用 智慧大屏、一企式分析应用、纳税分析、纳服监控等等。
大文集团融媒体项目,报社核心系统策采编发系统,网站、APP显示
应技术发展升级采编、发布、网站系统,基于SpringBoot、ES、Mysql、MongoDB、Redis等技术升级 1、报题策划下达。 2、稿件编辑、发布。 3、发布系统,渠道、栏目、稿件管理。 4、网站:、:根据UI设计图使用H5、JS、swiper进行开发。 1、报题策划下达。 2、稿件编辑、发布。 3、发布系统,渠道、栏目、稿件管理。 4、网站:、:根据UI设计图使用H5、JS、swiper进行开发。
榆林市数智政协
1. 为帮助委员在线履职,与群众实时互动搭建 2. 知识库对话引用的文档可以查看切片信息,也可以预览源文件 支持功能: 1. 委员全流程提案提交办理 2. 政协新闻动态展示 3. 政协委员通讯录 4. 政协委员在线学习培训,视频观看,pdf阅览时间记录 5. 会议管理,活动管理,民生实事,数据中心 6. 社情民意全流程 7. 功能点太多,无法一一赘述,共有大功能67项,小功能8967项,接口27万+
非属地卷烟智能识别系统
非属地卷烟智能识别系统(以下简称"本系统")是一套面向烟草稽查业务的移动端智能识别应用软件,运行于 Android 智能终端。系统通过摄像头拍照或相册选图采集零售客户货架、烟柜的卷烟陈列图像,调用 AI 识别服务(同时支持在线多模态大模型 API、在线图片识别 API 两类在线接口,以及离线深度学习图片目标检测模型,可按需切换),自动检出图中烟包、条烟、卷烟的品牌、规格与厂家信息,并与本地允许清单(本地投放卷烟数据库,共 210 个品规)实时比对,将检出结果划分为"本地允许""本地不允许(非属地/新投放)""未识别"三类,以图像标注与表格两种视图呈现,帮助稽查员快速完成非属地卷烟现场核验。 传统人工肉眼核验方式下,5 名稽查员对 50 个品种单次排查平均耗时约 7.04 分钟,正确率约 92%,且受疲劳漏检等主观因素影响。本系统以 AI 图像识别替代人工辨别,单次核验时长可缩短至 30 秒以内,效率提升约 92.4%。
某单位定制智能体管理测评平台-智能体管理测评
1. 系统概述与定位 本系统是一个面向企业或个人的AI智能体(Agent)全生命周期管理平台。它不仅提供智能体对话交互功能,更核心的价值在于:允许客户根据自身业务需求动态添加、配置个性化的智能体,并对其使用效果进行量化评测。系统旨在解决大模型落地过程中“智能体创建难、管理散、效果不可控”的痛点,打造从“创建→使用→评测→优化”的闭环生态。 2. 核心功能模块 智能体动态管理:支持客户自主创建并接入多种类型的智能体。如图中所示,用户可在顶部下拉菜单选择“AI英语学习助手”或“通用助手”。平台支持智能体角色的动态注册与配置,客户可自定义智能体的提示词(Prompt)、知识库范围、模型参数及工具调用能力,实现智能体的无限扩展与灵活切换。 多会话交互与历史管理:提供流畅的对话界面,支持“流式模式”输出,提升用户等待体验。左侧“历史对话”栏记录用户的每一次会话,包括对话标题(如“hi和hello的区别”)、所属智能体类型及时间戳。支持“新建会话”,方便用户针对不同主题进行隔离讨论,同时便于后期回溯与审计。 使用效果评测平台:这是本系统的核心差异化功能。平台在后台记录用户与智能体的完整交互数据(问题、回答、响应时间等)。通过对这些数据的分析,平台可对智能体的回答质量、准确性、响应速度、用户满意度等维度进行量化评测。客户可依据评测报告,针对性地优化智能体的Prompt或知识库,从而持续提升智能体在具体业务场景下的表现。 3. 业务价值 该系统将“智能体使用”与“效果评测”深度结合,既满足了用户即开即用的对话需求,又为客户提供了持续优化智能体性能的数据支撑。通过动态添加智能体,企业可以快速构建适配不同部门(如客服、教研、行政)的专属AI助手,并通过评测机制确保其输出质量,真正实现AI能力的可管、可控、可优化。
帮助文档   Copyright @ 2021-2024 程聚宝 | 浙ICP备2021014372号
人工客服