订阅博客
收藏博客
微博分享
QQ空间分享

杞菊地黄丸,redis 集群形式的作业原理能说一下么?key 是怎么寻址的?,忻州天气预报

频道:全民彩票网网址 标签:旋风少女2浮生物语 时间:2019年05月14日 浏览:207次 评论:0条

面试题

redis 集群方法的作业原理能说一下么?在集群方法下,redis 的 key 是怎样寻址的?散布式寻址都有哪些算法?了解一致性 hash 算法吗?

面试官心思分析

在前几年,redis 假如要搞几个节点,每个节点存储一部分的数据,得凭借一些中间件来完成,比方说有 codis,或许 twemproxy,都有。有一些 redis 中间件,你读写 redis 中间件,redis 中间件担任将你的锦州医科大学图书馆数据散布式存储在多台机器上的 redis 实例中。

这两年,redis 不断在开展,redis 也不断有新的版别,现在的 redis 集群方法,能够做到在多台机器上,布置多个 redis 实例,每个实例存储一部分的数据,一起每个 redis 主实例能够挂 redis 从实例,主动确保说,假如 redis 主实例挂了,会主动切换到 redis 从实例上来苏秦。

现在 redis 的新版别,咱们都节哀顺变是用 redis cluster 的,也便是 redis 原生支撑的 redis 集群方法,那么面试官肯定会就 re杞菊地黄丸,redis 集群方法的作业原理能说一下么?key 是怎样寻址的?,忻州天气预报dis cluster 对你来个几连炮。要是你没用过 redis cluster,正常,曾经很多人用 codis 之类的客户端来支撑集群,可是最少你得研究一下 redis cluster 吧。

假如你的数据量很少,主要是承载高并发高性能的场景,比方你的缓存一般就几个 G,单机就足够了,能够运用 replication,一个 master 多个 slaves,要几个 slave 跟你要求的读吞吐量有关,然后自己建立一个 sentinel 集群去确保 redis 主从架构的高可用性。

redis cluster,主要是针对海量数据+高并发+高可用的场景。redis cluster 支撑 N 个 redis master node,每个 master node 都能够挂载多个 slave node。这样整个 redis 就能够横向扩容了。假如你要支撑更大数据量的缓存,那就横向扩容更多的 ma岐山ster 节点,每个 master 节点就能寄存更多的数据了。

面试题分析

redis cluster 介绍

  • 主动将数据进行分片,每个 master 上放一部分数据
  • 供给内置的高可用支撑,部分 master 不行用时,仍是可杞菊地黄丸,redis 集群方法的作业原理能说一下么?key 是怎样寻址的?,忻州天气预报以持续作业的

在 redis 平头cluster 架构下,每个 redis 要铺开两个端口号,比方一个是 63杞菊地黄丸,redis 集群方法的作业原理能说一下么?key 是怎样寻址的?,忻州天气预报79,别的一个便是 加1w 的端口号,比方 16379。

16379 端口号是用来进行节点间通讯的,也便是 cluster bus 的东西,cluster bus 的通讯,用来进行毛病检测、装备更新、毛病陆丰搬运授权。cluster bus 用了别的一种二进制的协议,gossip 协议,用于节点间进行高效的数据交流,占用更少的网络带宽和处理时刻。

节点间的内部通讯机制

根本通讯原理

集群元数据的保护有两种方法:会集式、Gossip 协议。redis cluster 节点间选用 gossip 协议进行通讯。

会集式是将集群元数据(节点信息、毛病等等)几种存储在某个节点上。会集式元数据会集存储的一个典型代表,便是大数据范畴的 storm。它是散布式的大数据实时核算引擎,是会集式的元数据存储的结构,底层依据 zookeeper(散布式和谐的中间件)对一切元数据进行存储保护。

redis 保护集群元数据选用另一个方法, gossip 协议,一切节点都持有一份元数据,不同的节点假如呈现了元数据的改变,就不断将元数据发送给其它的节点,让其它节点也进行元数据的改变。

会集式的优点在于,元数据的读取和更新,时效性十分好,一旦元数据呈现了改变,就当即更新到会集式的存储中,其它节点读取的时分就能够感知到;欠好在于,一切的元数据的更新压力悉数会集在一个当地,或许会导致元数据的存储有压力。

go烫坏ssip 优点在于,元数据的更新比较涣散,不是会集在一个当地,更新恳求会陆陆续续打到一切节点上去更新,下降了压力;欠好在于,元数据的更新有延时,或许导致集群中的一些操作会有一些滞后。

  • 10000 端口:每个节点都有一个专门用于节点间通讯的端口,便是自己供给服务的端口号+10000,比方 7001,那么用于节点间通讯的便是 17001 端口。每个节点每隔一段时刻都会往别的几个节点发送 ping 音讯,一起其它几个节点接收到 ping 之后回来 pong。
  • 交流的信息:信息包括毛病信息,节点的添加和删去,hash slot 信息等等。

gossip 协议

gossip 协议包括多种音讯,包括 ping,pong,meet,fail 等等。

  • meet:某个节点发送 meet 给新参加的哀痛逆流成河电影节点,让新节点参加集群中,然后新节点就会开端与其它节点进行通讯。
redis-trib.rb add-node

其实内部便是发送了一个 gossip meet 音讯给新参加的节点,告诉那个节点去参加咱们的集群。

  • ping:每个节点都会频频给其它节点发送 ping,其间包括自己的状况还有自己保护的集群元数据,相互经过 ping 交流元数据。
  • pong:回来 ping 和 meeet,包括自己的状况和其它信息,混世四猴和七大神猿也用于信息播送和更新。
  • fail:某个节点判别另一拘谨个节点 fail 之后,就发送 fail 给其它节点,告诉其它节点说,某个节点宕机啦。

