导航菜单
首页 » 无极4平台 » 正文

中国邮政快递查询-Redis高可用技能解决方案总结剖析

本文首要针对Redis常见的几种运用方法及其优缺陷打开剖析。

一、常见运用方法

Redis的几种常见运用方法包含:

Redis单副本;

Redis多副本(主从);

Redis Sentinel(岗兵);

Redis Cluster;

Redis自研。

二、各种运用方法的优缺陷

1、Redis单副本

Redis单副本,选用单个Redis节点布置架构,没有备用节点实时同步数据,不供给数据耐久化和备份战略,适用于数据牢靠性要求不高的纯缓存事务场景。



长处:

架构简略,布置便利;

高性价比:缓存运用时无需备用节点(单实例可用功能够用supervisor或crontab确保),当然为了满意事务的高可用性,也能够献身一个备用节点,但一起间只要一个实例对外供给服务;

高功能。

缺陷:

不确保数据的牢靠性;

在缓存运用,进程重启后,数据丢掉,即便有备用的节点处理高可用性,可是依然不能处理缓存预热问题,因而不适用于数据牢靠性要求高的事务;

高功能受限于单核CPU的处理才能(Redis是单线程机制),CPU为首要瓶颈,所以合适操作指令简略,排序、核算较少的场景。也能够考虑用Memcached代替。

2、Redis多副本(主从)

Redis多副本,选用主从(replication)布置结构,相较于单副本而言最大的特色便是主从实例间数据实时同步,而且供给数据耐久化和备份战略。主从实例布置在不同的物理服务器上,依据公司的根底环境装备,能够完结一起对外供给服务和读写别离战略。



长处:

高牢靠性:一方面,选用双机主备架构,能够在主库呈现毛病时主动进行主备切换,从库进步为主库供给服务,确保服务平稳运转;另一方面,敞开数据耐久化功用和装备合理的备份战略,能有用的处理数据误操作和数据反常丢掉的问题;

读写别离战略:从节点能够扩展主库节点的读才能,有用应对大并发量的读操作。

缺陷:中国邮政快递查询-Redis高可用技能解决方案总结剖析

毛病康杂乱乱,假如没有RedisHA体系(需求开发),当主库节点呈现毛病时,需求手动将一个从节点进步为主节点,一起需求告诉事务方改变装备,而且需求让其它从库节点去仿制新主库节点,整个闻业权进程需求人为干涉,比较繁琐;

主库的写才能遭到单机的约束,能够考虑分片;

主库的存储才能遭到单机的约束,能够考虑Pika;

原生仿制的坏处在前期的版别中也会比较突出,如:Redis仿制中断后,Slave会主张psync,此刻假如同步不成功,则会进行全量同步,主库履行全量备份的一起可能会形成毫秒或秒级的卡顿;又因为COW机制,导致极点状况下的主库内存溢出,程序反常退出或宕机;主库节点生成备份文件导致服务器磁盘IO和CPU(紧缩)资源耗费;发送数GB巨细的备份文件导致服务器出口带宽暴增,堵塞恳求,主张升级到最新版别。

3、Redis Sentinel(岗兵)

Redis Sentinel是社区版别推出的原生高可用处理计划,其布置架构首要包含两部分:Redis Sentinel集群和Redis数据集群。

其间Redis Sentinel集群是由若干Sentinel节点组成的散布式集群,能够完结毛病发现、毛病主动搬运、装备中心和客户端告诉。Redis Sentinel的节点数量要满意2n+1(n>=1)的奇数个。





长处:

Redis Sentinel集群布置简略;

能够处理Redis主从形式下的高可用切换问题;

很便利完结Redis数据节点的线形扩展,轻松打破Redis本身单线程瓶颈,可极大满意Redis大容量或高功能的事务需求;

能够完结一套Sentinel监控一组Redis数据节点或多组数据节点。

缺陷:

布置相对Redis主从形式要杂乱一些,原理了解更繁琐;

资源糟蹋,Redis数据节点中slave节点作为备份节点不供给服务;

Redis Sentinel首要是针对Redis数据节点中的主节点的高可用切换,对Redis的数据节点做失利断定分为片面下线和客观下线两种,关于Redis的从节点有对节点做片面下线操作,并不履行毛病搬运。

不能处理读写别离问题,完结起来相对杂乱。

主张:

假如监控同一事务,能够挑选一套Sentinel集群监控多组Redis数据节点的计划,反之挑选一套Sentinel监控一组Redis数据节点的计划。

sentinel monitor 装备中的主张设置成Sentinel节点的一半加1,当Sentinel布置在多个IDC的时分,单个IDC布置的Sentinel数量不主张超越(Sentinel数量 – quorum)。

合理设置参数,防止误切,操控切换灵敏度操控:

a. quorum

b. down-after-milliseconds 30000

c. failover-timeout 180000

d. maxclient

e. timeout

布置的各个节点服务器时刻尽量要同步,不然日志的时序性会紊乱。

Redis主张运用pipeline和multi-keys操作,削减RTT次数,进步恳求功率。

自行搞定装备中心(zookeeper),便利客户端对实例的链接拜访。

4、Redis Cluster

Redis Cluster是社区版推出的Redis散布式集群处理计划,首要处理Redis散布式方面的需求,比方,当遇到单机内存,并发和流量等瓶颈的时分,Redis Cluster能起到很好的负载均衡的意图。

Redis Cluster集群节点最小装备6个节点以上(3主3从),其间主节点供给读写操作,从节点作为备用节点,不供给恳求,只作为毛病搬运运用。

Redis Cluster选用虚拟槽分区,一切的键依据哈希函数映射到0~16383个整数槽内,每个节点担任保护一部分槽以及槽所印映射的键值数据。



长处:

无中心架构;

数据依照slot存储散布在多个节点,节点间数据同享,可动态调整数据散布;

可扩展性:可线性扩展到1000多个节点,节点可动态添加或删去;

高可用性:部分节点不行用时,集群仍可用。经过添加Slave做standby数据副本,能够完结毛病主动failover,节点之间经过gossip协议交流状况信息,用投票机制完结Slave到Master的人物进步;

下降运维本钱,进步体系的扩展性和可用性。

缺陷:

Client完结杂乱,驱动要求完结Smart Client,缓存slots mapping信息并及时更新,进步了开发难度,客户端的不老练影响事务的稳定性。现在仅JedisCluster相对老练,反常处理部分还不完善,比方常见的“max redirect exception”。

节点会因为某些原因发作堵塞(堵塞时刻大于clutser-node-timeout),被判别下线,这种failover是没有必要的。

数据经过异步仿制,不确保数据的强一致性。

多个事务运用同一套集群时,无法依据计算区别冷热数据,资源阻隔性较差,简单呈现彼此影响的状况。

Slave在集群中充任“冷备”,不能缓解读压力,当然能够经过SDK的合理规划来进步Slave资源的利用率。

Key批量操作约束,如运用mset、mget现在只支撑具有相同slot值的Key履行批量操作。关于映射为不同slot值的Key因为Keys不支撑跨slot查询,所以履行mset、mget、sunion等操作支撑中国邮政快递查询-Redis高可用技能解决方案总结剖析不友好。

Key事务操作支撑有限,只支撑多key在同一节点上的事务操作,当多个Key散布于不同的节点上时无法运用事务功用。

Key作为数据分区的最小粒度,不能将一个很大的键值目标如hash、list等中国邮政快递查询-Redis高可用技能解决方案总结剖析映射到不同的节点。

不支撑多数据库空间,单机下的redis能够支撑到16个数据库,集群形式中国邮政快递查询-Redis高可用技能解决方案总结剖析下只能运用1个数据库空间,即db 0。

仿制结构只支撑一层,从节点只能仿制主节点,不支撑嵌套树状仿制结构。

防止发生hot-key,导致主库节点成为体系的短板。

防止发生big-key,导致网卡撑爆、慢查询等。

重试时刻应该大于cluster-node-time时刻。

Redis Cluster不主张运用pipeline和multi-keys操作,削减max redirect发生的场景。

5、Redis自研

Redis自研的高可用处理计划,首要体现在装备中心、毛病勘探和failover的处理机制上,一般需求依据企业事务的实践线上环境来定制化。





长处:

高牢靠性、高可用性;

自主可控性高;

恰当事务实践需求,可缩性好,兼容性好。

缺陷:

完结杂乱,开发本钱高;

需求树立配套的周边设备,如监控,域名服务,存储元数据信息的数据库等;

保护本钱高。

小编在学习进程中整理了一些学习材料,能够共享给做java的工程师朋友们,彼此交流学习,需求的能够私信(材料)即可免费获取Java架构学习材料(里边有高可用、高并发、高功能及散布式、Jvm功能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构材料)

其间覆盖了互联网的方方面面,期间碰到各种产品各种场景下的各种问题,很值得我们学习和学习,扩展自己的技能广度和知识面。最终记住帮作者点个重视

二维码