加载中...

本篇要回答的问题:第三章"服务端开发篇"到底讲了什么骨架?服务端技术为何与桌面操作系统分道扬镳走向 DCOS?服务端开发与服务治理的边界又在哪里?

本讲是第三章的收官与总结,承接前面以画图程序后端为案例的整章实战,把"服务端开发"这条主线重新梳理一遍,并为下一章"服务治理篇"埋下引子。核心是一句话区分:开发关注用合适的业务架构满足用户需求,治理关注让程序健康地 24 小时不间断地服务客户。

桌面 vs 服务端:领域特征决定技术走向

服务端开发这个分工历史极短(民用活跃期仅 20 多年),所以很多惯例可以被挑战,也必然被挑战。两类操作系统起初同源,但因领域特征不同而渐行渐远:

维度 桌面操作系统 服务端操作系统
领域特征 强交互:事件为输入,GDI 为输出 强服务:大规模用户请求 + 24h 不间断
迭代驱动 人机交互的革命(交互的迭代) 客户服务的需要(与业务功能无关)
演进方向 交互范式不断翻新 走向数据中心操作系统(DCOS)

关键判断:服务端的诸多需求(高并发、不间断)不是业务功能上的需要,是客户服务的需要——这正是它最终独立成 DCOS 的根本原因。

服务端多出的两类基础软件

服务端程序依赖的基础软件,除操作系统和编程语言外,比桌面多出两类

基础软件 核心价值 隐含前提 / 要点
负载均衡(LB) 调度访问流量,让多业务服务器压力均衡;并使优雅升级成为可能 LB 抗压能力远强于业务服务器(实例数比 ≪ 1;DNS 调度本身不均衡)
存储中间件(DB/Storage) 即"数据结构",是高并发与 24h 服务的基础,是性能瓶颈所在 服务端扛不住压力,往往是存储没扛住

服务端开发篇的整体内容骨架

速错 vs 存储:两种相反的编程哲学

关键洞见:"速错(Fail Fast)"以可靠存储为前提,而存储本身恰恰不能速错。

角色 编程哲学 原因
普通业务程序 速错:非预期错误立即退出,不写防御代码 防御代码会掩盖错误,引出更隐晦的后续故障
存储系统 绝不速错:把各种异常处理当成"正常业务逻辑" 没了可靠存储,程序重启就不知道自己在做什么

存储中间件种类繁多:KV 存储、对象存储、数据库、消息队列、倒排索引……

对象存储(如 AWS S3、七牛云)的出现,是服务端体系与桌面操作系统分道扬镳的起点——文件系统(File System)不再是服务端存储的标配。

业务架构与详细设计

从业务架构看,服务端主要实现一个多租户的 Model 层:Model 层要自然体现业务逻辑(与行业领域相关),但也有一批与领域无关的通用问题:网络协议、帐号与授权、RPC 框架、单元测试等。

收官谈到架构第三步——详细设计,它关注子系统/模块的全貌,绝不只是一张架构图:

详细设计要素 回答的问题
现状与需求 现在在哪、遇到什么问题、要作何改进
需求满足方式(规格/接口) 要做成啥样?交付物的使用界面
实现原理 怎么做到?——用 “程序 = 数据结构 + 算法” 两个维度去描述

总结

服务端开发知识面更广,但开发本身的工作量与难度其实大大低于桌面开发;真正的难点在"开发出来之后如何让服务稳定健康运行"——这正是服务治理的范畴,也是近年服务端技术蓬勃发展的主战场。

先把"是什么"回答清楚

概念 一句话说明
服务端开发 vs 治理 开发=用业务架构满足需求;治理=让程序健康不间断服务
负载均衡 调度流量均衡压力,并使优雅升级成为可能
存储中间件 服务端的"数据结构",高并发与不间断服务的基础,性能瓶颈所在
速错(Fail Fast) 业务程序遇非预期错误立即退出;但以可靠存储为前提
DCOS 数据中心操作系统,服务端操作系统的演进方向

一句话速记

桌面拼交互、服务端拼服务——服务端为了 24h 不间断服务多出了 LB 与存储两根支柱,最终从桌面 OS 分家走向 DCOS;把程序写出来只是开始,让它健康运行才是治理。

几条值得记住的判断

  • 服务端分工历史极短,惯例可以也必然被挑战
  • 服务端扛不住压力,往往是存储没扛住——存储是性能瓶颈。
  • 速错与存储是两套相反哲学:业务可速错,存储绝不速错。
  • 推荐重点技术栈:Docker/K8s、Go、LVS/Nginx、MySQL/MongoDB、对象存储、RESTful/GraphQL、gRPC/restrpc。

思考题

文中说桌面进程间协同方式的变迁"本质上也是交互的变迁"——你认同吗?回到你自己负责的服务端系统:有哪些做法其实只是沿用了桌面/单机时代的惯例,在 24h 不间断服务的语境下其实已经可以、甚至应该被挑战?

公告栏
这是我的个人知识库。
记录技术,也记录生活 —— 读过的、试过的、想明白的,都堆在这儿。
最新文章
网站资讯
文章数目 :
5
已运行时间 :
本站总字数 :
15.7k
本站访客数 :
本站总访问量 :
最后更新时间 :
全局知识图谱
当前页面 已访问 文章 标签
ESC 关闭 · 滚轮缩放 · 拖拽移动 · Ctrl+G 开关