读构建可扩展分布式系统:方法与实践01可扩展系统简介

2024-09-11  本文已影响0人  躺柒
读构建可扩展分布式系统:方法与实践01可扩展系统简介.png

1. 简介

1.1. 在过去20年里,软件系统的规模、复杂性和容量都出现了前所未有的增长

1.2. 代码是容器、数据库、消息传递系统和其他组件的一部分,通过调用API和构建指令,构成你的应用程序

1.3. 可扩展(scalable)是软件工程中用来描述软件系统能够适应增长的术语

1.4. 快速且低成本地扩展应用程序的能力应该是当代面向互联网的应用程序的软件架构的决定性质量

2. 定义

2.1. 维基百科对它的定义是“可扩展性是通过添加更多资源来处理越来越多的工作的系统属性”

2.2. 与物理系统不同,软件系统在某种程度上是无定形的

2.3. 不同运营维度的例子

2.4. 在开发和部署的早期阶段,可扩展性并不是主要的质量要求

2.5. 成功扩展系统关系到许多现代互联网应用程序的生存问题

2.6. 往往存在一个临界点,在轻负载下有意义的设计和决策突然变成了技术债务

2.7. 通过增加资源来增加系统在某个维度上的容量称为纵向扩展(scaling up)或横向扩展(scaling out)

2.8. 与物理系统不同,能够按比例缩小(scale down)系统容量以降低成本同样重要

2.9. 案例

3. 软件系统发展简史

3.1. 1980~1989

3.2. 1990~1995

3.3. 1996~2000

3.4. 2001~2006

3.5. 2007至今

4. 可扩展性系统设计基本原则

4.1. 扩展系统的基本目标是在应用程序的某些特定维度上增加容量

4.2. 一个常见的维度是增加系统在给定时间段内可以处理的请求数量

4.3. 复制

4.4. 优化

5. 可扩展性与成本

5.1. 对于某些应用程序,需要承担修改业务系统来满足最终业务需求的成本

5.2. 不应该期望一个没有采用可扩展架构、机制和技术的软件系统快速发展以满足更大的容量需求

5.3. 在成本线性增长的同时支持指数级扩展的软件系统被称为超大规模系统

6. 权衡

6.1. 可扩展性是非功能性需求,它只是众多质量属性之一

6.2. 经验丰富的软件架构师非常注意分寸,他们精心设计系统来满足高优先级的质量属性,同时尽量减少对其他质量属性的负面影响

7. 可用性

7.1. 可用性和可扩展性通常是高度兼容的“合作伙伴”

7.2. 可用性是指系统即使在对手的攻击下也仍然保持可靠运行的能力

7.3. 来自对手的攻击可能是试图利用系统设计弱点使系统瘫痪

7.4. 另一种攻击则是经典的分布式拒绝服务(DDoS),在这种攻击中,对手获得了对众多系统和设备的控制权,并协同大量请求,使得受害系统不可用

8. 安全性

8.1. 安全系统的基本要素是身份验证、授权和数据完整性

8.2. 安全性是所有面向互联网的系统的必要质量属性

8.3. 构建安全系统的成本是不可避免的

8.4. TLS使用非对称加密提供加密、身份验证和数据完整性能力

8.5. 保护静态数据

8.6. 一般来说,安全性和可扩展性是对立的力量

9. 可管理性

9.1. 用于描述这种复杂监控功能的术语是可观测性

9.2. 指标对于洞察系统是非常宝贵的,它有助于确保持续运营,以及凸显系统中可能需要优化或复制的部分

9.3. 扩展系统总是意味着添加新的系统组件——硬件和软件

9.4. 在扩展时,控制成本和可管理性的复杂性的唯一方法是自动化

9.5. DevOps自动执行系统的持续测试、部署、管理、升级和监控,缩短了新功能的开发生命周期

上一篇下一篇

猜你喜欢

热点阅读