redis集群搭建

【Redis】集群教程(Windows)

核能气质少年 提交于 2020-04-08 04:34:53
概述 Redis集群数据分片 Redis集群节点通讯 环境准备 搭建Redis集群 测试Redis集群 概述 Redis Cluster provides a way to run a Redis installation where data is automatically sharded across multiple Redis nodes Redis集群提供一个在多个Redis节点数据自动共享的方式,简单来说就是添加服务器的数量,达到 高可用,让Redis服务长时间有效运行,不会因为硬件/软件问题导致不可用 可扩展性,动态添加节点/删除节点,达到增加性能/减少服务器资源 分布式,节点可以不是 容错,若其中一台服务器故障挂了Redis也能继续使用(前提是有从节点并且可用) Redis集群数据分片 Redis 集群没有使用一致性hash, 而是引入了 哈希槽的概念. Redis 集群有16384个哈希槽,每个key通过CRC16校验后对16384取模来决定放置哪个槽.集群的每个节点负责一部分hash槽,举个例子,比如当前集群有3个节点,那么: 节点 A 包含 0 到 5500号哈希槽. 节点 B 包含5501 到 11000 号哈希槽. 节点 C 包含11001 到 16384号哈希槽 这种结构的好处就是非常容易增加/删除节点,并且不会影响集群的使用 增加节点

Redis分布式集群搭建

此生再无相见时 提交于 2020-04-03 05:33:21
Redis 集群架构图 上图蓝色为 redis 集群的节点。 节点之间通过 ping 命令来测试连接是否正常,节点之间没有主区分,连接到任何一个节点进行操作时,都可能会转发到其他节点。 1、Redis 的容错机制 节点之间会定时的互相发送 ping 命令,测试节点的健康状态,当节点接受到 ping 命令后,会返回一个 pong 字符串。 投票机制:如果一个节点 A 给节点 B 发送 ping 没有得到 pong 返回,会通知其他节点再次给 B 发送 ping ,如果集群中有超过一半的节点收不 B 节点的 pong 。那么就认为 B 节点挂了。一般会为每个节点提供一个备份节点,如果挂掉会切换到备份节点。 2、Redis 集群存储原理 Redis 对于每个存放的 key 会进行 hash 操作,生成一个 [ 0-16384] 的 hash 值(先进行 crc 算法再对 16384 取余)。 集群的情况下,就是把 [0-16384] 的区间进行拆分,放到不同的 redis 中。 3、Redis 的持久化 Snapshotting :定时的将 Redis 内存中的数据保存到硬盘中 AOF :将所有的 command 操作保存到 aof 中, AOP 的同步频率很高,数据即使丢失,粒度也很小,但会在性能上造成影响。 二、Redis 集群准备工作 Redis 安装 源码下载 下载地址

惊呆了,某程序员竟然可以三分钟创建Redis生产集群?

柔情痞子 提交于 2020-03-30 00:44:07
转载自公众号 原文链接: https://mp.weixin.qq.com/s/tqP9MoxhyzqGSpsTYA1J0A Redis Cluster 是 Redis 3.0 版本推出的 Redis 集群方案,它将数据分布在不同的服务区上,以此来降低系统对单主节点的依赖,并且可以大大的提高 Redis 服务的读写性能。 Redis 将所有的数据分为 16384 个 slots(槽),每个节点负责其中的一部分槽位,当有 Redis 客户端连接集群时,会得到一份集群的槽位配置信息,这样它就可以直接把请求命令发送给对应的节点进行处理。 Redis Cluster 是无代理模式去中心化的运行模式,客户端发送的绝大数命令会直接交给相关节点执行,这样大部分情况请求命令无需转发,或仅转发一次的情况下就能完成请求与响应,所以集群单个节点的性能与单机 Redis 服务器的性能是非常接近的,因此在理论情况下,当水平扩展一倍的主节点就相当于请求处理的性能也提高了一倍,所以 Redis Cluster 的性能是非常高的。 Redis Cluster 架构图如下所示: 秒建Redis集群 Redis Cluster 的搭建方式有两种,一种是使用 Redis 源码中提供的 create-cluster 工具快速的搭建 Redis 集群环境,另一种是配置文件的方式手动创建 Redis 集群环境。 一

惊呆了,竟然可以用这种方式秒建Redis集群?

