分布式系统设计总结
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
据存储的可扩展性。 容量方面:可以通过分库分表方式实现存储容量的可扩展性,关于如何数据映
射到表或库中,可以采用“一致性哈希算法”。
6. 分布式系统低成本
内网环境:每个地区最少两个 IDC,地区内实现流量穿越,避免内网网络故障。 单点故障:每个模块在每个地区至少两台机器,避免单点故障,在出现故障时
B 进行流量迁移。 数据层方面
主备(热备): 依靠仲裁者切换备机。 依靠一致性控制中心实现数据的强一致性容灾。 热备: 冷备: 过载保护 根据“业务响应时长”、“线程池数量”和“调用方超时时长”设置最大等待队列, 出现过载时拒绝请求,避免雪崩现象。 柔性可用 分离业务场景,拆分业务模块并单独部署,一个模块出现问题,不会影响整个
2. 分布式系统设ቤተ መጻሕፍቲ ባይዱ理念
分布式系统设计的几个基本理念: 分布式系统对服务器硬件要求很低 分布式系统强调横向可扩展性 分布式系统不允许单点失效 分布式系统应用服务最好做成无状态的
3. 分布式系统高可用
目前比较流行的服务架构从逻辑上划分都是三层架构:接入层、业务层、数据层, 因此分布式系统要提供高可用的服务,则需要分别提高这三层的可靠性。 容灾备份 接入层方面 外网环境:在不同的 ISP 机房部署,外网环境恶劣时提供稳定服务。 业务层方面:
分布式系统设计总结
1. 分布式系统简介
说到分布式系统,首先要了解什么是分布式系统,分布式系统,就是组成于系统的 硬件、软件存在于网络,相互之前只通过消息进行协作。 这里其实很好理解,有一个 概念,叫大系统小做,就是把系统功能清晰的细分为很多小模块,每个模块都很容易实 现,分而治之。相互之间通过消息组件协作,其中消息组件也就是整个系统的关键了。
系统不可用。 补偿逻辑,在系统恢复后,采用补偿逻辑恢复故障时段内的数据。
4. 分布式系统高性能
多地部署:根据用户所在地区就近接入,减少时延,提升访问速度。 调用方式:采用“并行”或“异步”方式调用接口,提升访问速度。 处理方式:采用“队列”或“异步”方式处理请求,提升访问速度。 缓存支持:借用缓存系统缓存数据,避免从 DB 中获取数据,实现快速响应。 数据压缩:如对返回的数据,文件,图片等进行压缩,节省带宽,实现快速响应。 批量处理,提高系统吞吐量
5. 分布式系统可扩展性
扩展性主要关注以下几个方面: 1、并发扩展:
接入层、业务层方面:实现无状态设计,无状态的优势在于良好的水平伸缩, 无论机器恢复、扩容还是裁剪都变的十分简单。
数据层方面:无论是 CACHE 还是 DB,都可以采用读写分离方式实现并发扩展。 2、 功能扩展(业务层方面)
架构方面:系统拆分,大系统小做,分离业务场景,寻求简单设计。 设计方面:善用设计模式解决复杂业务问题,使业务实现可扩展性。 协议方面:可以采用 XML/JSON 来定义接口协议,实现接口协议的可扩展性。 3、 存储扩展(数据层方面) 表设计方面:对业务进行抽象,使用横表,竖表,主表、扩展表等方式实现数
分布式系统有三个特征: 并行:网络中的模块,各自运行,相互之间并行处理问题,通过消息进行协作。他 们之间的资源共享是非常重要。 容错:任何系统都有可能出错,设计者的一个职责就是容错性。分布式系统中随时 都可能有系统错误,包括挂机,网络故障,失联。而且一旦出现错误,其他模块可能不 会立即感知。 透明:分布式系统对于用户来说是透明的,这样能够方便的管理用户所需数据,处 理好负载均衡,分布式另一个目标是将它的进程和资源实际分布在多台计算机上这一事 实隐藏起来。 分布式系统的作用体现在它可以让多台服务器协同工作,完成单台服务器无法处理 的任务,尤其是高并发或者大数据量的任务,同时能提供稳定可靠的服务。
2. 分布式系统基本原则
分布式系统遵循几个基本原则 CAP 原理 分布式系统基础理论 CAP 为分布式的应用提供了理论基础。CAP 是 CONSISTENCY、 AVAILABILITY、TOLERANCE OF NETWORK PARTITION 三个词组的简写, 分别表示: C:CONSISTENCY,一致性;包括强一致性和弱一致性 A:AVAILABILITY,可用性(主要指的是快速获取数据的能力,即性能); P:TOLERANCE OF NETWORK PARTITION,分区容错性(亦包括可分布性) CAP 理论告诉我们,一个分布式系统不可能同时满足一致性,可用性和分区容错性这 三个需求,三个要素中最多只能同时满足两点。三者不可兼顾,此所谓鱼与熊掌不可兼 得也。而对于分布式数据系统而言,可分布性和分区容错性是基本要求,否则就不称其
为分布式系统了。因此架构设计师不要把精力浪费在设计如何能同时满足三者的完美分 布 式 系 统上 ,而 是 应该 进行 权 衡 取舍 。这 也 意味 着分 布 式 系统 的 设计 过 程,也 就 是 根据 业务特点在 C(一致性)和 A(可用性)之间寻求平衡的过程,要求架构师真正理解系 统需求,把握业务特点. BASE 理论酸碱平衡 【BASE】来自于互联网的电子商务领域的实践,它是基于 CAP 理论逐步演化而来, 核心思想是即便不能达到【强一致性】,但可以根据应用特点采用适当的方式来达到【最 终 一 致 性 】 的 效 果 。 BASE 是 BASICALLY AVAILABLE 、 SOFT STATE 、 EVENTUALLY CONSISTENT 三个词组的简写,是对 CAP 中 C & A 的延伸,说起 来很有趣,BASE 的英文意义是碱,而 ACID 是酸,真的是水火不容。我们稍微花点 时间展开 BASE 的含义: ① BASICALLY AVAILABLE:基本可用; ② SOFT-STATE:软状态/柔性事务,即状态可以有一段时间的不同步; ③ EVENTUAL CONSISTENCY:最终一致性;
射到表或库中,可以采用“一致性哈希算法”。
6. 分布式系统低成本
内网环境:每个地区最少两个 IDC,地区内实现流量穿越,避免内网网络故障。 单点故障:每个模块在每个地区至少两台机器,避免单点故障,在出现故障时
B 进行流量迁移。 数据层方面
主备(热备): 依靠仲裁者切换备机。 依靠一致性控制中心实现数据的强一致性容灾。 热备: 冷备: 过载保护 根据“业务响应时长”、“线程池数量”和“调用方超时时长”设置最大等待队列, 出现过载时拒绝请求,避免雪崩现象。 柔性可用 分离业务场景,拆分业务模块并单独部署,一个模块出现问题,不会影响整个
2. 分布式系统设ቤተ መጻሕፍቲ ባይዱ理念
分布式系统设计的几个基本理念: 分布式系统对服务器硬件要求很低 分布式系统强调横向可扩展性 分布式系统不允许单点失效 分布式系统应用服务最好做成无状态的
3. 分布式系统高可用
目前比较流行的服务架构从逻辑上划分都是三层架构:接入层、业务层、数据层, 因此分布式系统要提供高可用的服务,则需要分别提高这三层的可靠性。 容灾备份 接入层方面 外网环境:在不同的 ISP 机房部署,外网环境恶劣时提供稳定服务。 业务层方面:
分布式系统设计总结
1. 分布式系统简介
说到分布式系统,首先要了解什么是分布式系统,分布式系统,就是组成于系统的 硬件、软件存在于网络,相互之前只通过消息进行协作。 这里其实很好理解,有一个 概念,叫大系统小做,就是把系统功能清晰的细分为很多小模块,每个模块都很容易实 现,分而治之。相互之间通过消息组件协作,其中消息组件也就是整个系统的关键了。
系统不可用。 补偿逻辑,在系统恢复后,采用补偿逻辑恢复故障时段内的数据。
4. 分布式系统高性能
多地部署:根据用户所在地区就近接入,减少时延,提升访问速度。 调用方式:采用“并行”或“异步”方式调用接口,提升访问速度。 处理方式:采用“队列”或“异步”方式处理请求,提升访问速度。 缓存支持:借用缓存系统缓存数据,避免从 DB 中获取数据,实现快速响应。 数据压缩:如对返回的数据,文件,图片等进行压缩,节省带宽,实现快速响应。 批量处理,提高系统吞吐量
5. 分布式系统可扩展性
扩展性主要关注以下几个方面: 1、并发扩展:
接入层、业务层方面:实现无状态设计,无状态的优势在于良好的水平伸缩, 无论机器恢复、扩容还是裁剪都变的十分简单。
数据层方面:无论是 CACHE 还是 DB,都可以采用读写分离方式实现并发扩展。 2、 功能扩展(业务层方面)
架构方面:系统拆分,大系统小做,分离业务场景,寻求简单设计。 设计方面:善用设计模式解决复杂业务问题,使业务实现可扩展性。 协议方面:可以采用 XML/JSON 来定义接口协议,实现接口协议的可扩展性。 3、 存储扩展(数据层方面) 表设计方面:对业务进行抽象,使用横表,竖表,主表、扩展表等方式实现数
分布式系统有三个特征: 并行:网络中的模块,各自运行,相互之间并行处理问题,通过消息进行协作。他 们之间的资源共享是非常重要。 容错:任何系统都有可能出错,设计者的一个职责就是容错性。分布式系统中随时 都可能有系统错误,包括挂机,网络故障,失联。而且一旦出现错误,其他模块可能不 会立即感知。 透明:分布式系统对于用户来说是透明的,这样能够方便的管理用户所需数据,处 理好负载均衡,分布式另一个目标是将它的进程和资源实际分布在多台计算机上这一事 实隐藏起来。 分布式系统的作用体现在它可以让多台服务器协同工作,完成单台服务器无法处理 的任务,尤其是高并发或者大数据量的任务,同时能提供稳定可靠的服务。
2. 分布式系统基本原则
分布式系统遵循几个基本原则 CAP 原理 分布式系统基础理论 CAP 为分布式的应用提供了理论基础。CAP 是 CONSISTENCY、 AVAILABILITY、TOLERANCE OF NETWORK PARTITION 三个词组的简写, 分别表示: C:CONSISTENCY,一致性;包括强一致性和弱一致性 A:AVAILABILITY,可用性(主要指的是快速获取数据的能力,即性能); P:TOLERANCE OF NETWORK PARTITION,分区容错性(亦包括可分布性) CAP 理论告诉我们,一个分布式系统不可能同时满足一致性,可用性和分区容错性这 三个需求,三个要素中最多只能同时满足两点。三者不可兼顾,此所谓鱼与熊掌不可兼 得也。而对于分布式数据系统而言,可分布性和分区容错性是基本要求,否则就不称其
为分布式系统了。因此架构设计师不要把精力浪费在设计如何能同时满足三者的完美分 布 式 系 统上 ,而 是 应该 进行 权 衡 取舍 。这 也 意味 着分 布 式 系统 的 设计 过 程,也 就 是 根据 业务特点在 C(一致性)和 A(可用性)之间寻求平衡的过程,要求架构师真正理解系 统需求,把握业务特点. BASE 理论酸碱平衡 【BASE】来自于互联网的电子商务领域的实践,它是基于 CAP 理论逐步演化而来, 核心思想是即便不能达到【强一致性】,但可以根据应用特点采用适当的方式来达到【最 终 一 致 性 】 的 效 果 。 BASE 是 BASICALLY AVAILABLE 、 SOFT STATE 、 EVENTUALLY CONSISTENT 三个词组的简写,是对 CAP 中 C & A 的延伸,说起 来很有趣,BASE 的英文意义是碱,而 ACID 是酸,真的是水火不容。我们稍微花点 时间展开 BASE 的含义: ① BASICALLY AVAILABLE:基本可用; ② SOFT-STATE:软状态/柔性事务,即状态可以有一段时间的不同步; ③ EVENTUAL CONSISTENCY:最终一致性;