auto commit

This commit is contained in:
CyC2018 2018-03-15 15:14:44 +08:00
parent aa03f65916
commit e86c94e27d

View File

@ -42,7 +42,9 @@
### 1.3 磁盘故障
磁盘故障是一种发生概率很高的异常,需要使用冗余机制,将数据存储到多台服务器。
磁盘故障是一种发生概率很高的异常。
使用冗余机制,将数据存储到多台服务器。
## 2. 超时
@ -62,9 +64,9 @@
这两个指标往往是矛盾的,追求高吞吐的系统,往往很难做到低响应时间,解释如下:
在无并发的系统中,吞吐量为响应时间的倒数,例如响应时间为 10 ms那么吞吐量为 100 req/s因此高吞吐也就意味着低响应时间。
- 在无并发的系统中,吞吐量为响应时间的倒数,例如响应时间为 10 ms那么吞吐量为 100 req/s因此高吞吐也就意味着低响应时间。
但是在并发的系统中,由于一个请求在调用 I/O 资源,需要进行等待。服务器端一般使用的是异步等待,即等待的请求被阻塞之后不用一直占用 CPU 资源,这种方式能大大提高 CPU 资源的利用率。例如上面的例子中,单个请求在无并发的系统中响应时间为 10 ms如果在并发的系统中那么吞吐量将大于 100 req/s因此为了追求高吞吐量,通常会提高并发程度。但是并发程度的增加,会导致请求的平均响应时间也增加,因为请求不能马上被处理,需要和其它请求一起进行并发处理,响应时间自然就会增高。
- 但是在并发的系统中,由于一个请求在调用 I/O 资源的时候,需要进行等待。服务器端一般使用的是异步等待方式,即等待的请求被阻塞之后不需要一直占用 CPU 资源。这种方式能大大提高 CPU 资源的利用率,例如上面的例子中,单个请求在无并发的系统中响应时间为 10 ms如果在并发的系统中那么吞吐量将大于 100 req/s因此为了追求高吞吐量,通常会提高并发程度。但是并发程度的增加,会导致请求的平均响应时间也增加,因为请求不能马上被处理,需要和其它请求一起进行并发处理,响应时间自然就会增高。
### 3.2 可用性
@ -72,7 +74,7 @@
### 3.3 一致性
一致性问题是指对于一组服务器,给定一组操作,我们需要一个协议使得最后它们的结果达成一致。也可以理解为,当某个服务器收到客户端的一组指令时,它必须与其它服务器交流以保证所有的服务器都是以同样的顺序收到同样的指令
一致性问题是指对于一组服务器,给定一组操作,它们的结果达成一致。也可以理解为,当某个服务器收到客户端的一组操作时,它必须与其它服务器交流以保证所有的服务器都是以同样的顺序收到并执行同样的操作
### 3.4 可扩展性
@ -90,11 +92,11 @@
**一致性哈希**
Distributed Hash TableDHT:对于哈希空间 0\~2<sup>n</sup>,将该哈希空间看成一个哈希环,将每个节点都配置到哈希环上。每个数据对象通过哈希取模得到哈希值之后,存放到哈希环中顺时针方向第一个大于等于该哈希值的节点上。
Distributed Hash TableDHT:对于哈希空间 0\~2<sup>n</sup>,将该哈希空间看成一个哈希环,将每个节点都配置到哈希环上。每个数据对象通过哈希取模得到哈希值之后,存放到哈希环中顺时针方向第一个大于等于该哈希值的节点上。
<div align="center"> <img src="../pics//d2d34239-e7c1-482b-b33e-3170c5943556.jpg"/> </div><br>
一致性哈希的优点是在加入或者删除节点时只会影响到哈希环中相邻的节点,例如下图中新增节点 X只需要将数据对象 C 重新存放到节点 X 上即可,对于节点 A、B、D 都没有影响。
一致性哈希的优点是在加入或者删除节点时只会影响到哈希环中相邻的节点,例如下图中新增节点 X只需要将数据对象 C 重新存放到节点 X 上即可,对于节点 A、B、D 都没有影响。
<div align="center"> <img src="../pics//91ef04e4-923a-4277-99c0-6be4ce81e5ac.jpg"/> </div><br>
@ -102,7 +104,9 @@ Distributed Hash TableDHT对于哈希空间 0\~2<sup>n</sup>,将该哈
哈希分布式破坏了数据的有序性,顺序分布则不会。
顺序分布的数据划分为多个连续的部分按一定策略分布到不同节点上。例如下图中User 表的主键范围为 1 \~ 7000使用顺序分布可以将其划分成多个子表对应的主键范围为 1 \~ 10001001 \~ 2000...6001 \~ 7000。其中 Meta 表示为了支持更大的集群规模,它将原来的一层索引结分成两层,使用 Meta 表来维护 User 子表所在的节点,从而减轻 Root 节点的负担。
顺序分布的数据划分为多个连续的部分按一定策略分布到不同节点上。例如下图中User 表的主键范围为 1 \~ 7000使用顺序分布可以将其划分成多个子表对应的主键范围为 1 \~ 10001001 \~ 2000...6001 \~ 7000。
其中 Meta 表是为了支持更大的集群规模,它将原来的一层索引结分成两层,使用 Meta 表来维护 User 子表所在的节点,从而减轻 Root 节点的负担。
<div align="center"> <img src="../pics//8f64e9c5-7682-4feb-9312-dea09514e160.jpg"/> </div><br>