♀尐吖头ヾ 提交于 2020-03-27 23:04:10
前面我们讲了 《Redis 性能优化的 13 条军规!》 ,其中最重要的一条就是使用 Redis 的集群功能,那么本文我们就来看看,如何用 1s 钟的时间来创建一个 Redis 集群。 Redis Cluster 是 Redis 3.0 版本推出的 Redis 集群方案,它将数据分布在不同的服务区上,以此来降低系统对单主节点的依赖,并且可以大大的提高 Redis 服务的读写性能。 Redis 将所有的数据分为 16384 个 slots(槽),每个节点负责其中的一部分槽位,当有 Redis 客户端连接集群时,会得到一份集群的槽位配置信息,这样它就可以直接把请求命令发送给对应的节点进行处理。 Redis Cluster 是无代理模式去中心化的运行模式,客户端发送的绝大数命令会直接交给相关节点执行,这样大部分情况请求命令无需转发,或仅转发一次的情况下就能完成请求与响应,所以集群单个节点的性能与单机 Redis 服务器的性能是非常接近的,因此在理论情况下,当水平扩展一倍的主节点就相当于请求处理的性能也提高了一倍,所以 Redis Cluster 的性能是非常高的。 Redis Cluster 架构图如下所示: 搭建 Redis Cluster Redis Cluster 的搭建方式有两种,一种是使用 Redis 源码中提供的 create-cluster 工具快速的搭建 Redis

kubernetes发布的培训

匆匆过客 提交于 2020-03-26 10:59:46
kubernetes发布的培训大纲 后续就开始学习这些东西 一起吧 一、Docker基础 1、Docker是什么? 2、Docker有什么用? 3、从案例了解Docker 4、Docker架构说明 5、Docker主要组件与概念介绍 二、容器技术 1、容器技术发展 2、为什么选择Docker? 3、Cgroup介绍 4、Namespace介绍 三、Docker 容器 1、Docker Containers(容器)介绍 2、Docker案例使用 3、Docker 创建Containers 4、Docker Containers的停止、启动等 5、Docker Containers 修改,备份等 第一、二、三节重点:了解什么是Docker,以及为什么企业要从传统方式向Docker容器化转变,掌握Docker架构设计原理,以及了解Docker主要组件,为后续课程学习做准备。理解虚拟化的本质,为后期的Kubernetes做好基础。 四、Docker镜像 1、Docker镜像是什么? 2、镜像组织结构 3、镜像写时复制 4、镜像基本操作 5、镜像常用操作实践 6、私有镜像仓库介绍和搭建[Vmware Harbor] 7、镜像在实际使用注意事项[私人镜像制作引导] 五、Docker网络 1、Docker网络介绍 2、Docker网络模式 3

Redis基础知识(二)

◇◆丶佛笑我妖孽 提交于 2020-03-25 23:01:57
Redis事务 redis中的事务是一组命令的集合,事务中的命令要么全部执行,要么都不执行,Redis 通过 MULTI 、DISCARD 、EXEC 和 WATCH 四个命令来实现事务功能,multi表示事物的开启,exec表示事物的执行,exec执行后返回事务执行的结果,discard表示放弃事务执行,清空事务队列中已有的所有命令并退出队列,watch用于监视给定的键,如果键被其他客户端修改,将不会执行事务。 127.0.0.1:6379> multi OK 127.0.0.1:6379> set key 1 QUEUED 127.0.0.1:6379> get key QUEUED 127.0.0.1:6379> exec 1) OK 2) "1" 127.0.0.1:6379> multi OK 127.0.0.1:6379> set key1 1 QUEUED 127.0.0.1:6379> discard OK 127.0.0.1:6379> get key1 (nil) 这里我在另一个客户端修改了被监视的key,导致在这个客户端事务没有执行 127.0.0.1:6379> set key 1 OK 127.0.0.1:6379> watch key OK 127.0.0.1:6379> multi OK 127.0.0.1:6379> incr key QUEUED

Redis集群搭建完整流程演示

微笑、不失礼 提交于 2020-03-24 23:02:55
Redis集群搭建完整流程演示 前言 ​ 前面讲述了有关redis的编译安装流程以及其配置优化的部分内容,本文旨在本地模拟redis服务器集群搭建的流程演示。 Redis集群的作用是什么? ​ 在实验部署开始前,我们需要明白为什么需要搭建Redis集群,其解决了什么样的问题?又有哪些优势。我们可以从单一的Redis服务器来探究这个问题。 单一Redis服务器存在的问题 ​ 如果部署过MySQL主从复制读写分离以及MHA高可用的话,这里就非常容易想到单一Redis服务器所存在的问题,主要有以下几点: 1)存在单点故障; 2)不满足高并发的需求; 3)数据丢失引发灾难(容错率非常低); ... 而解决这样的问题,最容易想到的就是将存储备份,且进行横向扩展。这就需要我们搭建Redis集群来满足业务需求了。 Redis集群介绍简述 ​ Redis集群是一个提供在多个Redis间节点共享数据的程序集 ​ Redis集群并不支持多处理多个Keys的命令,应为这需要在不同节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误 ​ Redis集群通过分区来提供一定程度的可用性,在实际环境中档某个节点宕机或则不可达的情况下继续处理命令 Redis集群优势: 自动分割数据到不同节点上 整个集群的部分节点失败或不可达的情况下依旧可以处理业务指令

