编号 | 名称 | 定义 | 类比 | 补充说明 |
|---|---|---|---|---|
① | 应用 / 系统 | 为完成特定服务而设计的一组程序 | 团队协作完成任务 | 可以是一个程序,也可以是一组协同工作的程序群 |
② | 模块 / 组件 | 对复杂系统的职责划分单位 | 军队中的不同作战小组 | 高内聚、低耦合,便于维护和扩展 |
③ | 分布式 | 多个模块部署在不同服务器上,通过网络通信协作 | 办公团队分散到多个城市远程办公 | 强调物理分布和网络通信 |
④ | 集群 | 多个相同组件共同提供同一服务 | 集中炮兵部队形成打击集群 | 强调逻辑统一性,目标一致 |
⑤ | 主从 | 集群中主节点负责核心任务,从节点辅助 | MySQL 主库写入,从库同步数据 | 常用于数据库、缓存等场景 |
⑥ | 中间件 | 连接不同应用/技术之间的桥梁软件 | 饭店采购部连接厨房与市场 | 如消息队列、网关、RPC框架等 |
⑦ | 容器(Docker) | 打包应用及其依赖的轻量级虚拟化工具 | 集装箱打包货物 | 实现环境一致性,提升部署效率 |
⑧ | 容器编排(K8s) | 自动管理容器的平台 | 货船组织集装箱搬运 | 解决容器调度、伸缩、健康检查等问 |
① 应用(Application) / 系统(System):为了完成一整套服务的一个程序或者一组相互配合的程序群。
② 模块(Module) / 组件(Component):当应用较复杂时,为了分离职责,将其中具有清晰职责的、内聚性强的部分,抽象出概念,便于理解。
③ 分布式(Distributed):系统中的多个模块被部署于不同服务器之上,即可以将该系统称为 分布式系统。如: Web 服务器与数据库分别工作在不同的服务器上,或者多台 Web 服务器被分别部署在不同服务器上。
④ 集群(Cluster):被部署于多台服务器上的、为了实现特定目标的一个/组特定的组件,整个整体被称为 集群。比如:多个 MySQL 工作在不同服务器上,共同提供数据库服务目标,可以被称为一组数据库集群。
⑤ 主(Master) / 从(Slave):集群中,通常有一个程序需要承担更多的职责,被称为主;其他承担附属职责的被称为从。
⑥ 中间件(Middleware):一类提供不同应用程序用于相互通信的软件,即处于不同技术、工具和数据库之间的桥梁。
⑦ 容器(Docker):Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 操作系统的机器上,也可以实现虚拟化。
⑧ 容器编排(K8S):kubernetes,简称 K8s,是用8代替名字中间的8个字符 “ubermete” 而成的缩写。是一个 开源的、用于管理云平台中多个主机上的容器化的应用,Kubermetes 的目标是让部署容器化的应用简单并且高效。
名称 | 定义 | 示例 | 常见指标 |
|---|---|---|---|
可用性(Availability) | 单位时间可正常提供服务的概率 | 年化可用性 = 正常时长 / 总时长 | 4个9(99.99%)、5个9(99.999%) |
响应时长(Response Time, RT) | 用户输入后系统响应所需时间 | 点外卖:下单 → 收到餐品的时间 | 最大值、平均值、中位数 |
吞吐(Throughput) | 单位时间内处理请求数量 | 高速公路每分钟过车数量 | TPS(每秒事务数)、QPS(每秒查询数) |
并发(Concurrent) | 同一时刻能处理的最大请求数 | 高速公路车道数 | 实际中常用短时间吞吐代替 |
✅ 分布式 vs 集群(通常不用太严格区分两者的细微概念)
特征 | 分布式 | 集群 |
|---|---|---|
关注点 | 物理分布 + 网络通信 | 逻辑统一 + 目标一致 |
举例 | Web服务器与DB分开放,不同服务器通过网络通信配合完成任务 | 多个MySQL节点组成数据库集群 |
是否必须网络通信 | 是 | 否(但通常也涉及) |
⚠️ 实际开发中两者经常共存,如一个分布式系统可能包含多个集群。
✅ 高可用(HA) vs 高并发(HC)
指标 | HA | HC |
|---|---|---|
目标 | 系统持续稳定运行 | 快速响应大量请求 |
技术手段 | 主从复制、负载均衡、容错机制 | 缓存、异步处理、限流降级 |
场景 | 金融、电商核心交易系统 | 秒杀、抢购、高流量网站 |
小结:术语速记口诀(帮助记忆)
简介:应用服务和数据库服务共用一台服务器
出现原因:出现在互联网早期,访问量比较小,单机足以满足需求。
下面以电子商城为例,可以看到通过应用(划分了多个模块)和数据库在单个服务器上协作完成业务运行。

