第一篇 需求与选型:自研 IM 的理由

我们的产品里需要聊天能力,不是临时起意。产品形态是一个协作工具,用户会在里面建群、单聊、发文件、@彼此,消息丢了就是事故。调研了一圈云 IM 服务,最后还是决定自己用 Go 搭 IM 后端。这本书记录的就是这个过程:不谈理论,只记每一步为什么这么选、踩了什么坑。

全书五篇,按 IM 系统真实的搭建顺序展开。第一篇谈需求与选型,算清自研划不划算、机器要多少、协议用哪个。第二篇是连接层,长连接网关、心跳保活、登录鉴权、单机压测,这是把用户挂上线的全部功夫。第三篇是消息层,消息模型、先落库再推送、离线消息拉取、未读数与会话列表,解决消息必达与多端同步。第四篇往上扩,RocketMQ 削峰、TDSQL-C 读写分离、群消息扩散取舍、全链路幂等。第五篇收口运维与成本,灰度分桶、监控告警、CLS 日志审计,最后算一笔账。

技术栈不复杂:Go 写网关与逻辑层,部署在云服务器 CVM 上(文档入口 cloud.tencent.com/document/product/213);消息存储用 TDSQL-C MySQL;未读数和会话列表放云数据库 Redis;写入高峰靠消息队列 RocketMQ 削峰;日志进日志服务 CLS。采购可看 云服务器 CVM 特惠。

正在选型的同学先看 自研还是买云 IM 服务;已经动手的直接跳 长连接网关。云产品横向对比可翻 腾讯云实践。

延伸阅读