高可用 24小时对外提供服务

高并发 同一时间段能处理的请求数

1,中心化和去中心化

1.1,中心化

意思是所有的节点都要有一个主节点

缺点:中心挂了,服务就挂了

中心处理数据的能力有限,不能把节点性能发挥到最大

特点:就是一个路由作用

1.2,去中心化

特点:去掉路由,我自己来路由

以上通俗的就是

中心化:几个经过认证的嘉宾在‘讲话’,所有其他人在听。

去中心化:每个人都可以‘讲话’,每个人都可以选择听或者讲。


2,Redis集群的执行流程分析

2.1,哈希槽说明

Redis 集群中内置了 16384 个哈希槽,当需要在 Redis 集群中放置一个 key-value时,redis 先对 key 使用 crc16 算法算出一个结果,然后把结果对 16384 求余数,这样每个 key 都会对应一个编号在 0-16383 之间的哈希槽,redis 会根据节点数量大致均等的将哈希槽映射到不同的节点。

当你往Redis Cluster中加入一个Key时,会根据crc16(key) mod 16384计算这个key应该分布到哪个hash slot中,一个hash slot中会有很多key和value。你可以理解成表的分区,使用单节点时的redis时只有一个表,所有的key都放在这个表里;改用Redis Cluster以后会自动为你生成16384个分区表,你insert数据时会根据上面的简单算法来决定你的key应该存在哪个分区,每个分区里有很多key。

2.2,执行流程分析

假如redis集群里面能存放90个key,那么redis集群把90key平分到3个主机

redis对每个主机里面30个存储位置都编号,当应用连接到主机1上面时,应该发送一个写的命令

主机使用crc16算出槽号

如果槽号在1-30 可以直接操作主机1

如果槽号在31-60那么redis会转发到主机2

如果应该再发一个命令set age 22

那么主机2使用crc16再算槽号再转发


3,Redis集群的搭建

3.1,文档

http://redis.cn/topics/cluster-tutorial.html

3.2,原理:去中心化

3.3,集群规则

机器编号 ip port
1 192.168.120.129 7000
2 192.168.120.129 7001
3 192.168.120.129 7002
4 192.168.120.129 7003
5 192.168.120.129 7004
6 192.168.120.129 7005

3.4,搭建过程

3.4.1 新建文件夹

3.4.2 准备一个服务端程序

3.4.3准备6个redis的配置文件

下面进入redis.conf 配置文件修改配置

Redis-1

bind 0.0.0.0 69行

port 7000 92行

daemonize yes 136行

打开aof 持久化

appendonly yes 672行

开启集群

cluster-enabled yes 814行

集群的配置文件,该文件自动生成

cluster-config-file nodes-7000.conf 822行

集群的超时时间

cluster-node-timeout 5000 828行


Redis-2

daemonize yes

bind 0.0.0.0

port 7001

打开aof 持久化

appendonly yes

开启集群

cluster-enabled yes

集群的配置文件,该文件自动生成

cluster-config-file nodes-7001.conf

集群的超时时间

cluster-node-timeout 5000


Redis-3

daemonize yes

bind 0.0.0.0

port 7002

打开aof 持久化

appendonly yes

开启集群

cluster-enabled yes

集群的配置文件,该文件自动生成

cluster-config-file nodes-7002.conf

集群的超时时间

cluster-node-timeout 5000


Redis-4

daemonize yes

bind 0.0.0.0

port 7003

打开aof 持久化

appendonly yes

开启集群

cluster-enabled yes

集群的配置文件,该文件自动生成

cluster-config-file nodes-7004.conf

集群的超时时间

cluster-node-timeout 5000


Redis-5

daemonize yes

bind 0.0.0.0

port 7004

打开aof 持久化

appendonly yes

开启集群

cluster-enabled yes

集群的配置文件,该文件自动生成

cluster-config-file nodes-7005.conf

集群的超时时间

cluster-node-timeout 5000


Redis-6

daemonize yes

bind 0.0.0.0

port 7005

打开aof 持久化

appendonly yes

开启集群

cluster-enabled yes

集群的配置文件,该文件自动生成

cluster-config-file nodes-7006.conf

集群的超时时间

cluster-node-timeout 5000

3.4.4同时启动所有的redis

3.4.5 使用脚本创建集群(分配槽)

找到集群脚本,在src/src/redis-trib.rb 要安装Ruby的环境【不推荐

3.4.6 使用docker 下载redis-trib的镜像运行【推荐】

安装Docker

yum install docker

启动docker

systemctl start docker

A: 下载镜像

docker pull inem0o/redis-trib

docker run -it --net host inem0o/redis-trib create --replicas 1

192.168.120.129:7000 192.168.120.129:7001

192.168.120.129:7002 192.168.120.129:7003

192.168.120.129:7004 192.168.120.129:7005

-it是为了可以输入

--net host 是为了上docker容器能连接上本地的宿主机

3.4.7测试集群环境

-c 表示连接集群

到此集群搭建完成

