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

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

1. 系统架构基础

1.1. 几乎所有大规模系统都是从小规模开始,在成功路上逐渐发展壮大

1.2. 通信使用标准的应用层网络协议,通常是HTTP

1.3. Java EE和Java的Spring框架

1.4. Python的Flask

1.5. 随着应用程序的特性变得更加丰富,单体应用程序的复杂性往往会增加

1.6. 不可避免的是,对于许多应用程序,无论你拥有多少CPU和多少内存,负载都将增长到超出单个服务器节点所能服务的范围

1.7. 服务是独立部署的进程,它们使用HTTP等远程通信机制进行通信

2. 水平扩展

2.1. 水平扩展是指依靠架构复制服务,并在多个服务器节点上运行多个服务副本的能力

2.2. 负载均衡器

2.3. 无状态服务

2.4. 如果其中一项服务副本宕机,那么它正在处理的请求将丢失,而宕机的服务副本不管理会话状态,请求可以简单地由客户端重新发出,发送到其他服务实例进行处理

2.5. 随着添加服务实例越来越多,请求处理能力会增长,理论上会无限增长

3. 使用缓存扩展数据库

3.1. 对于数据库服务器,增加CPU数量以及内存和磁盘的容量有助于扩展系统

3.2. 水平扩展对于数据库也是一种常见的扩展策略

3.3. 要维持大型数据库高效和快速运行,往往需要技术娴熟的数据库管理员持续地看护和关注

3.4. 在扩大规模的同时,一种高效的方法是尽可能低频地从服务中查询数据库,可以在水平扩展的服务层中使用分布式缓存来实现

3.5. 对于经常读取且很少更改的数据,可以将处理逻辑改成先检查分布式缓存

3.6. 缓存技术本质上是使用非常简单的API进行的分布式键值存储

3.7. 如果你需要的数据在缓存中,那么在快速网络上,数据读取的延迟可以是毫秒级的

3.8. 引入缓存层需要你将处理逻辑修改为检查缓存的数据

3.9. 一个设计良好的缓存方案对于扩展系统是无价之宝

4. 分布式数据库

4.1. 分布式SQL存储

4.2. 分布式NoSQL存储

4.3. 分布式数据库也提升了可用性

4.4. 云服务提供商的服务

4.5. 有一类大数据软件架构可以解决在大数据集合中出现的问题,其中最典型的是数据再处理

5. 多处理层

5.1. 你需要扩展的任何实际系统都包含许多服务,通过服务间的交互协作来处理请求

5.2. 通过将应用程序分解为多个独立的服务,可以根据服务需求对单个服务进行扩展

6. 提高系统响应能力

6.1. 大多数客户端应用程序请求都需要响应

6.2. 从请求发送到结果接收之间的时间间隔就是请求的响应时间

6.3. 你可以使用缓存,直接返回预先计算好的响应结果来减少响应时间,但仍然有许多请求会涉及数据库访问

6.4. 有部分更新请求无须将数据完全持久化到数据库中便可以成功响应

6.5. 分布式排队平台可以可靠地将数据从一个服务发送到另一个服务,但并非总是以先进先出(FIFO)方式

6.6. 将消息写入队列通常比写入数据库快得多,请求能够更快地被成功确认

7. 系统和硬件的可扩展性

7.1. 如果服务和数据运行在存储不足的硬件上,那么即使是最精雕细琢的软件架构和代码,其可扩展能力也会受到限制

7.2. 在特定情况下,升级CPU内核数量和可用内存大小并不能提升系统的可扩展性

7.3. 阿姆达尔(Amdahl)定律

上一篇 下一篇

猜你喜欢

热点阅读