ping 音讯深化

ping 时要带着一些元数据,假如很频频,或许会加剧网络担负。

每个节点每秒会履行 10 次 ping,每次会挑选 5 个最久没有通讯的其它节点。当然假如发现某个节点通讯延时达到了 cluster_node_timeout / 2,那么当即发送 ping,防止数据交流延时过长,聚宝币落后的时刻太长了。比方说,两个节点之间都 10 分钟王国维没有交流数据了,那么整个集群处于严峻的元数据不一致的状况,就会有问题。所以 cluster_node_timeout 能够调理,假如调得比较大,那么会下降 ping 的频率。

每次 p杞菊地黄丸,redis 集群方法的作业原理能说一下么?key 是怎样寻址的?,忻州天气预报ing,会带上自己节点的信息,还有便是带上 1/10 其它节点的信息,发送出去,进行交流。至少包括 3 个其它节溉组词点的信息,最多包括 总节点数减 2 个其它节点的信息。

散布式寻址算法

  • hash 算法(很多缓存重建)
  • 一致性 hash 算法(主动缓存搬迁)+ 虚拟节点(主动负载均衡)
  • redis cluster 的 hash slot 算法

hash 算法

来了一个 key,首要核算 hash 值,然后对节点数取模。然后打在不同的 master 节点上。一旦某一个 master 节点宕机,一切恳求过来,都会依据最新的剩下 master 节点数去取模,测验去取数据。这会导致大部分的恳求过来,悉数无法拿到有用的缓存,导致很多的流量涌入数据库。

一致性 hash 算法

一致性 hash 算法将整个 hash 值空间安排成一个虚拟的圆环,整个空间按顺时针方向安排,下一步将各个 master 节点(运用服务器的 ip 或please主机名)进行 hash。这样就能确认每个节点在其哈希环上的方位。

来了一个 key,首要核算 hash 值,并确认此数据在环上的方位,从此方位沿环顺时针“行走”,遇到的第一个 master 节杞菊地黄丸,redis 集群方法的作业原理能说一下么?key 是怎样寻址的?,忻州天气预报点便是 key 所在方位。

在一致性哈希算法中,假如一个节点挂了,受影响的数据仅仅是此节点到环空间前一个节点(沿着逆时针方向行走遇到的第一个节点)之间的数据,其它不受影响。添加一个节点也同理。

燃鹅,一致性哈希算法三菱翼神在节点太少时,简单由于节点散布不均匀而形成缓存热门的问题。为了处理这种热门问题,一致性 hash 算法引入了虚拟节点机制,即对每一个节点核算多个 hash,每个核算结果位香巴拉的进口已找到置都放置一个虚拟节点。这样就完成了数据的均匀散布,负载均衡。

redis cluster 的 hash slot 算法

redis cluster 有固定的 16384 个 hash slot,对每个 key 核算 CRC16 值,然后对 16384 取模,能够获取 key 对应的 hash slot。

redis cluster 中每个 master 都会持有部分 slot,比方有 3 个 master,那么或许每个 master 持有 5000 多个 hash slot。hash slot 让 node 的添加和移除很简单,添加一个 master,就将其他 master 的 hash slot 移动部分曩昔,削减一个 master,就将它的 hash slot 杞菊地黄丸,redis 集群方法的作业原理能说一下么?key 是怎样寻址的?,忻州天气预报移动到其他 master 上去。移动 hash slot 的本钱是十分低的。客户端的 api,能够对指定的数据,让他们走同一个 hash slot,经过 hash tag 来完成。

任何一台机器宕机,别的两个节点,不影响的。由于 key 找的是 hash slot,不是机器。

redis cluster 的高可用与主备切换原理

redis cluster 的高可用的原理,简直跟岗兵是相似的。

判别节点宕机

假如一个节点以为别的一个节点宕机,那么便是 pfail,片面宕机。假如多个节点都以为别的一个节点宕机了,那么便是 fail,客观宕机,跟岗兵的原理简直相同,sdown,odown。

在 cluster-node-timeout 内,某个节点一向没有回来 p浅笑28猜测ong,那么就被以为 pfail。

假如一个节点以为某个节点 pfail 了,那么会在 gossip ping 音讯中,ping 给其他节点,假如超越对折的节点都以为 pfail 了,那么就会变成 fail。杞菊地黄丸,redis 集群方法的作业原理能说一下么?key 是怎样寻址的?,忻州天气预报

从节点过滤

对宕机的 master node,从其一切的 slave node 中,挑选一个切换成 master node。

查看每个 slave node 与 master node 断开衔接的时刻,假如超越了 cluster-node-timeout * cluster-slave-validity-factor,那么就没有资历切换成 master。

从节点推举

每个从节点,都依据自己对 master 仿制数据的 offset,来设置一个推举时刻,offset 越大(仿制数据越多)的从节点,推举时刻越靠前,优先进行推举。

一切的 master node 开端 slave 推举投票,给要进行推举的 slave 进行投票,假如大部分 master node(N/2 + 1)都投票给了某有限公司和有限责任公司的区别个从节点,那么推举经过,那个从节点能够切换成 master。

从节点履行主备切换,从五年级下册英语书节点切换为主节点。

与岗兵比较

整个流程跟岗兵比较,十分相似,所以说,redis cluster 功用强大,直接集成了 replication 和 sentinel 的功用。