Redis学习笔记七:主从集群
单机,单节点,单实例的Redis会有什么问题呢?
容易导致单点故障,那么如何解决呢?
可以通过主备方式
同时可以实现读写分离
这里的每个节点是全量的,镜像的。
单节点的容量有限而且单点的压力比较大,如何解决呢?
可以分不同的实例来存不同的业务数据
每种业务数据也可以根据不同的规则放到同一组的Redis库中
引入多个Redis实例后,会出现数据一致性的问题,如何解决呢?
如果要达到强一致性(同步方式),就容易导致不可用性,比如一个节点写成功后,同步到其他节点,假设其他节点有一个网络延迟或者故障,就会导致整个服务不可用,所以,如果要保证可用 ,需要容忍丢失一些数据(主节点写成功立即给客户端返回成功,异步把数据同步到其他备用节点)。如果要保证数据不丢失(保证最终一致性),可以考虑使用消息队列。
这里就要求消息队列本身是可靠的,这种方式保证了最终一致性,也会有问题,比如多个客户端访问的时候,有可能会取到不一致的数据。
主从方式
客户端可以访问主,也可以访问从
主备方式
客户端只访问主,不访问备,只有当主挂了才访问备
无论主从和主备,主都成了单点故障,如何解决这个问题呢?
所以必须要对主做HA(比如主挂了,从机顶上去做主机)
要对主进行HA,必须要选择一个高可用的监控程序,
监控程序的设计要考虑,是多个监控程序报告Redis挂了才算Redis真的挂了(如果不这样,容易产生脑裂问题,即:出现数据分区)
如果有N个节点,需要N/2+1个节点报告异常(过半),才算真的异常。
脑裂是否要处理,要看你的分区容忍性。
机器的台数是奇数比较好。
主从复制实验
通过install_server.sh脚本在一台机器安装三个redis实例
6379
6380
6381
首先停掉这三个实例,然后把这三个实例的配置文件统一放到一个地方,我放在/data目录下
cp /etc/redic/*.conf /data/
修改三个实例的如下配置
# 关闭aof
appendonly no
# 设置前台运行
daemonize no
# 注释掉logfile
# logfile /var/log/redis_6379.log
然后启动三个实例
redis-server /data/6379.conf
redis-server /data/6380.conf
redis-server /data/6381.conf
启动客户端
redis-cli -p 6379
redis-cli -p 6380
redis-cli -p 6381
把6380 和 6381 设置为6379的从机,在6380和6381两个客户端均执行
replicaof 127.0.0.1 6379
我们在6379客户端执行一条语句
set k1 from6379
然后在6380和6381都执行
127.0.0.1:6381> get k1
"from6379"
127.0.0.1:6380> get k1
"from6379"
可以看到从机同步到了主机的数据
在6380或者6381中任意一台的客户端执行
127.0.0.1:6381> set k2 asdfasd
(error) READONLY You can't write against a read only replica.
会提示如下信息:
(error) READONLY You can't write against a read only replica.
即在从机无法做写操作。
Redis学习笔记七:主从集群的更多相关文章
- Redis学习笔记八:集群模式
作者:Grey 原文地址:Redis学习笔记八:集群模式 前面提到的Redis学习笔记七:主从复制和哨兵只能解决Redis的单点压力大和单点故障问题,接下来要讲的Redis Cluster模式,主要是 ...
- redis 学习笔记(6)-cluster集群搭建
上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...
- Redis学习笔记~conf自主集群模式
回到目录 Redis自主提供了集群模式,当然也只是比较简单的读写分离模式,或者叫主从模式,它在各个redis服务端自己做数据同步机制,当然就是将主服务端的信息同步到各个slave服务器上,在客户端集成 ...
- ZooKeeper学习笔记一:集群搭建
作者:Grey 原文地址:ZooKeeper学习笔记一:集群搭建 说明 单机版的zk安装和运行参考:https://zookeeper.apache.org/doc/r3.6.3/zookeeperS ...
- 吴裕雄--天生自然HADOOP学习笔记:hadoop集群实现PageRank算法实验报告
实验课程名称:大数据处理技术 实验项目名称:hadoop集群实现PageRank算法 实验类型:综合性 实验日期:2018年 6 月4日-6月14日 学生姓名 吴裕雄 学号 15210120331 班 ...
- Hadoop学习笔记—13.分布式集群中节点的动态添加与下架
开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如何动态(不关机且正在运行的情况下)地添加一个Hadoop节点与 ...
- Nginx学习笔记---服务与集群
一.集群 什么是集群 服务器架构集群:多台服务器组成的响应式大并发,高数据量访问的架构体系. 特点: (1)成本高 (2)能够降低单台服务器的压力,使用流量平均分配到多台服务器 (3)使网站服务架构更 ...
- [redis读书笔记] 第二部分 集群
1. 一个集群会包含多个节点(一个节点就是一个reid是服务器),CLUST MEET <ip><port>可以添加一个node到集群,命令执行后,两个node之间就会进行握手 ...
- 开源流媒体服务器SRS学习笔记(4) - Cluster集群方案
单台服务器做直播,总归有单点风险,利用SRS的Forward机制 + Edge Server设计,可以很容易搭建一个大规模的高可用集群,示意图如下 源站服务器集群:origin server clus ...
- K8S学习笔记之CentOS7集群使用Chrony实现时间同步
0x00 概述 容器集群对时间同步要求高,实际使用环境中必须确保集群中所有系统时间保持一致,openstack官方也推荐使用chrony代替ntp做时间同步. Chrony是一个开源的自由软件,像Ce ...
随机推荐
- Oracle-buffer cache过小导致SQL执行时间长
一.问题:客户反馈在生产库和测试库执行相同SQL,测试库执行比生产库慢一倍 问题摆在这里,需要进行分析? 啥??? 版本11.2.0.4,都是单实例,主机系统硬件配置差不多. 二.对比SQL的执行效率 ...
- 墙裂推荐:这可能是CAP理论的最好现实解释
这篇文章蓝本:http://ksat.me/a-plain-english-introduction-to-cap-theorem 经过小码甲意译.原创配图, 干到让你怀孕. 你可能经常听到CAP定理 ...
- position:sticky 粘性定位的几种巧妙应用
背景:position: sticky 又称为粘性定位,粘性定位的元素是依赖于用户的滚动,在 position:relative 与 position:fixed 定位之间切换.元素根据正常文档流进行 ...
- 分布式锁的实现之 redis 篇
为什么需要分布式锁 引入经典的秒杀情景,100件商品供客户抢.如果是单机版的话,我们使用synchronized 或者 lock 都可以实现线程安全.但是如果多个服务器的话,synchronized ...
- Pandas——Series and DataFrane
数据科学--pandas库 pandas中有两个主要的数据结构,一个是Series,另一个是DataFrame.通过这两类数据,可以下载数据.可视化数据.和分析数据. Pandas安装:pip ins ...
- ECMAScript 2019(ES10)新特性简介
简介 ES10是ECMA协会在2019年6月发行的一个版本,因为是ECMAScript的第十个版本,所以也称为ES10. 今天我们讲解一下ES10的新特性. ES10引入了2大特性和4个小的特性,我们 ...
- LA2965侏罗纪(异或和为0的最大数字个数)
题意: 给你n个字符串,让你在里面找到一个字符串集合使得这些字符串中所有的字母出现的次数和为偶数,输出集合的最大个数,和ASCII最小的解. 思路: 考虑到每个字符串中所有的字 ...
- DVWA之Insecure Captcha
Insecure CAPTCHA Insecure CAPTCHA,意思是不安全的验证码,CAPTCHA是Completely Automated Public Turing Test to Tell ...
- POJ3040给奶牛发工资
题意: 有n种硬币,每种硬币有mi个,然后让你给奶牛发工资,每周发至少c元(就是不找零钱的意思)然后问你能发几周?(硬币之间都是倍数关系) 思路: 这个题目做了两天,丢脸,看完 ...
- POJ3160强连通+spfa最长路(不错)
题意: 给你一个有向图,每个点上有一个权值,可正可负,然后给你一些链接关系,让你找到一个起点,从起点开始走,走过的边可以在走,但是拿过权值的点就不能再拿了,问最多能拿到多少权值? 思路: ...