本篇要回答的问题:整个"服务治理篇"讲了什么?服务端操作系统是如何一步步演进到 DCOS 的?从架构思维角度看,"变更"这个最复杂的需求该怎样被正交分解?
上一讲我们以"云计算与服务端的未来"收尾,本讲是第四章"服务治理篇"的整体回顾。先厘清边界:服务端开发致力于设计业务架构满足需求,服务治理致力于让程序健康地提供 7x24 服务。
关键判断:这张服务端架构图自"服务端开发"分工出现后就没变过。这些年迭代的不是骨架,而是负载均衡、数据库/存储中间件的能力丰富与完善。
服务端操作系统的演进
从服务治理角度看,技术迭代很快。服务端 OS 最初源自桌面 OS,但两者渐行渐远:
| 维度 | 桌面操作系统 | 服务端操作系统 |
|---|---|---|
| 领域特征 | 强交互(事件输入、GDI 输出) | 大规模请求 + 24 小时不间断服务 |
| 迭代驱动力 | 人机交互的革命 | 服务治理的需要(非业务功能需要) |
| 终点 | 桌面体系 | DCOS(数据中心操作系统) |
Docker → CoreOS → Kubernetes
第一个里程碑是 Docker,它把容器使用界面标准化,完成服务端软件的标准化交付,与本地 OS 解耦。Docker 之前的软件交付有三大问题:
| 问题 | 说明 |
|---|---|
| 标准不同 | brew / rpm / apt 五花八门 |
| 不符服务规格 | 只是软件仓库,未定义服务运行规范 |
| 环境依赖 | 描述非自包含,行为不确定,常因环境问题安装失败 |
随后 OCI 标准诞生,定义两大规范:运行时标准(Runtime Spec)+ 镜像标准(Image Spec)。
| 玩家 | 角色与结局 |
|---|---|
| Docker | 标准化容器交付;推 Docker Swarm 争 DCOS |
| CoreOS | 专注服务端 OS,主张除内核外全部容器化;思想先进但改变用户习惯过大、没切中痛点,未流行 |
| Kubernetes(Google 牵头) | 结束 DCOS 之争——容器最早由 Google 推入 Linux 内核,内部有 Borg 的丰富实践 |
洞见:Docker 和 CoreOS 都大大低估了 DCOS 的难度,连七牛云也一样——2014 年成立 QCOS 项目组,最终转向拥抱 Kubernetes。
服务治理篇内容回顾
抽象系统第一步是理清输入与输出(代表系统规格)。随后引出"工程师思维"——因为话题从"基础平台→业务开发→业务治理"一个比一个更不稳定、需求更复杂、事务性工作更多。
| 探讨维度 | 包含内容 |
|---|---|
| 服务的变更 | 发布、升级与版本管理 |
| 服务的健康状况 | 日志、监控与报警 |
| 服务的故障处理 | 故障域与故障预案、故障排查与根因分析、过载保护与容量规划 |
架构思维:用"变更"做正交分解的范本
这是自信息科技诞生以来最宏大的架构设计案例,因为需求太复杂。它不适合架构新手入门,却是体会架构分解核心思想的极佳材料。
以单一需求"变更"为例(它涵盖软硬件升级、配置调整、表结构调整、增减机器、数据中心搬迁、域名/IP 调整……难以穷尽),层层正交分解:
| 分解层级 | 类别 | 含义与处理方式 |
|---|---|---|
| 第一层 | 主动性变更 | 有计划的变更(升级、改表结构等) |
| 第一层 | 被动变更 | 非预期导致(扩容、机房下线改 DNS 等)→ 硬件池化,业务逻辑与硬件彻底解耦 |
| 第二层(对主动性变更) | 软件变更 | 通过版本化表达:每个版本自包含、确定性、只读、可复现(如 Git) |
| 第二层(对主动性变更) | 软件数据的变更 | 与业务强相关、无法再抽象,但低频,走软件升级流程管理风险 |
关键判断:版本化是核心概念——每个独立版本的数据都是确定性、只读、行为可复现的;"软件变更"与源代码管理系统(Git)如出一辙。
总结
四大模块"基础平台→桌面开发→服务端开发→服务治理"到此收官,软件大厦的骨架已然明了。下一步学什么?许式伟更看重的不是常规"设计模式",而是设计场景。
洞见:理解设计模式都应放回它要解决的问题域。比设计模式更好的武器是"设计场景"——它有清晰的问题域定义,是实实在在的通用子系统。能把业务场景分解为多个"通用设计场景"的组合,正是架构师成熟度的核心标志。
先把"是什么"回答清楚
| 概念 | 一句话说明 |
|---|---|
| 服务开发 vs 服务治理 | 前者设计业务架构满足需求,后者保障 7x24 健康服务 |
| DCOS | 服务端 OS 的演进终点,K8s 为事实标准 |
| OCI 标准 | 容器的运行时标准 + 镜像标准 |
| 版本化 | 每个版本自包含、确定、只读、可复现(如 Git) |
| 设计场景 | 有清晰问题域的通用子系统,优于泛泛的"设计模式" |
一句话速记
服务治理的本质是对"变更"做层层正交分解——先分主动/被动(→硬件池化),再把主动变更分为软件变更(版本化)与数据变更(低频走流程)。
几条值得记住的判断
- 服务端架构骨架没变过,变的是负载均衡与存储中间件的能力。
- 服务端 OS 的演进由服务治理需要驱动,而非业务功能需要。
- Kubernetes 结束 DCOS 之争,Docker/CoreOS 都低估了难度。
- 架构师真正的武器库是通用设计场景,而非死记设计模式。
思考题
许式伟说"变更"是一个能层层正交分解的范本:主动/被动 → 软件/数据。回到你负责的系统,把你最近经历的一次线上"变更"放进这个分解框架里——它属于哪一层?你的系统是否已经做到"业务逻辑与硬件解耦",让被动变更不再需要人去改配置?