05[掌握]高可用、集群、持久化、docker 等前置知识点的更多相关文章

  1. Nacos高可用集群解决方案-Docker版本

    文章主旨 本文目的是配置高可用的Nacos集群 架构图 整体架构为:Nginx + 3 x Nacos +高可用MySQL 高可用MySQL使用主从复制结构的可以参考Docker搭建MySQL主从集群 ...

  2. (六) Docker 部署 Redis 高可用集群 (sentinel 哨兵模式)

    参考并感谢 官方文档 https://hub.docker.com/_/redis GitHub https://github.com/antirez/redis happyJared https:/ ...

  3. (七) Docker 部署 MySql8.0 一主一从 高可用集群

    参考并感谢 官方文档 https://hub.docker.com/_/mysql y0ngb1n https://www.jianshu.com/p/0439206e1f28 vito0319 ht ...

  4. 基于docker实现redis高可用集群

    基于docker实现redis高可用集群 yls 2019-9-20 简介 基于docker和docker-compose 使用redis集群和sentinel集群,达到redis高可用,为缓存做铺垫 ...

  5. 消息中间件-ActiveMQ高可用集群和持久化机制

    1.修改active.mq的xml文件 2.延时.调度消息 package com.study.mq.b1_message; import org.apache.activemq.ActiveMQCo ...

  6. Kubeadm 1.9 HA 高可用集群本地离线镜像部署【已验证】

    k8s介绍 k8s 发展速度很快,目前很多大的公司容器集群都基于该项目,如京东,腾讯,滴滴,瓜子二手车,易宝支付,北森等等. kubernetes1.9版本发布2017年12月15日,每三个月一个迭代 ...

  7. ProxySQL Cluster 高可用集群环境部署记录

    ProxySQL在早期版本若需要做高可用,需要搭建两个实例,进行冗余.但两个ProxySQL实例之间的数据并不能共通,在主实例上配置后,仍需要在备用节点上进行配置,对管理来说非常不方便.但是Proxy ...

  8. Kubernetes容器集群 - harbor仓库高可用集群部署说明

    之前介绍Harbor私有仓库的安装和使用,这里重点说下Harbor高可用集群方案的部署,目前主要有两种主流的Harbor高可用集群方案:1)双主复制:2)多harbor实例共享后端存储. 一.Harb ...

  9. [K8s 1.9实践]Kubeadm 1.9 HA 高可用 集群 本地离线镜像部署

    k8s介绍 k8s 发展速度很快,目前很多大的公司容器集群都基于该项目,如京东,腾讯,滴滴,瓜子二手车,北森等等. kubernetes1.9版本发布2017年12月15日,每是那三个月一个迭代, W ...

  10. 【转】harbor仓库高可用集群部署说明

    之前介绍Harbor私有仓库的安装和使用,这里重点说下Harbor高可用集群方案的部署,目前主要有两种主流的Harbor高可用集群方案:1)双主复制:2)多harbor实例共享后端存储. 一.Harb ...

随机推荐

  1. Java实现 蓝桥杯 算法训练 审美课

    算法训练 审美课 时间限制:1.0s 内存限制:256.0MB 提交此题 问题描述 <审美的历程>课上有n位学生,帅老师展示了m幅画,其中有些是梵高的作品,另外的都出自五岁小朋友之手.老师 ...

  2. Java实现 LeetCode 749 隔离病毒(DFS嵌套)

    749. 隔离病毒 病毒扩散得很快,现在你的任务是尽可能地通过安装防火墙来隔离病毒. 假设世界由二维矩阵组成,0 表示该区域未感染病毒,而 1 表示该区域已感染病毒.可以在任意 2 个四方向相邻单元之 ...

  3. Java实现 蓝桥杯算法提高 求最大值

    算法提高 求最大值 时间限制:1.0s 内存限制:256.0MB 问题描述 给n个有序整数对ai bi,你需要选择一些整数对 使得所有你选定的数的ai+bi的和最大.并且要求你选定的数对的ai之和非负 ...

  4. Java实现 蓝桥杯 基础练习 闰年判断

    基础练习 闰年判断 时间限制:1.0s 内存限制:256.0MB 提交此题 锦囊1 锦囊2 问题描述 给定一个年份,判断这一年是不是闰年. 当以下情况之一满足时,这一年是闰年: 年份是4的倍数而不是1 ...

  5. Java实现 LeetCode 297 二叉树的序列化与反序列化

    297. 二叉树的序列化与反序列化 序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得 ...

  6. Java实现 LeetCode 216. 组合总和 III(三)

    216. 组合总和 III 找出所有相加之和为 n 的 k 个数的组合.组合中只允许含有 1 - 9 的正整数,并且每种组合中不存在重复的数字. 说明: 所有数字都是正整数. 解集不能包含重复的组合. ...

  7. Java实现控制台版CS

    也可以把这四个类直接复制下去放在一个包下面 父类 package Cs1_6; public abstract class Persion { public abstract void Attack( ...

  8. Mac下如何连接linux服务器(SSH)-比较好用的SSH工具推荐

    Mac下如何连接linux服务器(SSH) 1.用mac自带终端连接 步骤如下: 打开终端,在顶部shell菜单中选择新建远程连接 在右侧服务器窗口点击+号,添加服务器,输入IP等信息 输入用户名,点 ...

  9. 「MoreThanJava」机器指令到汇编再到高级编程语言

    「MoreThanJava」 宣扬的是 「学习,不止 CODE」,本系列 Java 基础教程是自己在结合各方面的知识之后,对 Java 基础的一个总回顾,旨在 「帮助新朋友快速高质量的学习」. 当然 ...

  10. 哦,Vendor

    vendor踩坑笔记: 接过公司里面X平台golang部分的后端后,需要新添加一个业务功能,美滋滋~ 拿过项目一顿写之后后遇到事了. 报错的描述如下: 报错的大意说:方法的入参类型不匹配,我们不能把 ...