用户在浏览器中输入 www.baidu.com,首先经过 DNS 服务将域名解析成 IP 地址10.102.41.1,随后浏览器访问该 |P 对应的应用服务。

备注:
优点:部署简单、成本低
缺点:存在严重的性能瓶颈、数据库和应用互相竞争资源
简介:应用服务和数据库服务使用不同服务器。
出现原因:单机存在严重的资源竞争,导致站点变慢。
以电子商城为例,可以看到 应用和数据库在各自的服务器上通过网络协作完成业务运行。

优点:性能相比单机有提升、数据库单独隔离,不会因为应用把数据库搞坏,有一定的容灾能力

缺点:硬件成本变高,显而易见的多了一台服务器,性能有瓶颈,无法应对海量并发
简介:引入了负载均衡,应用以集群方式运作。
出现原因:单个应用不足以支持海量的并发请求,高并发的时候站点响应变慢。
以电子商城为例,可以看到应用不再是一个,而是变成了多个,通过负载均衡来支持海量的并发。

下面说明:

优点
缺点
简介:将数据库读写操作分散到不同的节点上,数据库服务器搭建主从集群,一主一从、一主多从都可以。数据库主机负责写操作,从机只负责读操作。
出现原因:数据库成为瓶颈,而互联网应用一般读多写少,数据库承载压力大,主要是由这些读的请求造成的,那么我们可以把读操作和写操作分开。
以电子商城为例,可以看到存储服务器不再是一个,而是变成了多个,而且把读写操作分开减少数据库压力。

优点:数据库的读取性能提升;读取被其他服务器分担,写的性能间接提升;数据库有从库,数据库的可用性提高了。

缺点:当同步挂掉,或者同步延迟比较大时,写库和读库的数据不一致;服务器成本需要进一步增加
简介:引入缓存,实行冷热分离,将热点数据放到缓存中快速响应。
出现原因:海量的请求导致数据库负载过高,站点响应速度变慢。
例如双十一秒杀的时候,秒杀的数据就可以放到 缓存服务器中
优点:大幅降低对数据库的访问请求,性能提升非常明显

缺点
简介:数据库的数据被拆分,数据库数据分布式存储,分布式处理,分布式查询,也可以理解为 分布式数据库架构
出现原因

优点
缺点:数据库和缓存结合目前能够抗住海量的请求,但是应用的代码整体耦合在一起,修改一行代码需要整体重新发布
简介:微服务是一种架构风格,按照业务板块来划分应用代码,使每个应用的职责更清晰,相互之间可以做到独立升级迭代。
出现原因
应用如下:

优点
缺点
简介:借助容器化技术(如docker)将应用/服务打包为镜像,通过容器编排工具(如k8s)来进行动态分发和部署镜像,服务以容器化方式运行。
出现原因

抽象理解如下:

优点
缺点
WAF(Web Application Firewall,Web 应用防火墙)
CLB(Cloud Load Balancer,云负载均衡)
SLB(Server Load Balancer,服务器负载均衡)
API(Application Programming Interface,应用程序接口)
网关(Gateway)
K8S(Kubernetes,容器编排平台)
TKE:腾讯云的 Kubernetes 服务。 ACK:阿里云的 Kubernetes 服务。

Spring Cloud
Dubbo
TSF(Tencent Service Framework,腾讯服务框架)
Istio
缓存数据
Redis
Tair
Keewideb
基础数据
MySQL
PolarDB
TDSQL
TiDB
GBase
其他
OSS/COS/MinIO
ES 集群(Elasticsearch)
MongoDB 集群
MaxCompute/EMR/GFS
这些技术广泛应用于分布式系统和云计算,适用于构建可扩展、高效的现代化应用。
“背锅”演进之路:通过对架构的优化,解决系统的问题,如图下所示:

一些思考: