一、解决主从复制问题
当使用Redis作为存储引擎的时候,并且使用Redis读写分离,从机作为读的情况,从机宕机或者和主机断开连接都需要重新连接主机,重新连接主机都会触发全量的主从复制,这时候主机会生成内存快照,主机依然可以对外提供服务,但是作为读的从机,就无法提供对外服务了,如果数据量大,恢复的时间会相当的长。为了解决Redis主从Copy的问题,有如下两个解决方案:
主动复制
所谓主动复制,就是业务层双写多个Redis,避开Redis自带的主从复制。但是自己干同步,就会产生一致性问题,为了保证主从一致,需要加入一系列的验证机制。而且这样的做法,会降低系统性能。
修改源代码,支持增量同步
Redis写AOF文件,关闭Redis rewrite AOF文件功能,为了避免文件过大,可以自己实现文件分割功能。
在业务低峰时期,生成内存快照,并记录快照时刻AOF所在的点。
当从机重连的时候,从机发送同步命令给主机,主机收到命令后,把最新的快照文件发送给从机,从机从快照文件中恢复,并且获得了该快照对应的AOF点,从机将AOF点发送给主机,主机将AOF文件中该点之后的所有数据操作同步给从机,达到增量同步的效果。
二、解决扩容问题
Redis作者的思路是:Redis Presharding(http://oldblog.antirez.com/post/redis-presharding.html)
预算设定Redis instances数量,假设实例数量n,n = 机器数*单台机器redis实例数
后期扩展只需要将旧机器上的部分redis实例迁移到新的机器上,达到平滑扩容。
迁移步骤如下:
在新的机器上创建实例,并且每个实例设置为被迁移实例的从机。
主从复制完成之后,设置程序将新的实例作为主。
停止旧的实例
经过如上步骤之后,旧机器的内存就变大了,最后内存最大为每台机器一个Redis实例。
按作者文章中所说的,一个机器启动多个实例,其实并不会耗费太多资源,因为Redis够轻量,另外多个实例一个接一个的重写AOF文件或者生成内存快照,可以降低内存的占用,而不影响对外的服务。
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 李国祥.2011-循环再唱(K2HD限量版)【新世纪】【WAV+CUE】
- 【原神】枫丹V4.6世界任务 | 终章·安魂曲+++后续隐藏任务
- 【原神】V4.6角色攻略 | 选仆人还是林尼?优缺点对比
- 【原神】旧日之海,奇馈宝箱收集(共10个)
- 龚玥《龚玥精选珍藏》[WAV+CUE][649M]
- 群星《勃拉姆斯钢琴四重奏全集1-3》[320K/MP3][287.13MB]
- 群星《勃拉姆斯钢琴四重奏全集1-3》[FLAC/分轨][546.47MB]
- 飞跃虹镜什么时候上线 国服公测时间预测
- 七日世界阿尔法收容井在哪 位置及玩法介绍
- 原神4.6版本隐藏锚点开启攻略 从大海到大海成就
- dnf无敌药水什么名字
- 物华弥新换位置方法分享 物华弥新怎么换位置
- 物华弥新迷踪盘第15关怎么过 迷踪盘第15关通关方法
- win7怎么更换激活码,win7更改激活码
- 电脑怎么安装安卓系统不卡的,电脑怎么安装安卓系统软件