专注Java教育14年 全国咨询/投诉热线:400-8080-105
动力节点LOGO图
始于2009,口口相传的Java黄埔军校
首页 hot资讯 redis集群教程之实现的几种方法

redis集群教程之实现的几种方法

更新时间:2020-09-16 14:49:09 来源:动力节点 浏览1309次

客户端分片

Redis Sharding是Redis Cluster出来之前,业界普遍使用的多Redis实例集群方法。其主要思想是采用哈希算法将Redis数据的key进行散列,通过hash函数,特定的key会映射到特定的Redis节点上。java redis客户端驱动jedis,支持Redis Sharding功能,即ShardedJedis以及结合缓存池的ShardedJedisPool。

redis集群教程

Redis Sentinel提供了主备模式下Redis监控、故障转移功能达到系统的高可用性。在主Redis宕机时,备Redis接管过来,上升为主Redis,继续提供服务。主备共同组成一个Redis节点,通过自动故障转移,保证了节点的高可用性。

客户端sharding技术其优势在于非常简单,服务端的Redis实例彼此独立,相互无关联,每个Redis实例像单服务器一样运行,非常容易线性扩展,系统的灵活性很强。

客户端sharding的劣势也是很明显的。由于sharding处理放到客户端,规模进一步扩大时给运维带来挑战。客户端sharding不支持动态增删节点。服务端Redis实例群拓扑结构有变化时,每个客户端都需要更新调整。连接不能共享,当应用规模增大时,资源浪费制约优化。

基于代理的分片

客户端发送请求到一个代理组件,代理解析客户端的数据,并将请求转发至正确的节点,最后将结果回复给客户端。

该模式的特性如下:

1.透明接入,业务程序不用关心后端Redis实例,切换成本低。

2.Proxy的逻辑和存储的逻辑是隔离的。

3.代理层多了一次转发,性能有所损耗。

简单的结构图如下:

redis集群教程

主流的组件有:Twemproxy和Codis。

Codis

Codis是豌豆荚开源的redis集群方案,是一个分布式Redis解决方案,对于上层的应用来说,连接到Codis Proxy和连接原生的Redis Server没有显著区别,上层应用可以像使用单机的Redis一样使用,Codis底层会处理请求的转发,不停机的数据迁移等工作,所有后边的一切事情,对于前面的客户端来说是透明的,可以简单的认为后边连接的是一个内存无限大的Redis服务。

Codis当前最新release版本为codis-3.2,codis-server基于redis-3.2.8。有一下组件组成:

redis集群教程

Codis

Codis Server:基于redis-3.2.8分支开发。增加了额外的数据结构,以支持slot有关的操作以及数据迁移指令。

Codis Proxy:客户端连接的Redis代理服务,实现了Redis协议。除部分命令不支持以外(不支持的命令列表),表现的和原生的Redis没有区别(就像Twemproxy)。

Codis Dashboard:集群管理工具,支持codis-proxy、codis-server的添加、删除,以及据迁移等操作。在集群状态发生改变时,codis-dashboard维护集群下所有codis-proxy的状态的一致性。

对于同一个业务集群而言,同一个时刻codis-dashboard只能有0个或者1个;所有对集群的修改都必须通过codis-dashboard完成。

Codis Admin:集群管理的命令行工具。

可用于控制codis-proxy、codis-dashboard状态以及访问外部存储。

Codis FE:集群管理界面。

多个集群实例共享可以共享同一个前端展示页面;

通过配置文件管理后端codis-dashboard列表,配置文件可自动更新。

Storage:为集群状态提供外部存储。

提供Namespace概念,不同集群的会按照不同product name进行组织;目前仅提供了Zookeeper、Etcd、Fs三种实现,但是提供了抽象的interface可自行扩展。

至于具体的安装与使用,见官网CodisLabs,不在此涉及。

Codis的特性:

Codis支持的命令更加丰富,基本支持redis的命令。

迁移成本低,迁移到codis没这么麻烦,只要使用的redis命令在codis支持的范围之内,只要修改一下配置即可接入。

Codis提供的运维工具更加友好,提供web图形界面管理集群。

支持多核心CPU,twemproxy只能单核

支持group划分,组内可以设置一个主多个从,通过sentinel监控redis主从,当主down了自动将从切换为主

redis集群教程

以上就是对“redis集群教程之实现的几种方法”的介绍,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

提交申请后,顾问老师会电话与您沟通安排学习

免费课程推荐 >>
技术文档推荐 >>