如果你已经能写 CRUD、用过 Redis,但一提到“长连接怎么撑住百万在线”“群聊消息怎么保证不丢不重”就只剩概念,那这套 Plato 手写分布式 IM 的课值得你花时间拆一拆。它不是讲怎么调第三方 IM SDK,而是从协议字段开始,一路把网关、状态机、存储模型搭出来——这种课的价值在于暴露工程细节,而不是给一个能跑的 demo。

课纲的含金量:三块硬骨头

把目录压扁看,整门课其实押在三个地方。第一是消息协议自己定,这意味着后面所有编解码、心跳、重连、协议升级的坑都得自己填,比直接上 Netty 自带的编解码器更接近真实系统。第二是长连接网关,课里从通用性谈到多 IDC,还专门收了一个“方案总结”的尾——说明讲的不只是单机 Demo,而是把网关拆成接入、路由、会话管理几层之后怎么横向扩。第三是分布式存储,存储模型设计和万人群聊优化分成两块,前者管消息怎么落、怎么索引,后者管读扩散还是写扩散、群成员多的时候怎么避免一次消息扇出把库打爆。

哪些章节值得精看

  • 长连接网关部分:通用性设计和多 IDC 那两节建议逐段跟。网关是 IM 里最容易写成面条代码的地方,课程特意抽了“方案总结”来收口,说明中间的取舍值得反复看。
  • 分布式存储两讲:存储模型设计决定了后面消息时序、已读位点、离线消息能不能做对;万人群聊优化是整门课里最接近生产痛点的部分,别跳。
  • State Server 两讲:生命周期和消息状态机这块,是理解“消息到底在哪一刻算送达、哪一刻可以删”的关键。很多自研 IM 最后对不上账,问题就出在状态机没定义清楚。
  • 领域驱动设计那节:微服务怎么划分是架构题不是编码题,单看可能偏理论,但配合后面 State Server 的实现回头再看,会顺很多。

资料包怎么拆开用

视频和配套代码不要按顺序一股脑刷。更省时间的做法是:先拿协议那部分把消息结构、字段含义过一遍,形成一个自己的脑图;然后跳到网关层,对着代码看连接建立、心跳、断线重连怎么落地;最后再回头看 DDD 的微服务划分——这时候你已经知道每个服务要扛什么,划分理由才立得住。存储部分建议单独抽一个周末,自己先想“消息按会话存还是按用户存”,再去看课里的选择,对比差在哪里。

适合谁,不适合谁

这门课偏“架构推导 + 手写实现”,对并发模型、网络编程、分布式一致性没有基本手感的人会比较吃力,尤其是消息状态机和多 IDC 那几节。反过来,如果你正在公司里接手一个自研 IM 的重构,或者想搞清楚群聊扩散、离线消息、多端同步这些老问题,Plato 的章节顺序基本就是一份可以对着抄的决策清单。把它当架构参考手册用,比当教程刷更划算。

🔥 硬核课堂-手写分布式IM系统-Plato

深入实践分布式IM系统架构与设计

编辑点评

从底层协议到分布式架构,全面解析IM系统构建过程,适合对高并发、分布式系统有深入理解的学习者。

⭐ 编辑推荐

学习分布式IM系统架构,掌握高并发处理与分布式存储技术,提升后端开发能力。

✨ 课程亮点

✦分布式IM系统架构解析
✦高并发处理技术
✦分布式存储设计

课程目录

