一套长连接系统涉及的技术与知识面非常多,相对于比较成熟的无状态 Web 服务,它在架构上也灵活多变,很多情况下,我们只能在高性能、高可用和复杂度之间做出一定的取舍。比如在本课程中介绍的三种场景:IM 即时通讯、Live直播和 CS 在线客服,它们在设计时考虑的重点就完全不同。 通常我们说即时通讯之所以难度较高 ,主要有如下几点:
- 网络、IO、GC、并发、内存等各方面知识储备及灵活运用。
- 长连接 使得系统的可用性及扩展性难度大大增加。
- 对系统的高频消息转发能力与消息零丢失容忍的双重考验。
本课程绝不是一些知识堆积或者带你写个demo版本IM。 而是实现一套高性能、高可用、百万并发以上的即时通讯 IM 系统 !本项目使用的技术及核心逻辑都是经过商用考验提取而来,有过一定项目经验的朋友都知道,一套较复杂的系统要达到一个稳定的运行状态,需要考虑的方面非常多,因此也非常锻炼个人综合能力。
本课程在技术与业务知识点上既有广度也有深度,非常适合读者进阶学习,无论是面试还是以后设计开发类似系统,都会有非常大的帮忙。同时我会使用大量 不同类型的设计图 (约200张)加以文字来描述系统各环节的逻辑与流程,帮助读者加深理解。同时, 针对本课程编写的实战项目代码也会放到GitHub上 。
本课程内容图谱如下:

因此,你可以学习到:
- 一套与融云和环信相似的 IM 系统,从 0 到 1 的实现过程。
- 分布式长连系统 的架构及原理。
- 彻底搞懂 TCP/IP 五层网络协议 的原理。
- 高性能Golang 项目实战能力 与 性能优化 方面的知识。
- 系统架构、实战开发、测试、监控、系统容灾等项目综合能力。