去哪儿网站建设需要哪些技术,做一个网站需要到哪里做,网站建设需要技术,最牛的SEO教程网站文章目录 前言1. 单机模式2. 主从架构3. 哨兵4. 集群模式总结 前言
如果Redis的读写请求量很大#xff0c;那么单个实例很有可能承担不了这么大的请求量#xff0c;如何提高Redis的性能呢#xff1f;你也许已经想到了#xff0c;可以部署多个副本节点#xff0c;业务采用… 文章目录 前言1. 单机模式2. 主从架构3. 哨兵4. 集群模式总结 前言
如果Redis的读写请求量很大那么单个实例很有可能承担不了这么大的请求量如何提高Redis的性能呢你也许已经想到了可以部署多个副本节点业务采用读写分离的方式把读请求分担到多个副本节点上提高访问性能。要实现读写分离就必须部署多个副本每个副本需要实时同步主节点的数据。
1. 单机模式
Redis 单副本采用单个 Redis 节点部署架构没有备用节点实时同步数据不提供数据持久化和备份策略适用于数据可靠性要求不高的纯缓存业务场景。 优点 架构简单部署方便。高性价比缓存使用时无需备用节点(单实例可用性可以用 supervisor 或 crontab 保证)当然为了满足业务的高可用性也可以牺牲一个备用节点但同时刻只有一个实例对外提供服务。高性能。 缺点 不保证数据的可靠性。在缓存使用进程重启后数据丢失即使有备用的节点解决高可用性但是仍然不能解决缓存预热问题因此不适用于数据可靠性要求高的业务。高性能受限于单核 CPU 的处理能力(Redis 是单线程机制)CPU 为主要瓶颈所以适合操作命令简单排序、计算较少的场景。也可以考虑用 Memcached 替代。
2. 主从架构
主master和 从slave部署在不同的服务器上当主节点服务器写入数据时会同步到从节点的服务器上一般主节点负责写入数据从节点负责读取数据。 从节点设置只读属性而主节点没有只写属性因此主节点可读可以写 优点 读写分离提高效率 主节点负责写操作从节点负责读操作如果写少读多场景配置多个从节点的话效率非常高数据热备份提供多个副本。 从节点宕机影响较小 缺点 主节点故障集群则无法进行工作可用性比较低从节点升主节点需要人工手动干预。 因为只有主节点能进行写操作一旦主节点宕机整个服务就无法使用。当然此时从节点仍可以进行读操作但是对于整个服务流程来说是无法使用的。 Master的写的压力难以降低。 如果写操作比较多那么只有一个主节点的话无法分担压力。 主节点存储能力受到单击限制。 主节点只能有一个因此单节点内存大小不会太大因此存储数据量受限。 主从数据同步可能产生部分的性能影响甚至同步风暴。 风暴问题对于任何集群分布式来说都存在要合理分布节点。 3. 哨兵
为了解决这两个问题在2.8版本之后redis正式提供了sentinel架构。
在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态。
如果master节点异常则会做主从切换将某一台slave作为master哨兵的配置略微复杂并且性能和高可用性等各方面表现一般。 优点 对节点进行监控来完成自动的故障发现与转移 缺点 特别是在主从切换的瞬间存在访问瞬断的情况等待时间比较长至少十来秒不可用。哨兵模式只有一个主节点对外提供服务没法支持很高的并发单个主节点内存也不宜设置得过大否则会导致持久化文件过大影响数据恢复或主从同步的效率。 与主从相比哨兵仅解决了手动切换主从节点问题至于其他的问题基本上仍然存在。 哨兵的主要问题还是由于中心架构仅存在一个master节点引起的写的效率太低。4. 集群模式
Redis Cluster 是 3.0 版后推出的 Redis 分布式集群解决方案主要解决 Redis 分布式方面的需求比如当遇到单机内存并发和流量等瓶颈的时候Redis Cluster 能起到很好的负载均衡的目的。
Redis Cluster 集群节点最小配置 6 个节点以上(3 主 3 从)其中主节点提供读写操作从节点作为备用节点不提供请求只作为故障转移使用。Redis Cluster 采用虚拟槽分区所有的键根据哈希函数映射到 016383 个整数槽内每个节点负责维护一部分槽以及槽所印映射的键值数据。 注意集群模式下 从节点不提供读写与主从模式不一样。 总结一下经验分布式 场景下集群模式一般从节点不参与读写仅作为备用节点。而主从一般都要负责读或写都要参与具体的工作。 优点 无中心架构。 即有多个master节点不像哨兵模式下仅有一个。这样写的压力就可以分散了并且存储量也可以扩展了因为多个主节点都可以存储一部分数据总量要远大于单主节点架构。 数据按照 slot 存储分布在多个节点节点间数据共享可动态调整数据分布。 可扩展性可线性扩展到 1000 多个节点节点可动态添加或删除。 高可用性部分节点不可用时集群仍可用。通过增加 Slave 做 standby 数据副本能够 实现故障自动 failover节点之间通过 gossip 协议交换状态信息用投票机制完成 Slave 到 Master 的角色提升。 当然如果某个槽归属的小群内都不可用时整个服务仍然是不可用的通过cluster-require-full-coverageyes 控制该特性 默认yes 即需要集群完整方可对外提供服务设置为no 其他的小集群仍然可以对外提供服务。 缺点 如果主节点A和它的从节点A1都宕机了那么该集群就无法再提供服务了。
总结
本文主要介绍了 Redis 四种集群模式以及优缺点总结一下
主从模式 可以实现读写分离数据备份。但是并不是「高可用」的哨兵模式 可以看做是主从模式的「高可用」版本其引入了 Sentinel 对整个 Redis 服务集群进行监控。但是由于只有一个主节点因此仍然有写入瓶颈。Cluster 模式 不仅提供了高可用的手段同时数据是分片保存在各个节点中的可以支持高并发的写入与读取。当然实现也是其中最复杂的。