单机,单节点,单实例的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学习笔记七:主从集群的更多相关文章

  1. Redis学习笔记八:集群模式

    作者:Grey 原文地址:Redis学习笔记八:集群模式 前面提到的Redis学习笔记七:主从复制和哨兵只能解决Redis的单点压力大和单点故障问题,接下来要讲的Redis Cluster模式,主要是 ...

  2. redis 学习笔记(6)-cluster集群搭建

    上次写redis的学习笔记还是2014年,一转眼已经快2年过去了,在段时间里,redis最大的变化之一就是cluster功能的正式发布,以前要搞redis集群,得借助一致性hash来自己搞shardi ...

  3. Redis学习笔记~conf自主集群模式

    回到目录 Redis自主提供了集群模式,当然也只是比较简单的读写分离模式,或者叫主从模式,它在各个redis服务端自己做数据同步机制,当然就是将主服务端的信息同步到各个slave服务器上,在客户端集成 ...

  4. ZooKeeper学习笔记一:集群搭建

    作者:Grey 原文地址:ZooKeeper学习笔记一:集群搭建 说明 单机版的zk安装和运行参考:https://zookeeper.apache.org/doc/r3.6.3/zookeeperS ...

  5. 吴裕雄--天生自然HADOOP学习笔记:hadoop集群实现PageRank算法实验报告

    实验课程名称:大数据处理技术 实验项目名称:hadoop集群实现PageRank算法 实验类型:综合性 实验日期:2018年 6 月4日-6月14日 学生姓名 吴裕雄 学号 15210120331 班 ...

  6. Hadoop学习笔记—13.分布式集群中节点的动态添加与下架

    开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如何动态(不关机且正在运行的情况下)地添加一个Hadoop节点与 ...

  7. Nginx学习笔记---服务与集群

    一.集群 什么是集群 服务器架构集群:多台服务器组成的响应式大并发,高数据量访问的架构体系. 特点: (1)成本高 (2)能够降低单台服务器的压力,使用流量平均分配到多台服务器 (3)使网站服务架构更 ...

  8. [redis读书笔记] 第二部分 集群

    1. 一个集群会包含多个节点(一个节点就是一个reid是服务器),CLUST MEET <ip><port>可以添加一个node到集群,命令执行后,两个node之间就会进行握手 ...

  9. 开源流媒体服务器SRS学习笔记(4) - Cluster集群方案

    单台服务器做直播,总归有单点风险,利用SRS的Forward机制 + Edge Server设计,可以很容易搭建一个大规模的高可用集群,示意图如下 源站服务器集群:origin server clus ...

  10. K8S学习笔记之CentOS7集群使用Chrony实现时间同步

    0x00 概述 容器集群对时间同步要求高,实际使用环境中必须确保集群中所有系统时间保持一致,openstack官方也推荐使用chrony代替ntp做时间同步. Chrony是一个开源的自由软件,像Ce ...

随机推荐

  1. Java8中的Optional操作

    作者:汤圆 个人博客:javalover.cc 前言 官人们好啊,我是汤圆,今天给大家带来的是<Java8中的Optional操作>,希望有所帮助,谢谢 文章纯属原创,个人总结难免有差错, ...

  2. 2021 DevOpsDays 东京站完美收官 | CODING 专家受邀分享最新技术资讯

    DevOpsDays 是一个全球知名的系列技术会议品牌,内容涵盖了软件开发.自动化.测试.安全.组织文化以及 IT 运营的社区会议等.DevOpsDays 由 DevOps 之父 Patrick De ...

  3. Day13_72_类锁

    类锁 * 对象锁(synchronized method{})和类锁(static sychronized method{})的区别 - 对象锁也叫实例锁,对应synchronized关键字,当多个线 ...

  4. Jsoup-基于Java实现网络爬虫-爬取笔趣阁小说

    注意!仅供学习交流使用,请勿用在歪门邪道的地方!技术只是工具!关键在于用途! 今天接触了一款有意思的框架,作用是网络爬虫,他可以像操作JS一样对网页内容进行提取 初体验Jsoup <!-- Ma ...

  5. creating a table and inserting data

    /** Grocery list: Bananas (4) Peanut Butter (1) Dark Chocolate Bars (2) **/ CREATE TABLE groceries ( ...

  6. Linux 基本防火墙设置和开放端口命令

    关闭防火墙 CentOS 7.RedHat 7 之前的 Linux 发行版防火墙开启和关闭( iptables ): 即时生效,重启失效 #开启 service iptables start #关闭 ...

  7. 怎样用SQL修改某个字段的部分内容

    方法:update dede_addonarticle set body = replace(body,'#p#分页标题#e#',' ') where body like '%#p#分页标题#e#%'

  8. 病毒木马查杀实战第017篇:U盘病毒之专杀工具的编写

    前言 经过前几次的讨论,我们对于这次的U盘病毒已经有了一定的了解,那么这次我们就依据病毒的行为特征,来编写针对于这次U盘病毒的专杀工具. 专杀工具功能说明 因为这次是一个U盘病毒,所以我打算把这次的专 ...

  9. hdu1024 最大m子序列和

    题意:      给你一个序列n个数组成,然后让你在里面找到m个子序列,让这m个子序列的和最大. 思路:       dp[i][j]表示的是第j个数字在第i个子序列时的当前最优值. dp[i][j] ...

  10. hdu2276 矩阵构造

    题意:      给了n个灯泡的状态,他们绕成一个环,0是灭,1是亮,每一秒灯泡的状态都会改变,规则是如果当前这个灯泡的左边的灯泡当前是状态1,那么下一秒当前的这个灯泡状态就改变0变1,1变0,最后问 ...