1. 前言

全书目录与章节顺序见 SUMMARY.md;本页为动机与阅读预期。书末 附录 为 API 速查,致谢 列出学习与依赖来源;与正文不一致时以仓库源码为准。

1.1. 写给谁、前置与不教什么

1.1.1. 这本书写给谁

  • 已经能写常规 Go 服务,想把长连接、网关、Actor 邮箱和跨进程消息在代码里怎么接看清楚的人。
  • 做或准备做游戏、IM、推送等实时业务,希望有一条从网络到观测的连贯叙事的人。
  • 愿意打开 zhenyi / zhenyi-base 仓库对照读,而不是只停留在概念层的人。

若你完全没碰过 Go,请先补语言基础,再回来会轻松很多。

1.1.2. 需要的前置知识

  • Go:完成官方 Tour 或等价内容,能读写 goroutine、channel、interface、context,会看模块与 go.mod
  • 网络:知道 TCP 连接、监听、端口 在说什么即可;书从固定头与拆包讲起,不要求你先熟稔某个框架。
  • 加分项:写过 HTTP 服务、在本地起过 Etcd / NATS、用过 Prometheus,会减轻第 5–7 章的心智负担;不作硬性门槛,缺什么可以边查边跟。

1.1.3. 这本书不教什么

  • 不教 Go 语法入门与标准库逐 API 讲解。
  • 不展开 Actor 的学术史、CSP 证明或与各语言实现的全景对比——只保留理解 zhenyi 所需的工程语境。
  • 不替你做容量与 SLA 结论:zhenyi 是个人维护的开源项目,示例能跑、叙事能自洽,但不敢写成「在任何体量、任何业务下都适用」的厂商式承诺。
  • 不替代 专职运维文档:Kubernetes、Prometheus、链路系统等的运维与调参,本书只在第 6 章等处以能接上、能观测为限;生产落地仍要结合你的环境与规范。

下面几节是个人经历与写作态度;若你更关心目录,可直接翻到 SUMMARY.md 进正文。

1.2. 一个后端开发者的自白

很长一段时间里,我没用 Go 做过线上。

入门那几年,无非是写点脚本、刷刷题,离「要面对真实流量和长连接」还远。网络该怎么收、怎么发,Actor 到底在解决什么问题,我心里都没底。日常工作里熟练的,仍是 CRUD 和数据库。

但我心里一直有个念头:要是有一天真的要做游戏服、做 IM、做那种人一多就要抖三抖的实时系统,用 Go 该从哪儿下手?

这本书,就是从那个念头长出来的。

1.3. 从玩具到框架

zhenyi 不是画在白板上的蓝图,而是一路改出来的。若把时间摊平,大概是下面这样一条线:

zinx(学网络编程) → 自己写网络层 → ET(学 Actor 模型) → 自己写 Actor 运行时 → 发现需要统一网关 → 加上服务发现和 NATS → 加上监控和热更新

每一格都对应一次「当时真的卡住了」:不是宣称要做一个完美的框架,而是只好去学别人怎么做的,再回到自己的仓库里一行行落地。

对我而言,zinx 那一段首先教会我:长连接进来以后,缓冲、拆包、回包,这一层在代码里长什么样。ET 则换了一个角度——业务可以按 Actor 来拆开,各自守住状态,彼此用消息说话。后来把这两头接进同一个项目里,zhenyi 渐渐显出自己的脾气:它扎根在平常的 Go 里,一个 Actor 握一条处理主线,消息进了邮箱就依次来过;数量级是「服务」而不是「给每个对象起一个进程」;连接集中到网关,再往后分发;进程与进程之间交给 NATS,让自己少发明一轮总线。

这些谈不上信仰,只是我走得动、也还想继续维护下去的一种组合。

1.4. AI 是帮手,不是主人

动笔写书的时候,恰逢手里多了一样工具:AI。

我用它勘误、用它起稿、夜里思路断了跟它抬杠几句,也会让它对着热点路径猜一猜瓶颈在哪里——但最后拿 commit 的仍然是人。分层怎么切、接口留在哪儿、哪些东西坚决不要,这些拍板的声音只能来自自己。AI 能快些把字铺到纸上,却替不了你对系统的理解。

书稿里不少段落最早是 AI 按大纲铺开的;我逐段改过,也和仓库里的实现对过。若你读到某处与代码不一致,责任在我,欢迎留言或提 issue,好让我把下一版改得更踏实。

多嘴一句:工具再快,也补不上「不知道自己在干什么」那一块。你总得明白那几行在说什么、为何这么写、边界在哪儿——那才是你的底气。

1.5. 这本书是什么

它是一本贴着代码写下来的笔记。从网络层到 Actor 从网关到发现与总线,章节能对照到目录里的实现;你愿意的话,可以边读边打开仓库,把文字和文件对上号。

它也是一排脚印:许多地方你会看出「当初为何没走另一条路」——那往往不是理论赢了,而是我在坑边折返过。

若你关心的是「这一类东西在 Go 里怎么落到实处」——结构怎么摆、性能怎么抠、线上怎么瞧得见——那正是我写它时一直在问自己的问题。书里的字,就是当时能写下的回答。

1.6. 立场与局限

本书是作者个人的笔记与取舍记录,不是行业标准、不是教材答案,也不能替代你所在团队的技术决策与评审。文中的架构判断、性能结论和「可以这样做」的示例,都只宜当作参考线索:真正上线前,请结合你的业务、体量与规范,以仓库源码、go doc 与官方文档为准做交叉核对。

zhenyi 与书中示例代码,在作者侧并未经历大规模、长周期、多业务形态的线上验证;能说的是在开发与自测场景下可跑通、叙事可与仓库对照,等同于「已在高压生产环境证伪或证毕」。你若直接用于关键业务,请自行压测、灰度与容灾设计,勿把本书当作上线背书。

书稿会尽力与代码同步,但疏漏、笔误或与版本漂移仍可能出现;若你发现文实不符或可能误导读者之处,欢迎通过 Issue、PR 或你能联系到的渠道指出,便于修正,也减轻后来人的困惑。


愿你读得顺利。我们正文里见。

results matching ""

    No results matching ""