From c468418885fb802049fabb679c64b7e72417b873 Mon Sep 17 00:00:00 2001 From: CyC2018 <1029579233@qq.com> Date: Sat, 17 Mar 2018 21:42:01 +0800 Subject: [PATCH] auto commit --- notes/分布式基础.md | 102 ++++++++++++++++++++++---------------------- 1 file changed, 51 insertions(+), 51 deletions(-) diff --git a/notes/分布式基础.md b/notes/分布式基础.md index a49332f4..212a24c6 100644 --- a/notes/分布式基础.md +++ b/notes/分布式基础.md @@ -1,56 +1,56 @@ -* [基本概念](#基本概念) - * [1. 异常](#1-异常) - * [1.1 服务器宕机](#11-服务器宕机) - * [1.2 网络异常](#12-网络异常) - * [1.3 磁盘故障](#13-磁盘故障) - * [2. 超时](#2-超时) - * [3. 衡量指标](#3-衡量指标) - * [3.1 性能](#31-性能) - * [3.2 可用性](#32-可用性) - * [3.3 一致性](#33-一致性) - * [3.4 可扩展性](#34-可扩展性) -* [数据分布](#数据分布) - * [1. 哈希分布](#1-哈希分布) - * [2. 顺序分布](#2-顺序分布) -* [负载均衡](#负载均衡) -* [复制](#复制) +* [一、基本概念](#一基本概念) + * [异常](#异常) + * [1. 服务器宕机](#1-服务器宕机) + * [2. 网络异常](#2-网络异常) + * [3. 磁盘故障](#3-磁盘故障) + * [超时](#超时) + * [衡量指标](#衡量指标) + * [1. 性能](#1-性能) + * [2. 可用性](#2-可用性) + * [3. 一致性](#3-一致性) + * [4. 可扩展性](#4-可扩展性) +* [二、数据分布](#二数据分布) + * [哈希分布](#哈希分布) + * [顺序分布](#顺序分布) +* [三、负载均衡](#三负载均衡) +* [四、复制](#四复制) * [1. 强同步复制协议](#1-强同步复制协议) * [2. 异步复制协议](#2-异步复制协议) -* [CAP](#cap) -* [BASE](#base) - * [1. 基本可用](#1-基本可用) - * [2. 软状态](#2-软状态) - * [3. 最终一致性](#3-最终一致性) -* [容错](#容错) - * [1. 故障检测](#1-故障检测) - * [2. 故障恢复](#2-故障恢复) -* [CDN 架构](#cdn-架构) +* [五、CAP](#五cap) +* [六、BASE](#六base) + * [基本可用](#基本可用) + * [软状态](#软状态) + * [最终一致性](#最终一致性) +* [七、容错](#七容错) + * [故障检测](#故障检测) + * [故障恢复](#故障恢复) +* [八、CDN 架构](#八cdn-架构) * [参考资料](#参考资料) -# 基本概念 +# 一、基本概念 -## 1. 异常 +## 异常 -### 1.1 服务器宕机 +### 1. 服务器宕机 内存错误、服务器停电等都会导致服务器宕机,此时节点无法正常工作,称为不可用。 服务器宕机会导致节点失去所有内存信息,因此需要将内存信息保存到持久化介质上。 -### 1.2 网络异常 +### 2. 网络异常 有一种特殊的网络异常称为 **网络分区** ,即集群的所有节点被划分为多个区域,每个区域内部可以通信,但是区域之间无法通信。 -### 1.3 磁盘故障 +### 3. 磁盘故障 磁盘故障是一种发生概率很高的异常。 使用冗余机制,将数据存储到多台服务器。 -## 2. 超时 +## 超时 在分布式系统中,一个请求除了成功和失败两种状态,还存在着超时状态。 @@ -58,9 +58,9 @@ 可以将服务器的操作设计为具有 **幂等性** ,即执行多次的结果与执行一次的结果相同。如果使用这种方式,当出现超时的时候,可以不断地重新请求直到成功。 -## 3. 衡量指标 +## 衡量指标 -### 3.1 性能 +### 1. 性能 常见的性能指标有:吞吐量、响应时间。 @@ -72,11 +72,11 @@ - 但是在并发的系统中,由于一个请求在调用 I/O 资源的时候,需要进行等待。服务器端一般使用的是异步等待方式,即等待的请求被阻塞之后不需要一直占用 CPU 资源。这种方式能大大提高 CPU 资源的利用率,例如上面的例子中,单个请求在无并发的系统中响应时间为 10 ms,如果在并发的系统中,那么吞吐量将大于 100 req/s。因此为了追求高吞吐量,通常会提高并发程度。但是并发程度的增加,会导致请求的平均响应时间也增加,因为请求不能马上被处理,需要和其它请求一起进行并发处理,响应时间自然就会增高。 -### 3.2 可用性 +### 2. 可用性 可用性指系统在面对各种异常时可以提供正常服务的能力。可以用系统可用时间占总时间的比值来衡量,4 个 9 的可用性表示系统 99.99% 的时间是可用的。 -### 3.3 一致性 +### 3. 一致性 可以从两个角度理解一致性:从客户端的角度,读写操作是否满足某种特性;从服务器的角度,多个数据副本之间是否一致。 @@ -86,21 +86,21 @@ 2. 弱一致性:新数据写入之后,不能保证在数据副本上能读取到最新值; 3. 最终一致性:新数据写入之后,只能保证过一了一个时间窗口才能读取到最新值; -### 3.4 可扩展性 +### 4. 可扩展性 指系统通过扩展集群服务器规模来提高性能的能力。理想的分布式系统需要实现“线性可扩展”,即随着集群规模的增加,系统的整体性能也会线程增加。 -# 数据分布 +# 二、数据分布 分布式系统的数据分布在多个节点中,常用的数据分布方式有哈希分布和顺序分布。 -## 1. 哈希分布 +## 哈希分布 哈希分布就是将数据计算哈希值之后,按照哈希值分配到不同的节点上。例如有 N 个节点,数据的主键为 key,则将该数据分配的节点序号为:hash(key)%N。 传统的哈希分布算法存在一个问题:当节点数量变化时,也就是 N 值变化,那么几乎所有的数据都需要重新分布,将导致大量的数据迁移。 -**一致性哈希** +#### 一致性哈希 Distributed Hash Table(DHT):对于哈希空间 0\~2n,将该哈希空间看成一个哈希环,将每个节点都配置到哈希环上。每个数据对象通过哈希取模得到哈希值之后,存放到哈希环中顺时针方向第一个大于等于该哈希值的节点上。 @@ -110,7 +110,7 @@ Distributed Hash Table(DHT):对于哈希空间 0\~2n,将该