程序聚合 软件案例 轻量高并发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%
相似推荐
志愿者服务平台
业务目标:统一管理志愿者注册报名、志愿活动发布、活动签到、请假、活动审核、招募单位管理,实现志愿服务线上化管理,方便志愿机构发布志愿任务,志愿者参与志愿活动,记录志愿时长,规范化志愿服务流程。 业务角色分为两类: 1. 志愿者(移动端 / 前端用户):注册账号,浏览活动、报名参加活动、签到打卡、请假、查看个人参与的活动、维护个人信息、接收系统消息。 2. 系统管理员(Web 后台):管理招募单位、发布志愿活动、审核志愿者活动、维护系统基础数据,对整个平台数据进行增删改查管理。
水利大模型通用管理平台
项目背景 面向水利行业的 TF 数学模型统一管理平台,将 Python 水利建模文件统一解析、调度与运行,为业务系统提供标准化模型调用与结果管理。为政府水利项目提供充实的保障和便利。 负责 Python 模型文件解析与统一调度接口开发,通过 ProcessBuilder 调用 Python 执行引擎实现模型运行。  参与模型元数据管理与版本控制模块设计,支持模型上传、存储与生命周期管理。  协助完成 GaussDB 数据持久化与 Redis 缓存集成,参与前后端接口联调与自测。  基于 Spring Boot 线程池与 Redis 分布式锁实现多模型并发调度,全局异常拦截返回标准化错误码。
面试评分系统
解决应急行业在公务员招聘,由传统的纸质面试流程,转变为线上评分,减少纸质操作,面试工作增效赋能 web端功能主要包括: 1.面试信息管理(面试任务安排、面试日程管理、考生和考官的信息管理) 2.评分信息管理(评分数据、评分要素) 3.抽签管理(抽签编排) 移动端功能主要包括: 1.面试信息面板 2.电子评分 3.在线签名
无人机管控综合大屏平台-无人机管控综合大屏平台
技术栈:Vue3 + TypeScript + Element‑Plus + OpenLayers + Cesium + ECharts + WebGL + GLSL + GeoServer + PostGIS + Java + Nginx + ArcGIS 平台面向集团水电业务,构建二三维一体化无人机管控系统,实现空间数据服务管理、无人机任务全生命周期管理、机库设备实时监控、飞行航线规划、安全冲突评估、巡检成果可视化、多维统计分析。 1. 二三维地图模块:Cesium 承载三维地形场景,OpenLayers 负责二维业务地图;基于 WebGL/GLSL 自定义着色器,实现管线、航线、巡检区域特效渲染;对接 GeoServer 发布 WMTS/WFS 空间服务,PostGIS 存储管理点位、航线、巡检区域等空间矢量数据;兼容 ArcGIS 各类空间数据格式。 2. 无人机业务模块:机库站点树管理、无人机设备实时状态监控、机库视频预览;业务需求录入、航线航点编辑、空域 / 时间 / 航线三重安全评估;任务拆分、子任务冲突校验、设备指派下发;飞行任务列表管理,展示里程、时长、告警信息,查看图片视频巡检成果。 3. 可视化大屏模块:资源指标概览、任务多维度统计图表,任务类型、任务状态、飞行趋势、机库能力排行、隐患处置排行,支撑运维决策。 4. 后端服务:Java 提供业务接口,PostGIS 处理空间查询、空间计算;Nginx 做反向代理、静态资源、地图服务代理。
文旅游客服务小程序-文旅游客服务小程序
使用技术 Uni‑App、Vue2、uView UI、高德地图 SDK 本项目面向游客打造文旅游客服务小程序,目标整合景区、文旅资讯、特产消费、地图导览等能力,为游客提供一站式旅游服务。系统包含首页、资讯、关于我们三大底部菜单模块。首页提供搜索、预约购票、特产购物、客服、文旅一张图、品牌推荐功能;热点区域按自然风光、名胜古迹、公园乐园分类展示各地景区卡片。资讯模块展示各地文旅官方发布的旅游线路、花事活动、农特产品直播等图文资讯,支持浏览官方发布内容。一张图模块集成地图,可切换文旅小馆、公厕、酒店、餐馆等 POI 图层,地图打点展示点位,列表展示周边商家评分、价格、距离、评论信息。业务流程:游客打开小程序,首页浏览景区,搜索目的地,可预约景区购票,查看文旅资讯;进入一张图地图导览,查看周边餐饮住宿配套,获取位置距离信息,完成旅游信息查询、出行参考。
帮助文档   Copyright @ 2021-2024 程聚宝 | 浙ICP备2021014372号
人工客服