作者介绍
逆水:通信专家、多年系统设计开发及项目管理经验。
小册介绍
一套长连接系统涉及的技术与知识面非常多,相对于比较成熟的无状态 Web 服务,它在架构上也灵活多变,很多情况下,我们只能在高性能、高可用和复杂度之间做出一定的取舍。比如在本小册中介绍的三种场景:IM 即时通讯、Live直播和 CS 在线客服,它们在设计时考虑的重点就完全不同。通常我们说即时通讯之所以难度较高,主要有如下几点:
- 网络、IO、GC、并发、内存等各方面知识储备及灵活运用。
- 长连接使得系统的
可用性
及扩展性
难度大大增加。 - 对系统的
高频消息转发能力
与消息零丢失容忍
的双重考验。
本小册绝不是一些知识堆积
或者带你写个demo
版本IM。而是实现一套高性能、高可用、百万并发以上的即时通讯 IM 系统!本项目使用的技术及核心逻辑都是经过商用考验提取而来,有过一定项目经验的朋友都知道,一套较复杂的系统要达到一个稳定的运行状态,需要考虑的方面非常多,因此也非常锻炼个人综合能力。
本小册在技术与业务知识点上既有广度也有深度,非常适合读者进阶学习,无论是面试还是以后设计开发类似系统
,都会有非常大的帮忙。同时我会使用大量不同类型的设计图(约200张
)加以文字来描述系统各环节的逻辑与流程,帮助读者加深理解。同时,针对本小册编写的实战项目代码也会放到GitHub上。
你会学到什么?
本小册从如下七个方面来展开。它包括了一个项目从需求分析、系统设计、开发迭代、基准测试、部署架构、线上运维,一个完整的项目生命周期
,基本上都是干货,而且看得见,摸得着
,技术不再孤立,都在项目中实实在在被使用。如下图就是本小册知识点图谱,为了方便阅读,没有画出更细节的内容:
因此,你可以学习到:
- 一套与
融云
和环信
相似的 IM 系统,从 0 到 1 的实现过程。 - 分布式长连系统的架构及原理。
- 彻底搞懂 TCP/IP 五层网络协议的原理。
- 高性能Golang项目实战能力与性能优化方面的知识。
- 系统架构、实战开发、测试、监控、系统容灾等项目
综合能力
。
适宜人群
本小册实战部分,后端使用的是 Golang
编写,Web 端 SDK 使用的是 Typescript
编写,无论是你前端还是后端,都是非常适宜的一本小册,不要犹豫,立刻下手!
- 初出江湖工作的新人。
- 挣扎于每天CRUD的码农。
- 准备跳槽涨薪的攻城狮。
- 向更高职位奋斗的你。