📁 第一部分
    📁 04.长连接网关设计(三)-通用性&多IDC&方案总结
        24 下行消息.mp4  [34.1 MB]
        25 平滑迁移.mp4  [36.5 MB]
        23 方案总结.mp4  [41.4 MB]
        20 通用设计1.mp4  [109.4 MB]
        22 多IDC方案.mp4  [37.5 MB]
        19 消息中台.mp4  [41.7 MB]
        21 通用设计2.mp4  [36.2 MB]
    📁 16.实现 State Server(一) -生命周期&LAB2D
        74 长连接生命周期管理.mp4  [180.6 MB]
        76 源码阅读1.mp4  [69.4 MB]
        77 源码阅读2.mp4  [32.8 MB]
    📁 10.分布式存储(二)-万人群聊优化
        57 万人群聊1.mp4  [90.5 MB]
        58 万人群聊2.mp4  [56.8 MB]
    📁 06.领域驱动设计(二)-IM系统的微服务划分
        35 设计目标.mp4  [94.9 MB]
        38 添加约束.mp4  [41.4 MB]
        39 微服务划分.mp4  [85.4 MB]
        37 解决方案2.mp4  [147.7 MB]
        36 解决方案1.mp4  [65.3 MB]
        34 背景分析.mp4  [15.7 MB]
    📁 17.实现 state server(二)-实现消息状态机
        80 连接可靠性源码阅读.mp4  [180.6 MB]
        78 消息可靠性设计.mp4  [192.2 MB]
    📁 09.分布式存储(一)-IM的存储模型设计
        54 实现方案.mp4  [70.5 MB]
        53 背景介绍.mp4  [50.4 MB]
        56 复杂性治理.mp4  [37.3 MB]
        55 历史存储.mp4  [60.7 MB]
    📁 19.LAB2:实现完整长连接网关层
        85 源码导读.mp4  [180.5 MB]
    📁 01.消息协议设计
        05.消息可用性(四)-上行消息.mp4  [31.3 MB]
        06.消息可用性(五)-消息转发.mp4  [44.2 MB]
        02 消息可用性(一)-基本概念.mp4  [21.7 MB]
        01.基本·协议设计.mp4  [182.6 MB]
        07 消息可用性(六)-下行消息.mp4  [37.6 MB]
        04 消息可用性(三)-方案选型.mp4  [17.1 MB]
        03 消息可用性(二)-背景介绍.mp4  [40.7 MB]
    📁 03.长连接网关设计(二)-连接可用性
        16 长连接网关设计(二)-连接可用性-服务重启1.mp4  [30.2 MB]
        15 长连接网关设计(二)-连接可用性-断线重连.mp4  [74.2 MB]
        17 长连接网关设计(二)-连接可用性-服务重启2.mp4  [56.3 MB]
        18 长连接网关设计(二)-连接可用性-限流.mp4  [19.1 MB]
        14 长连接网关设计(二)-连接可用性-消息路由.mp4  [84.9 MB]
    📁 07.分布式缓存设计(一)-低延迟&高吞吐优化策略
        43 延迟优化1.mp4  [137.2 MB]
        44 延迟优化2.mp4  [44.5 MB]
        41 评估标准.mp4  [34.0 MB]
        42 基本方案.mp4  [61.0 MB]
        40 分布式缓存介绍.mp4  [14.5 MB]
        45 延迟优化3.mp4  [58.5 MB]
        46 高吞吐优化.mp4  [37.1 MB]
    📁 02.长连接网关设计(一)-基本实现
        09 基本分析.mp4  [33.8 MB]
        08 背景介绍.mp4  [29.9 MB]
        12 并发模型.mp4  [103.8 MB]
        10 设计目标.mp4  [56.5 MB]
        11 ip选择.mp4  [18.9 MB]
        13 内存布局.mp4  [60.4 MB]
    📁 13实现 IP Config - 长连接调度引擎&LAB2A
        65 LAB2A_实现ipconf server.mp4  [16.5 MB]
        64 架构设计.mp4  [145.5 MB]
        63 设计目标.mp4  [29.1 MB]
        66 源码参考阅读.mp4  [171.5 MB]
    📁 15.实现 IM Gateway-控制长连接收发消息&LAB2C
        73 源码分析.mp4  [61.8 MB]
        71 设计方案.mp4  [100.7 MB]
    📁 14.实现 IM Gateway-持有socket长连&LAB2B
        70 gateway 源码参考阅读.mp4  [134.0 MB]
        67 背景介绍.mp4  [23.6 MB]
        68 socket状态机.mp4  [95.6 MB]
    📁 12.LAB1-实现IM命令行客户端
        61 客户端框架的设计.mp4  [37.3 MB]
        62 客户端实现源码导读.mp4  [43.7 MB]
    📁 11.LAB0-独立完成IM系统架构设计
        59 架构总结.mp4  [182.8 MB]
    📁 18.实现State Server(三)-分布式化(高可用可伸缩)
        82 消息状态机的分布式化.mp4  [67.2 MB]
        83 实现存算分离&单元化部署.mp4  [46.9 MB]
        81 介绍.mp4  [89.2 MB]
    📁 08.分布式缓存设计(二)-高可用&一致性优化策略
        48 缓存高可用2.mp4  [79.1 MB]
        51 缓存一致性2.mp4  [28.7 MB]
        52 运维.mp4  [38.6 MB]
        50 缓存一致性1.mp4  [38.2 MB]
        47 缓存高可用1.mp4  [35.2 MB]
        49 缓存高可用3.mp4  [11.6 MB]
    📁 05.领域驱动设计(一)-设计方法
        26 什么是DDD.mp4  [40.4 MB]
        29 DDD应用流程.mp4  [18.8 MB]
        28 名词术语.mp4  [104.2 MB]
        30 登月的原始需求.mp4  [49.3 MB]
        32 阿波罗2.mp4  [36.8 MB]
        33 hardcore system design.mp4  [162.8 MB]
        27 名词解释.mp4  [40.1 MB]
        31 阿波罗1.mp4  [54.1 MB]
📁 第二部分:业务架构实现
    📁 01.核心领域实现
        03 IM业务编排DAG架构.mp4  [122.1 MB]

适合人群

  • 后端开发工程师
  • 系统架构师
  • 对IM系统感兴趣的开发者

🎯 学习收获

  • 理解分布式IM系统设计原理
  • 掌握高并发处理技术
  • 提升系统架构设计能力

🎉 祝您学习愉快!