一种基于twemproxy的Redis集群方法技术

技术编号:18403627 阅读:156 留言:0更新日期:2018-07-08 22:02
本发明专利技术公开了一种基于twemproxy的Redis集群方法,涉及缓存组建领域。包括以下内容:业务方通过redis客户端请求连接,发送数据;Lvs做四层负载,收到客户端请求后负载至一台Lvs主机;Lvs接收到请求后,根据负载规则,发送数据至一台twemproxy主机;Twemproxy接受到请求后根据客户配置的分片规则找到一个redis主机,发送数据;Redis主机接收到请求后,存储数据,并且同步到从机,返回。本发明专利技术基于twemproxy的redis集群方案提出了一种新的redis集群解决方案,目前线上环境初步测试稳定性较好,具有一定容灾性,降低服务器宕机风险,适合对redis依赖比较重的分布式环境。

A method of Redis cluster based on twemproxy

The invention discloses a Redis clustering method based on twemproxy, which relates to the field of buffer establishment. Including the following: the business party requests the connection through the redis client to send the data; Lvs does four layers of load, receives the client request and load to a Lvs host; after the Lvs receives the request, the data is sent to a twemproxy host according to the load rule; after the Twemproxy accepts the request, it is found according to the fragmentation rule configuration rules of the client. To a redis host, sending data; after receiving the request, the Redis host stores data and synchronize to the slave and returns. Based on the redis cluster scheme of twemproxy, a new redis cluster solution is proposed. The initial testing of the online environment is stable, it has a certain disaster tolerance, reduces the risk of server downtime, and is suitable for a distributed environment with heavy redis dependence.

