前言 · 这本书要带你干什么

2025-12-02T10:00:00+08:00 | 4分钟阅读 | 更新于 2025-12-02T10:00:00+08:00

@

前言 · 这本书要带你干什么

1 这是个什么项目?

你有没有遇到过这样的场景:公司在阿里云买了 200 台服务器,在腾讯云买了 50 台,华为云还有一批,还有一套 VMware 私有机房——年底领导问你"咱们一共有多少台机器?每台多少钱?谁在用?",你要登录 4 个云控制台一个一个数,数完还得复制到 Excel 里。

类比:CMDB 就是云资产的"总账房"——五家云厂商是五个各自记账的分店,CMDB 每天派人去各分店抄账,汇总成一本统一的账。对应到工程里就是:拿着你录入的云厂商 AK/SK,定时去云端把主机、数据库等资源信息拉回来存到本地 MySQL,统一检索、统一管理。

CMDB(Configuration Management Database,配置管理数据库) 就是为这个痛点而生的。而"多云"是这个项目的关键词——它同时支持阿里云、腾讯云、华为云、AWS、VMware 五种厂商(README.md:3-9)。

Cool-CMDB(源码仓库 github.com/infraboard/cmdb,下文统称 CMDB)是一个用 Golang 编写的多云资产管理平台,核心能力包括:

  • 资源同步:拿着凭证去云端把主机、数据库等资源拉回来存进本地 MySQL;
  • 统一检索:所有云的资源收敛成一套统一模型,一个接口按厂商/地域/标签/关键字搜出全部资产;
  • 凭证管理:云厂商访问密钥加密存库,绝不明文落盘;
  • 任务记录:每次同步都是任务,成功几台、失败几台、失败原因,都有据可查。

2 学习这个项目的核心价值

市面上讲 Go Web 开发的教程大多是"图书管理系统"级别的玩具,而 CMDB 是一个工程化完整度相当高的真实开源项目,你能学到教科书上很难学到的东西:

  1. 微内核插件式架构:业务模块像插件一样"自注册"进框架,主程序几乎不用改动——mcube app 模式的精髓;
  2. gRPC + HTTP 双协议复用:同一份业务代码,既暴露 gRPC 给内部服务高性能调用,又暴露 RESTful 给前端和运维使用;
  3. 统一资源抽象:5 家云厂商、N 种资源类型,如何用一套模型 + 一套扩展机制收敛?这是所有多云平台的核心难题;
  4. 真实项目的"不完美":表名不一致、半成品模块、别名 bug 等真实问题大量存在——读懂这些问题、能修复它们,恰恰是从"看懂代码"到"能做二次开发"的分水岭。第 8 章会带你逐个排雷。

3 适配的学习人群

  • 掌握 Go 基本语法(能写 for 循环、定义 struct、调用函数)的初学者;
  • 想系统学习 Gin 之外的另一种 Go 企业级工程范式(go-restful + gRPC + protobuf)的开发者;
  • 运维/DevOps 工程师,想搞懂 CMDB、多云管理平台内部是怎么运转的;
  • 准备参与或自研资产管理平台的工程师,想少走弯路、直接借鉴成熟抽象。

你不需要:精通 gRPC、精通 GORM、精通云厂商 API——本书会从零讲起,遇到什么补什么。

4 全书路线图

Cool-CMDB 学习路线第1-3章 建立全局观第4-6章 深入内部第7-8章 拔高实战第1章 架构与技术栈第4章 数据库与模型第7章 设计理念亮点第2章 跑起来第3章 目录规范第5章 源码精讲第6章 业务流程第8章 踩坑二开自测对话练习每章固定节奏:学习目标 → 通俗讲解 → 逐行代码 → 流程图 → 对话自测 → 小结

5 这套教材怎么读

  • 按顺序读:第 13 章建立全局观(架构、跑起来、目录规范),第 46 章深入内部(数据库、源码逐层精讲、业务流程),第 7~8 章拔高与实战(设计思想、踩坑与二开)。
  • 每章末尾的"自测题"是面试官/候选人对话形式:先遮住候选人气泡自己答一遍,再对照参考答案——能复述出来的才算学会。
  • 黄色提示框是类比、排错和复习提示,别跳过。
  • 代码片段全部来自真实源码,仅删减无关 import,标注格式如 apps/task/impl/task.go:26 表示该逻辑位于该文件第 26 行附近,建议边读书边在 IDE 里跳转对照。
复习提示: - 这套教材的所有结论均来自仓库 github.com/infraboard/cmdb 真实源码与其根目录的源码拆解底稿(CMDB源码拆解底稿.md),关键结论带 文件:行号,杜绝虚构。 - 一个提前的清醒认知:这个项目 20 个业务模块(apps/ 下 20 个子目录)中 7 个有真实实现——bill/health/host/rds/resource/secret/task(其中 rds 与 bill 各有未完成部分);dict 只挂了 HTTP 路由层;其余 12 个(account/cost/database/disk/dns/eip/lb/metric/mongodb/order/oss/redis)是 proto 占位的"空地皮"——这既是学习对象,也是第 8 章二开实战的练手场。 - 准备好了就从 第 1 章 开始。
About Me

没什么想介绍的,一个很大众的码农…

喜欢代码,车,马,真的是 🐎

讨厌别人让我给自己的代码写注释 最厌烦别人的程序没有写注释

目标

学AI,加油!加油!