Spring该如何整合Redis集群

笑着哭i 提交于 2020-03-24 14:52:19
3 月,跳不动了?>>> 前言:在上一文中,我讲到了--- 如何搭建redis集群---让集群拥有分片的数据内存的扩容和哨兵的高可用 。今天给大家讲解一下Spring如何整合Redis集群 在这里首先给大家说一说 分片和哨兵的特点 : 1.分片的主要的作用 实现内存数据的扩容 2.哨兵主要的作用,可以实现redis的高可用. 3.如果redis分片中有一个redis节点宕机,则整个redis分片将不能正常运行. 4.Redis哨兵虽然可以实现Redis的高可用,但是哨兵本身没办法实现高可用,程序调用存在风险. 而集群确包含了分片和哨兵的两者的优点,既实现了内存数据的扩容,也实现了redis的高可用,而且集群确保了一个或一定数量的redis宕机,也能够让程序正常的运行,这也是为什么我们运用的集群,而不是分片或哨兵。 --------废话有点多啊,下面进入今天的主题 1.Spring整合Redis集群 1.1在linux系统上开启redis集群 --- sh start.sh 之后 ps -ef |grep redis 检测所有的redis服务器是否开启 1.2添加redis依赖(如若之前添加了,跳过此) <!--spring整合redis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis<

docker 集群 笔记

孤人 提交于 2020-03-19 12:46:30
docker 集群 Docker 容器 移除所有的容器和镜像(大扫除) 用一行命令大扫除: docker kill $(docker ps -q) ; docker rm $(docker ps -a -q) ; docker rmi $(docker images -q -a) 注:shell 中的 $() 和 `` 类似,会先执行这里面的内容,上面的脚本会出现如下 docker kill "pids" ; docker kill 在 docker 中用于停止容器,docker rm 删除容器, docker rmi 删除镜像 当没有运行的容器或者是根本没有容器的时候,这只会提示一个警告信息。当你想尝试的时候,这就是个非常好的单行命令。如果你仅仅想删除所有的容器,你可以运行如下命令: docker kill $(docker ps -q) ; docker rm $(docker ps -a -q) 退出时删除容器 如果你仅仅想在一个容器中快速的运行一个命令,然后退出,并且不用担心容器状态,把 --rm 参数加入 run 命令后面,这将结束很多你保存了的容器,并且清理它们。 示例:docker run --rm -i -t busybox /bin/bash Docker Machine 统一 docker 虚拟机 环境 按照工具 在 docker1.12 后 按照docker

从 ELK 到 EFK 演进

我的未来我决定 提交于 2020-03-18 13:52:24
背景 作为中国最大的在线教育站点,目前沪江日志服务的用户包含网校,交易,金融,CCTalk 等多个部门的多个产品的日志搜索分析业务,每日产生的各类日志有好十几种,每天处理约10亿条(1TB)日志,热数据保留最近7天数据,冷数据永久保存。 为什么做日志系统 首先,什么是日志? 日志就是程序产生的,遵循一定格式(通常包含时间戳)的文本数据 通常日志由服务器生成,输出到不同的文件中,一般会有系统日志、 应用日志、安全日志。这些日志分散地存储在不同的机器上。 通常当系统发生故障时,工程师需要登录到各个服务器上,使用 grep / sed / awk 等 Linux 脚本工具去日志里查找故障原因。在没有日志系统的情况下,首先需要定位处理请求的服务器,如果这台服务器部署了多个实例,则需要去每个应用实例的日志目录下去找日志文件。每个应用实例还会设置日志滚动策略(如:每天生成一个文件),还有日志压缩归档策略等。 这样一系列流程下来,对于我们排查故障以及及时找到故障原因,造成了比较大的麻烦。因此,如果我们能把这些日志集中管理,并提供集中检索功能,不仅可以提高诊断的效率,同时对系统情况有个全面的理解,避免事后救火的被动。 我认为,日志数据在以下几方面具有非常重要的作用: 数据查找 :通过检索日志信息,定位相应的 bug ,找出解决方案 服务诊断 :通过对日志信息进行统计、分析