加载中...

本篇要回答的问题:服务端开发这个分工是怎么来的、它的领域特征是什么?为什么服务端程序的体系架构必然和桌面如此不同,又为什么会额外多出负载均衡存储两类基础软件?

第二章收尾时我们对比过:桌面领域特征是强交互;本讲开启第三章"服务端开发",回答它的领域特征。桌面迭代的驱动力是交互革命,而服务端的驱动力完全不同——它正从沿用桌面 OS 体系,逐步转向**数据中心操作系统(DCOS)**之路。

服务端的发展史

服务端这个分工历史极短:信息科技整体约 60~70 年,服务端从互联网诞生算起也就 40 多年,真正活跃只有 20 多年,但发展惊人。标志性事件:

年份 事件
1971 电子邮件诞生
1974 Internet 诞生;第一个数据库 IBM System R 诞生,SQL 诞生
1989 / 1993 万维网 WWW 诞生 / 第一个 Web 服务器 NCSA HTTPd(Apache 前身)
1998 Akamai 提供 CDN,可算全球第一个企业云服务
2006 / 2007 Amazon EC2(云计算诞生标志)/ S3(第一个对象存储)
2008 Google GAE
2009 Go 语言诞生(被预言制霸云计算)
2011 七牛云诞生(对象存储+CDN+多媒体处理 的 PaaS 云存储)
2013 Docker 诞生;CoreOS 诞生(第一个面向服务端的 OS)
2014 Kubernetes 诞生(DCOS 事实标准)

关键判断:桌面开发的迭代是交互/人机交互的革命;服务端开发的迭代虽起初沿用桌面 OS 体系,但正逐步分道而行,转向 DCOS 之路。

服务端程序的需求

桌面为单用户服务,服务端被所有用户共享。三个根源性需求差异:

需求 桌面程序 服务端程序 后果
规模 为单用户服务,重交互体验 被所有用户共享;单机资源有限 用户规模到一定程度必须分布式化,跑在多台机器上
连续服务时长 单用户单次使用时长有限 7×24 不间断,每秒都有人用,无"关闭"概念 必须长期在线
质量要求 一亿用户=一亿实例,崩溃只影响一人 多用户共享一个实例,一崩可能影响几十万到几百万人 不可接受,必须多实例、自动转移用户、单实例临时不可用对用户无感知

结论:服务端程序必须是多实例的;从用户视角看它如水电煤一样 7×24 持续服务、任何时刻不应崩溃。一个实例可以崩,但它的工作必须立刻转交其他实例。

服务端开发的体系架构

作者给出三张逐步放大的视角图,说明"单实例视角"不是服务端架构的全部:

视角 来自 看到什么 局限
单实例体系架构 01 讲 与桌面体系架构自然对应 只是单个实例视角
网络程序体系架构 15 讲(TCP/IP 是网络的 OS) 服务端也是网络程序 仍非全部
宏观分布式视角 本讲 服务端首先是一个多实例的分布式程序 ——

服务端单实例体系架构
网络程序的体系架构(TCP/IP 作为网络 OS)
服务端宏观体系架构:多实例分布式 + 负载均衡 + 存储

关键判断:相比桌面程序,服务端依赖的基础软件除了操作系统和编程语言,还多出两类

  • 负载均衡(Load Balance)
  • 数据库或其他形式的存储(DB/Storage)

它们正是接下来几讲的主题。

总结

本讲从服务端发展史与需求出发,说明服务端开发的领域特征与桌面截然不同:桌面是强交互、以事件为输入、GDI 为输出;服务端是大规模用户请求 + 24 小时不间断服务。这些与具体业务无关的领域特征,直接决定了服务端体系架构必须是多实例分布式,并额外引入负载均衡与存储两类基础软件。

先把"是什么"回答清楚

概念 一句话说明
服务端领域特征 大规模用户请求 + 24 小时不间断服务
多实例 单实例可崩但工作须立刻转交,故必须多实例、用户无感知转移
DCOS 数据中心操作系统,服务端技术演进的方向(K8s 为事实标准)
单实例视角的局限 服务端首先是多实例的分布式程序,单实例图只是局部
多出的两类基础软件 负载均衡(Load Balance)+ 存储(DB/Storage)

一句话速记

服务端的领域特征是"大规模请求 + 24×7 不间断",由此它必然是多实例分布式的,并比桌面多出负载均衡存储两类基础软件——技术演进的终点是数据中心操作系统(DCOS)。

几条值得记住的判断

  • 驱动力不同:桌面靠交互革命,服务端靠规模与不间断服务的诉求。
  • 崩溃容忍度不同:桌面崩溃影响一人,服务端崩溃影响百万人,故必须多实例自动转移。
  • 架构视角要放大:别只盯单实例,服务端本质是分布式系统。

思考题

文中留下两问:为什么服务端会需要负载均衡(Load Balance)?为什么会需要数据库或其他形式的存储?结合"多实例 + 7×24 + 不丢数据"的领域特征,你能自己推导出这两类基础软件存在的必然性吗?

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