Redis集群

介绍

1.单机、单实例的持久化方式

在我们之前的课程中,我搭建了一个单机,单进程,缓存redis。我们使用rdb,aof持久化,用来确保数据的安全。

rdb(relation-ship database)持久化:
默认redis会以一个rdb快照的形式,将一段时间内的数据持久化到硬盘,保存成一个dumpr.rdb二进制文件。
工作原理:当redis需要持久化时,redis会fork一个子进程,子进程将数据写到磁盘上临时一个RDB文件中。当子进程完成写临时文件后,将原来的RDB替换掉,这样的好处就是可以copy-on-write。 配置redis.conf:
save 900 1
save 300 10
save 60 10000 在900秒内,如果有一个key被修改,则会发起快照保存。300秒之内,如果超过10个key被修改,则会发起快照保存。在60秒内,如果1w个key被修改,则会发起快照保存。 aof(append-only file)持久化:
默认会以一个appendonly.aof追加进硬盘。 redis.conf默认配置:
appendfsync yes
appendfdync always
#每次有数据修改都会写入AOF
appendfsync everysec
#每秒同步一次,策略为AOF的缺省策略
2.单节点、单实例面临的问题:
  • 单点故障
  • 容量有限
  • 压力

面对这么多问题,我们解决的方式是,将单节点变为多节点进行架构:

1.进行读写分离。

2.基于三维进行扩展AKF。

  • X轴进行全量镜像的节点复制(从单库到多库)
  • Y轴进行业务功能分离(根据业务逻辑再次进行分库)
  • Z轴进行优先级逻辑再拆分(单业务进行分片,如MR的DataNode,单业务进行分节点运算)
3.进行集群化面临的几个问题:

1.数据一致性

分量数据不能保证一致,如果保证一致,那么就会丢失可用性。如果我们保证数据的强一致性,那么,我们将会破坏可用性(数据在同步,不能保持可用)。

2.数据完整性

我们保证弱一致,可能会取到错误数据。

3.数据最终一致性

我们如图3的价架构,在中间放一个类似kafka之类的中间件,然后我们能保证最终一致性。(kafka通过一定技术,变得可靠)

4.分布式常见的几个架构:

主备架构:主机死了,备机可以顶

主从复制:主机后面有几个从节点。(redis用的是主从复制)

主从复制架构,又面临一个问题,单点故障怎么解决?

我们对主进行HA架构,用一个程序进行监控,该监控程序,为了避免单点故障,那么也必须是一个集群架构。

我们的监控设备一定是奇数台,进行过半选举,如果过半都选举故障,那么,将会跳到另一台节点。

配置

1.解压

准备一个redis的tar包,进行解压。

2.启动节点并跟随

启动3个实例,从节点使用replicaof ip port这个命令进行跟随主节点。

(注意,在redis 5之前,我们可以通过slaveof进行跟随主节点,但是,从redis5之后,改为了replicaof进行跟随)

3.使用追加方式

开启时候,使用appendonly yes这个配置,进行追加的方式进行写入集群。

是有用dump.rdb全量备份的时候,可以进行追随主节点

使用appendonly进行增量备份,是无法进行追随主节点的

4.主节点挂机

手动将主节点挂机

从节点可以变为主节点,直接使用replicaof no one命令

哨兵

1.启动3个哨兵,进行监控

命令是:

1.redis-server ./26379.conf --sentinel
2.也可以直接启动redis-sentinel
port 26379
sentinel monitor mymaster 127.0.0.1 6379 2

26379.conf文件只需要2行

第二行语义:哨兵 监控 监控名 ip 端口 几票通过

需要过30秒哨兵才能生效

