这门课解决什么工作场景

很多用 Gin 写接口的人,写到后面都会撞到同一堵墙:业务逻辑全挤在路由处理函数里。比如用户注册成功后要发欢迎邮件、发新手优惠券、写统计日志,这些动作如果同步执行,接口响应慢;如果拆成独立函数调用,代码耦合度依然很高,改一处容易牵连别处。这门课针对的就是这种“控制器越来越胖、业务模块互相粘连”的场景。它不教你写 RESTful 接口或连数据库,而是带你用 Go 在 Gin 项目内部手写一个进程内事件总线。核心思路是:主流程只负责发事件,具体怎么处理交给订阅者。这样下单、通知、统计等模块可以各自独立订阅,互不阻塞,后续替换成外部消息队列时,业务代码改动也能控制在最小范围。

适合什么基础,建议先看哪几块

课程默认你已经能用 Gin 写出基本的增删改查接口,懂 Go 的结构体、接口、协程基础。如果你连路由注册和中间件都还不熟,建议先补基础再看,否则反射那几讲会卡住。建议的观看顺序是:先看第一章前两讲,理解事件总线的概念和最简陋的实现,建立直觉;然后直接跳到第 5 讲看 eventHandler 反射改造,这是整个实现的核心分水岭,理解了它,后面支持多订阅和反订阅就是工程修补。第 4 讲和第 6 讲的两个小例子建议跟着敲一遍,不要只看,因为事件总线的难点不在语法,在于怎么把“发事件”和“处理事件”在代码结构上拆干净。

学完能独立做什么,资料怎么配合练习

学完之后,你应该能在自己的 Gin 项目里集成一个可用的事件总线:定义事件结构、注册订阅者、在业务代码里触发事件、支持多订阅和按需取消订阅。它不会替代 Kafka 或 RabbitMQ,但足够解决单体内的解耦问题,也为后续接入外部消息队列留好接口。练习方式上,建议不要照搬课程里的商品列表示例,换一个你实际工作中的场景——比如用户注册后触发日志记录和消息推送——自己写 Service 层和事件处理逻辑,用课程代码做骨架,遇到编译错误再回去对照对应章节。这样比按顺序看完所有视频再动手,吸收效率高很多。


本课程假设你已经会Gin,在此基础上我们手撸一个适合自己使用的数据总线。先从体内开始,后面进阶课程再用MQ来升级体外功能。本课程代码后面会集成到我们脚手架中。这

课程目录

*   第一章:手撸简易事件总线 cplist.push('第一章:手撸简易事件总线');/

  *   第1讲:无脑开张课、什么是数据总线

  *   第2讲:最最简陋的一段EventBus代码

  *   第3讲:加锁和设置订阅超时

  *   第4讲:小练习:分体式获取商品信息和价格

  *   第5讲:改造(1):加入eventHandler(反射)

  *   第6讲:小例子:编写Service、模拟获取商品列表(代码分离)

  *   第7讲:代码改进(2)支持多订阅(单通道)

  *   第8讲:代码改进(3):反订阅以及重要性