feat: update duplicate files and generate pagination

移除冗余文件,激活页面底部导航
This commit is contained in:
yanglbme
2020-04-05 16:25:25 +08:00
parent d497fffafb
commit ee7f18e797
177 changed files with 241 additions and 201 deletions

View File

@@ -27,11 +27,11 @@ redis cluster主要是针对**海量数据+高并发+高可用**的场景。r
**集中式**是将集群元数据(节点信息、故障等等)几种存储在某个节点上。集中式元数据集中存储的一个典型代表,就是大数据领域的 `storm`。它是分布式的大数据实时计算引擎,是集中式的元数据存储的结构,底层基于 zookeeper分布式协调的中间件对所有元数据进行存储维护。
![zookeeper-centralized-storage](/images/zookeeper-centralized-storage.png)
![zookeeper-centralized-storage](./images/zookeeper-centralized-storage.png)
redis 维护集群元数据采用另一个方式, `gossip` 协议,所有节点都持有一份元数据,不同的节点如果出现了元数据的变更,就不断将元数据发送给其它的节点,让其它节点也进行元数据的变更。
![redis-gossip](/images/redis-gossip.png)
![redis-gossip](./images/redis-gossip.png)
**集中式**的**好处**在于,元数据的读取和更新,时效性非常好,一旦元数据出现了变更,就立即更新到集中式的存储中,其它节点读取的时候就可以感知到;**不好**在于,所有的元数据的更新压力全部集中在一个地方,可能会导致元数据的存储有压力。
@@ -71,7 +71,7 @@ ping 时要携带一些元数据,如果很频繁,可能会加重网络负担
#### hash 算法
来了一个 key首先计算 hash 值,然后对节点数取模。然后打在不同的 master 节点上。一旦某一个 master 节点宕机,所有请求过来,都会基于最新的剩余 master 节点数去取模,尝试去取数据。这会导致**大部分的请求过来,全部无法拿到有效的缓存**,导致大量的流量涌入数据库。
![hash](/images/hash.png)
![hash](./images/hash.png)
#### 一致性 hash 算法
一致性 hash 算法将整个 hash 值空间组织成一个虚拟的圆环,整个空间按顺时针方向组织,下一步将各个 master 节点(使用服务器的 ip 或主机名)进行 hash。这样就能确定每个节点在其哈希环上的位置。
@@ -82,7 +82,7 @@ ping 时要携带一些元数据,如果很频繁,可能会加重网络负担
燃鹅,一致性哈希算法在节点太少时,容易因为节点分布不均匀而造成**缓存热点**的问题。为了解决这种热点问题,一致性 hash 算法引入了虚拟节点机制,即对每一个节点计算多个 hash每个计算结果位置都放置一个虚拟节点。这样就实现了数据的均匀分布负载均衡。
![consistent-hashing-algorithm](/images/consistent-hashing-algorithm.png)
![consistent-hashing-algorithm](./images/consistent-hashing-algorithm.png)
#### redis cluster 的 hash slot 算法
redis cluster 有固定的 `16384` 个 hash slot对每个 `key` 计算 `CRC16` 值,然后对 `16384` 取模,可以获取 key 对应的 hash slot。
@@ -91,7 +91,7 @@ redis cluster 中每个 master 都会持有部分 slot比如有 3 个 master
任何一台机器宕机,另外两个节点,不影响的。因为 key 找的是 hash slot不是机器。
![hash-slot](/images/hash-slot.png)
![hash-slot](./images/hash-slot.png)
### redis cluster 的高可用与主备切换原理
redis cluster 的高可用的原理,几乎跟哨兵是类似的。