Redis06-Redis集群的更多相关文章

  1. 使用Docker构建redis集群--最靠谱的版本

    1集群结构说明 集群中有三个主节点,三个从节点,一共六个结点.因此要构建六个redis的docker容器.在宿主机中将这六个独立的redis结点关联成一个redis集群.需要用到官方提供的ruby脚本 ...

  2. (转)高性能网站架构之缓存篇—Redis集群搭建

    看过 高性能网站架构之缓存篇--Redis安装配置和高性能网站架构之缓存篇--Redis使用配置端口转发 这两篇文章的,相信你已经对redis有一定的了解,并能够安装上,进行简单的使用了,但是在咱们的 ...

  3. redis集群搭建

    1.  Redis Cluster的架构图.            (1)所有的redis节点彼此互联(PING-PONG机制),内部使用二进制协议优化传输速度和带宽. (2)节点的fail是通过集群 ...

  4. linux环境(CentOS-6.7)下redis集群的搭建全过程

    linux环境下redis集群的搭建全过程: 使用mount命令将光盘挂载到/mnt/cdrom目录下: [root@hadoop03 ~]# mount -t iso9660 -o ro /dev/ ...

  5. redis单点、redis主从、redis哨兵sentinel,redis集群cluster配置搭建与使用

    目录 redis单点.redis主从.redis哨兵 sentinel,redis集群cluster配置搭建与使用 1 .redis 安装及配置 1.1 redis 单点 1.1.2 在命令窗口操作r ...

  6. LINUX安装REDIS集群

    linux安装单机版redis已经在另一篇文章说过了,下边来搞集群,环境是新浪云服务器: redis3.0以后开始支持集群. 前言:redis用什么做集群? 用一个叫redis-trib.rb的rub ...

  7. redis集群与分片(2)-Redis Cluster集群的搭建与实践

    Redis Cluster集群 一.redis-cluster设计 Redis集群搭建的方式有多种,例如使用zookeeper等,但从redis 3.0之后版本支持redis-cluster集群,Re ...

  8. 高性能网站架构缓存——redis集群

    相信你已经对redis有一定的了解,并能够安装上,进行简单的使用了,但是在咱们的实际应用中,使用redis肯定不会使用单机版,不光是redis不能使用单机版,其他的也不会使用,所以今天我们来说一下re ...

  9. Linux下Redis集群环境的搭建

    一.安装redis(使用redis3.0版本) 1.需要gcc环境,如果没有执行命令安装gcc yum install gcc-c++ 2.下载redis3.0的源码包并上传至服务器 3.解压源码包 ...

  10. redis集群的搭建详细教程

    1 Redis-cluster架构图             redis-cluster投票:容错  (至少要三个才可以,才能超过半数) 架构细节: (1)所有的redis节点彼此互联(PING-PO ...

随机推荐

  1. Python 常用模块(1) -- collections模块,time模块,random模块,os模块,sys模块

    主要内容: 一. 模块的简单认识 二. collections模块 三. time时间模块 四. random模块 五. os模块 六. sys模块 一. 模块的简单认识 模块: 模块就是把装有特定功 ...

  2. 决策树、随机森林与k-means聚类算法

    决策树的构建满足信息熵增益最大化原则 决策树的优点: 可解释性高 能处理非线性的数据 不需要数据归一化 可以用于特征工程 对数据分布没有偏好 广泛使用 容易软件实现 可以转化为规则 决策树的弱点 启发 ...

  3. maven运行工程

    1.cd到工程目录下,执行打包命令-----mvn package 2.cd到工程的target目录执行运行命令 java -classpath myapp-1.0-SNAPSHOT.jar cn.m ...

  4. VMware中centos虚拟机的安装

    几个月前,就下载了VMware,centOS 6 操作系统镜像.苦于对linux的不理解和安装教程的不熟悉,一直未安装成功. 几天前,终于独自安装好了,特此记录一下. 安装其实很简单,之前失败是在于安 ...

  5. 使用Java实现hello/hi的简单网络聊天程序

    Socket又称套接字,是基于应用服务与TCP/IP通信之间的一个抽象,它是计算机之间进行通信的一种约定或一种方式.通过socket这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送 ...

  6. mysql --explain+slowlog

    一.EXPALIN 在SQL语句之前加上EXPLAIN关键字就可以获取这条SQL语句执行的计划 那么返回的这些字段是什么呢? 我们先关心一下比较重要的几个字段: 1. select_type 查询类型 ...

  7. [转帖]盖茨辉煌后将归隐 DOS之父仍为生计打拼(图)

    盖茨辉煌后将归隐 DOS之父仍为生计打拼(图) http://www.sina.com.cn 2007年12月10日 09:43  新浪科技 https://tech.sina.com.cn/it/2 ...

  8. windows环境jar包部署到linux服务器,一键操作

    背景: windows系统下生成的jar包通过FTP上传到linux服务器,然后通过XShell进行jar包的发布,这样反复了几个月后,开发阶段需要频繁更新包的部署.个人觉得很繁琐,想一键式把这个工作 ...

  9. Linux系列(2):入门之线上求助

    前言:Linux命令那么多,你是否为记不住Linux的命令而烦恼呢? 这一章节就是来解决这个问题的. 1.Linux系统的线上求助 1.指令补全 在上一章节提到过使用[Tab]快捷键可以根据用户输入的 ...

  10. curl put方式上传文件

    发送端 <?php function curlPut($destUrl, $sourceFileDir, $headerArr = array(), $timeout = 10) { $ch = ...