【技术实现步骤摘要】
一种基于twemproxy的Redis集群方法
本专利技术的实施方式涉及缓存组建领域,更具体地,本专利技术的实施方式涉及一种基于twemproxy的Redis集群方法。
技术介绍
随着移动互联网技术的爆发式增长,大数据、人工智能快速发展,多终端开发的日益流行,业务复杂度的不断提高,服务端的实时性要求也越来越高,传统的单机服务越来越无法满足市场需求,谷歌的“三篇论文”开启了大数据行业的浪潮,提出了用普通单机服务器组成的分布式集群解决爆发式数据增长的压力,缓存成为其中一个不可缺少的组建。目前缓存组建有redis、memcached、ehcache等,其实redis因效率高使用灵活最受欢迎,但redis开发早期并没有提出分布式思想,所以以单线程方式存在。目前比较流行的redis集群方案有客户端分片、twemproxy、redis官方集群、twemproxy集群。1、客户端分片客户端分片是把分片的逻辑放在Redis客户端实现,通过Redis客户端预先定义好的路由规则,把对Key的访问转发到不同的Redis实例中,最后把返回结果汇集。客户端分片模式的优点是所有逻辑都是可控的,不依赖第三方逻辑,但缺点是这种分片是一种静态分片,需要在客户端手工操作,极大提高了开发难度,而且当redis集群扩容时要调整分片策略才行。2、twemproxyTwemproxy是由Twitter开源的Redis代理,其基本原理是:Redis客户端把请求发送到Twemproxy,Twemproxy根据路由规则发送到正确的Redis实例,最后Twemproxy把结果汇集返回给客户端。Twemproxy通过引入一个代理层,将多个Redis实例进行统一管理,使Redis客户端只需要在Twemproxy上进行操作,而不需要关心后面有多少个Redis实例,从而实现了Redis集群。Twemproxy优点是开发简单,使用twemproxy跟使用redis一样,客户端无感知,twemproxy目前支持绝大多数redis命令,但是twemproxy在启动读取配置文件之后就无法再次读取,因此增删redis集群代理无法感知,这对扩容带来很大问题。3、codiscodis是豌豆荚自主研发的一款redis集群软件,它利用zookeeper存储数据路由,完美的实现了redis动态扩容,能安全透明的迁移数据,支持多种数据分片算法。Codis集群对redis来说很完美,但最大的缺点是codis是用go语言开发的,对于很多以java为基本语言的开发团队带来很大的困难,对codis的运维需要花费很大的人力成本。4、redis3.0集群Redis3.0集群采用了P2P的模式,完全去中心化。Redis把所有的Key分成了16384个slot,每个Redis实例负责其中一部分slot。集群中的所有信息(节点、端口、slot等),都通过节点之间定期的数据交换而更新。Redis客户端在任意一个Redis实例发出请求,如果所需数据不在该实例中,通过重定向命令引导客户端访问所需的实例。Redis官网集群有点是部署简单,因为无中心化,部署复杂度很低,缺点是redis3.0开始对redis协议有了修改,客户端也要升级,目前还没有经过实践认证,对目前已经线上运行的环境来说切换很麻烦。
技术实现思路
本专利技术的目的是提出一种基于twemproxy的集群方法,在保证原来twemproxy的基本功能同时增加以下功能:(1)动态准平滑扩容和改变分片策略,(3)增加前端负载,通过哨兵检测redis主存切换。为了达到上述的技术效果,本专利技术采取以下技术方案:一种基于twemproxy的Redis集群方法,包括以下内容:业务方通过redis客户端请求连接,发送数据;Lvs做四层负载,收到客户端请求后负载至一台Lvs主机;Lvs接收到请求后,根据负载规则,发送数据至一台twemproxy主机;Twemproxy接受到请求后根据客户配置的分片规则找到一个redis主机,发送数据;Redis主机接收到请求后,存储数据,并且同步到从机,返回。进一步的技术方案是:当redis主机宕机后,zookeeper客户端检测到redis主机宕机,发送数据至ZK服务器;哨兵机器发现主机宕机之后主动触发从机为主机;Zookeeper服务端检测到客户端请求后,发送命令至twemproxy替换配置文件;Twemproxy接收到zookeeper命令之后触发脚本,重新启动,读取配置文件。进一步的技术方案是:当redis主机恢复后,redis主机宕机后主动设置为从机,恢复后依然为从机。进一步的技术方案是:通过zookeeper监控twemproxy配置,一旦发现配置文件出现更改,zookeeper强制twemproxy重启,启动后twexproxy读取最新配置,重新对redis扩容和改变分片策略。本专利技术与现有技术相比,具有以下的有益效果:本专利技术基于twemproxy的redis集群方案提出了一种新的redis集群解决方案,目前线上环境初步测试稳定性较好,具有一定容灾性,降低服务器宕机风险,适合对redis依赖比较重的分布式环境。附图说明图1示出了根据本专利技术一个实施例的流程示意图。具体实施方式为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。实施例如图1所示,一种基于twemproxy的Redis集群方法,包括以下内容:数据流程1、业务方通过redis客户端请求连接,发送数据。2、Lvs做四层负载,收到客户端请求后根据高可用规则负载至一台lvs主机。3、Lvs接收到请求后,根据负载规则,发送数据至一台twemproxy主机。4、Twemproxy接受到请求后根据客户配置的分片规则找到一个redis主机,发送数据。5、Redis主机接收到请求后,存储数据,并且同步到从机,返回。当redis主机宕机后1、zookeeper客户端检测到redis主机宕机,发送数据至ZK服务器。2、哨兵机器发现主机宕机之后主动触发从机为主机。3、Zookeeper服务端检测到客户端请求后,发送命令至twemproxy替换配置文件。4、Twemproxy接收到zookeeper命令之后触发脚本,重新启动,读取配置文件当redis主机恢复后1redis主机宕机后主动设置为从机,恢复后依然为从机。本专利技术在保证原来twemproxy的基本功能同时增加以下功能:1.动态准平滑扩容和改变分片策略通过zookeeper监控twemproxy配置,一旦发现配置文件出现更改,zookeeper强制twemproxy重启,因为twemproxy是用c语言开发的代理组建,启动速度极快,目前测试大概0.5秒左右,启动后twexproxy读取最新配置,重新对redis扩容和改变分片策略。2.增加前端负载Twemproxy是比较稳定的代理组建,但也有宕机风险,通过在前端TP层增加负载既不影响原始数据传输又可以大大减少twemproxy宕机风险。3.通过哨兵检测redis主从机切换Redis可以以sentinel模式启动,监控主机和从机,当主机宕机之后可以瞬间完成主从机替换,但是在完本文档来自技高网
...

【技术保护点】
1.一种基于twemproxy的Redis集群方法,其特征在于,包括以下内容:业务方通过redis客户端请求连接,发送数据;Lvs做四层负载,收到客户端请求后负载至一台Lvs主机;Lvs接收到请求后,根据负载规则,发送数据至一台twemproxy主机;Twemproxy接受到请求后根据客户配置的分片规则找到一个redis主机,发送数据;Redis主机接收到请求后,存储数据,并且同步到从机,返回。

【技术特征摘要】
1.一种基于twemproxy的Redis集群方法,其特征在于,包括以下内容:业务方通过redis客户端请求连接,发送数据;Lvs做四层负载,收到客户端请求后负载至一台Lvs主机;Lvs接收到请求后,根据负载规则,发送数据至一台twemproxy主机;Twemproxy接受到请求后根据客户配置的分片规则找到一个redis主机,发送数据;Redis主机接收到请求后,存储数据,并且同步到从机,返回。2.根据权利要求1所述的一种基于twemproxy的Redis集群方法,其特征在于,当redis主机宕机后,zookeeper客户端检测到redis主机宕机,发送数据至ZK服务器;哨兵机器发现主机宕机之后主动触发从机为主机;...

【专利技术属性】
技术研发人员:慕瑞华胡一枭吴博
申请(专利权)人:四川长虹电器股份有限公司
类型:发明
国别省市:四川,51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1