CN109862075B - 一种Redis服务实例的路由方法 - Google Patents
一种Redis服务实例的路由方法 Download PDFInfo
- Publication number
- CN109862075B CN109862075B CN201811638719.2A CN201811638719A CN109862075B CN 109862075 B CN109862075 B CN 109862075B CN 201811638719 A CN201811638719 A CN 201811638719A CN 109862075 B CN109862075 B CN 109862075B
- Authority
- CN
- China
- Prior art keywords
- data
- master
- redis
- cluster
- instance
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种Redis服务实例的路由方法。该方法包括:编写Dockerfile,将单独的服务组件包装为Docker镜像,并且指定该Docker镜像的版本号;在预设的各个地点分别部署多个Redis服务实例,组成Redis集群;部署多个Predixy的Docker镜像实例,组成Predixy集群;Predixy集群中的各个Docker镜像实例根据预设的策略规则,将客户端发送的数据分别路由到对应的Redis服务实例上。应用本发明可以将不同类别的数据分别路由到不同的Redis服务实例上,使得客户端可以直接获得Redis集群中的全部集群功能。
Description
技术领域
本申请涉及数据路由技术领域,尤其涉及一种Redis服务实例的路由方法。
背景技术
目前随着计算机技术、网络技术创新进步,特别是虚拟化技术的进步,还有新概念、新方案的创新和发展,尤其是Predixy创新技术的快速发展,为在线教育云平台的推出Redis集群奠定了基础。
在现有技术中,教育云平台一般采用微服务架构。微服务架构解决了传统的分层架构中的一些问题,它的核心特点是高可伸缩性、易于开发、测试和部署独立的服务组件,这些服务组件解耦的、分布式的、相互独立的,可以快速的迭代更新教育云平台上的微服务。
但是,在教育云平台上采用微服务架构时,难以将不同类别的数据分别路由到不同的Redis服务实例上,客户端难以直接获得Redis集群中的全部集群功能。
发明内容
有鉴于此,本发明提供了一种Redis服务实例的路由方法,从而可以将不同类别的数据分别路由到不同的Redis服务实例上,使得客户端可以直接获得Redis集群中的全部集群功能。
本发明的技术方案具体是这样实现的:
一种Redis服务实例的路由方法,该方法包括如下步骤:
编写Dockerfile,将单独的服务组件包装为Docker镜像,并且指定该Docker镜像的版本号;
在预设的各个地点分别部署多个Redis服务实例,组成Redis集群;
部署多个Predixy的Docker镜像实例,组成Predixy集群;
Predixy集群中的各个Docker镜像实例根据预设的策略规则,将客户端发送的数据分别路由到对应的Redis服务实例上。
较佳的,所述Predixy集群中的各个Docker镜像实例根据预设的策略规则,将客户端发送的数据分别路由到对应的Redis服务实例上包括:
预先定义数据类别以及数据类别的标识;
预先确定各种数据类型所对应的Redis服务实例;
客户端在发送数据时,在所发送的数据的key的前缀中添加相应的数据类别的标识;
Predixy集群中的各个Docker镜像实例接收到客户端发送的数据时,根据数据的key的前缀中的数据类别的标识确定所对应的Redis服务实例,并将该数据路由到所确定的Redis服务实例上。
较佳的,预先定义2种数据类别:数据类别user和数据类别other,并预先定义这2种数据类别的标识;
当客户端在发送数据时,如果所发送的数据为用户数据,则在该数据的key的前缀中添加相应的数据类别user的标识;而如果所发送的数据为其它数据,则在该数据的key的前缀中添加相应的数据类别other的标识。
较佳的,当Redis集群中有6个Redis服务实例Master-A、Master-B、Master-C、Master-D、Master-E和Master-F时,将数据类别user对应于Master-A和Master-B,并将数据类别other对应于Master-C、Master-D、Master-E和Master-F。
较佳的,将键空间中的0~2730的slot对应于Master-A,将2731~5462的slot对应于Master-B,将5463~8194的slot对应于Master-C,将8195~10926的slot对应于Master-D,将10927~13658的slot对应于Master-E,将13659~16383的slot对应于Master-E。
较佳的,该方法进一步包括:
使用Key分布算法,根据数据的key的前缀中的数据类别的标识确定所对应的slot值,然后将该数据路由到该slot值所对应的Redis服务实例上。
较佳的,所述Redis集群包括两种类型的Redis服务实例:写实例和读实例。
较佳的,各个Redis服务实例通过Docker容器进行部署;
各个Predixy的Docker镜像实例通过Docker容器进行部署。
如上可见,在本发明中的Redis服务实例的路由方法中,由于预先部署多个Redis服务实例组成Redis集群,并部署多个Predixy的Docker镜像实例组成Predixy集群,因此Predixy集群中的各个Docker镜像实例可以将客户端发送的数据(例如,教育云平台上的服务和应用发送的写数据请求、读数据请求等)分别路由到对应的Redis服务实例上,从而可以将不同类别的数据分别路由到不同的Redis服务实例上,使得客户端可以直接获得Redis集群中的全部集群功能。
另外,在本发明的技术方案中,由于Redis集群是由多个Redis服务实例组成的,而Redis服务实例可以预先分别部署在预设的各个地点,因此解决了Redis路由组件的可分布性的问题,使得在一个负载均衡器下面,可以快速部署多个容器;还可以根据实际的业务需求对容器的数量进行动态的调整,以满足业务需求。在不需要容器时,还可以快速地销毁容器,从而可以节省资源。
附图说明
图1为本发明实施例中的Redis服务实例的路由方法的流程图。
图2为本发明实施例中的Redis服务实例的路由方法的原理示意图。
图3为本发明实施例中的数据类型与Redis服务实例对应的示意图。
具体实施方式
为使本发明的技术方案及优点更加清楚明白,以下结合附图及具体实施例,对本发明作进一步详细的说明。
图1为本发明实施例中的Redis服务实例的路由方法的流程图。
如图1所示,本发明实施例中的Redis服务实例的路由方法包括如下所述步骤:
步骤11,编写Dockerfile,将单独的服务组件包装为Docker镜像,并且指定该Docker镜像的版本号。
其中,Docker是一种开源的应用容器引擎,而Dockerfile是一个文本文件,其中包含了多条指令(Instruction)。
步骤12,在预设的各个地点分别部署多个Redis服务实例,组成Redis集群。
其中,Redis是一种开源的、使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库。
例如,较佳的,在本发明的一个具体实施例中,可以在预设的3个机房(A机房、B机房和C机房)中分别部署多个Redis服务实例,每个机房中的多个Redis服务实例可以组成一个Redis集群,如图2所示。
另外,较佳的,在本发明的一个具体实施例中,所述Redis集群包括两种类型的Redis服务实例:写实例和读实例。
另外,较佳的,在本发明的一个具体实施例中,各个Redis服务实例可以通过Docker容器进行部署。
步骤13,部署多个Predixy的Docker镜像实例,组成Predixy集群。
其中,Predixy是一种高性能全特征Redis代理。
例如,较佳的,在本发明的一个具体实施例中,可以在教育云环境中部署多个Predixy的Docker镜像实例,且每个Docker镜像实例都使用相同的配置,多个Predixy的Docker镜像实例可以组成一个Predixy集群,该Predixy集群可以形成一个Predixy中间代理层,从而可以对外提供统一的Redis路由服务,保证服务的高可用性。
另外,较佳的,在本发明的一个具体实施例中,各个Predixy的Docker镜像实例也可以通过Docker容器进行部署。
步骤14,Predixy集群中的各个Docker镜像实例根据预设的策略规则,将客户端发送的数据分别路由到对应的Redis服务实例上。
当通过上述的步骤11~13完成所有的设置之后,在本步骤中,Predixy集群中的各个Docker镜像实例即可将Redis客户端发送的数据(例如,Redis客户端上的服务或应用发送的写数据请求、读数据请求等)分别路由到对应的Redis服务实例上。因此,Redis客户端可以通过Predixy中间代理层路由到实际的Redis服务器上,Redis客户端的数据可以根据预设的策略规则分别路由到对应的Redis服务实例上。
在本发明的技术方案中,可以通过多种方式来实现上述的步骤14。以下将以其中的一种具体实现方式为例对本发明的技术方案进行详细的介绍。
例如,较佳的,在本发明的一个具体实施例中,所述步骤14可以包括如下的步骤:
步骤141,预先定义数据类别以及数据类别的标识。
例如,较佳的,在本发明一个具体实施例中,可以预先定义2种数据类别:数据类别user和数据类别other,并预先定义这2种数据类别的标识。
当然,在本发明的技术方案中,也可以根据实际应用的需要,预先定义多种数据类别以及相应的标识,在此不再一一赘述。
步骤142,预先确定各种数据类型所对应的Redis服务实例。
在本发明的技术方案中,还可以预先确定各种数据类型所对应的Redis服务实例。
例如,较佳的,在本发明一个具体实施例中,如图3所示,假设Redis集群中有6个Redis服务实例(master节点),且预先定义的数据类别为数据类别user和数据类别other,则可以预先确定各种数据类型所对应的Redis服务实例。
例如,较佳的,在本发明一个具体实施例中,假设Redis集群中的6个Redis服务实例为Master-A、Master-B、Master-C、Master-D、Master-E和Master-F,则可以将数据类别user对应于Master-A和Master-B,并将数据类别other对应于Master-C、Master-D、Master-E和Master-F。
另外,可以将Master-A和Master-B统称为slots-A区间,并将Master-C、Master-D、Master-E和Master-F统称为slots-B区间。
更进一步的,由于键空间可以被分割为16384个槽(slot),因此一个集群的最大节点数量是16384个。所以,在本发明的技术方案中,可以进一步预先进行设置,使得Redis集群中的各个Redis服务实例分别对应键空间中的预设数量的slot。
例如,较佳的,在本发明一个具体实施例中,如图3所示,假设Redis集群中的6个Redis服务实例为Master-A、Master-B、Master-C、Master-D、Master-E和Master-F,则可以将0~2730的slot对应于Master-A,将2731~5462的slot对应于Master-B,将5463~8194的slot对应于Master-C,将8195~10926的slot对应于Master-D,将10927~13658的slot对应于Master-E,将13659~16383的slot对应于Master-E。
因此,slots-A区间可以包含从0到5462的slot,共有5463个slot;而slots-B区间可以包含从5463到16383的slot,共有10921个slot。
在预先确定了各种数据类型所对应的Redis服务实例之后,在后续的操作中,即可将各种数据类型的数据分别路由并存储在所对应的Redis服务实例中。
例如,在如图3所示的上述例子中,可以将数据类别user的数据路由到slot-A区间的Master-A或Master-B节点上进行存储(或者,还可以进一步存储到0~5462的slot中),将数据类别other的数据路由到slot-B区间的Master-C、Master-D、Master-E或Master-F节点上进行存储(或者,还可以进一步存储到5463~16383的slot中)。
另外,在本发明的技术方案中,还可以设置多个Redis服务实例作为Slaver(例如,图2中的Slave-A、S-B、S-C、S-N等),从而可以与之前的Master实现冗余备份。
步骤143,客户端在发送数据时,在所发送的数据的key(键)的前缀中添加相应的数据类别的标识。
例如,较佳的,在本发明一个具体实施例中,假设预先定义的数据类别为数据类别user和数据类别other,客户端在发送数据时,如果所发送的数据为用户数据,则在该数据的key的前缀中添加相应的数据类别user的标识;而如果所发送的数据为其它数据,则在该数据的key的前缀中添加相应的数据类别other的标识。
步骤144,Predixy集群中的各个Docker镜像实例接收到客户端发送的数据时,根据数据的key的前缀中的数据类别的标识确定所对应的Redis服务实例,并将该数据路由到所确定的Redis服务实例上。
在本发明的技术方案中,可以通过多种方式来实现上述的步骤144。以下将以其中的一种具体实现方式为例对本发明的技术方案进行详细的介绍。
例如,较佳的,在本发明的一个具体实施例中,可以使用Key分布算法,根据数据的key的前缀中的数据类别的标识确定所对应的slot值,然后将该数据路由到该slot值所对应的Redis服务实例上,并可以进一步存储在所对应的Redis服务实例上。
通过上述的步骤141~144,即可将客户端发送的数据分别路由到对应的Redis服务实例上。
综上所述,在本发明的技术方案中,由于预先部署多个Redis服务实例组成Redis集群,并部署多个Predixy的Docker镜像实例组成Predixy集群,因此Predixy集群中的各个Docker镜像实例可以将客户端发送的数据(例如,教育云平台上的服务和应用发送的写数据请求、读数据请求等)分别路由到对应的Redis服务实例上,从而可以将不同类别的数据分别路由到不同的Redis服务实例上,使得客户端可以直接获得Redis集群中的全部集群功能。
通过使用Predixy集群作为Redis集群的路由,可以充分提高Redis集群的高可用、高性能;提高教育云平台上的服务和应用获取数据的效率,可以更快速地创新出新的应用场景,也可以更快速地满足教育云平台上创造新业务的需求;还可以对数据进行分类管理,不同类别的数据路由到不同的Redis的master节点上,针对不同数据类别的master节点,配置不同的硬件设备;也可以针对某个数据类别进行整体迁移,迁移到其它的Redis集群中,降低教育云平台的运营成本。
另外,在本发明的技术方案中,由于Redis集群是由多个Redis服务实例组成的,而Redis服务实例可以预先分别部署在预设的各个地点,因此解决了Redis路由组件的可分布性的问题,使得在一个负载均衡器下面,可以快速部署多个容器;还可以根据实际的业务需求(例如,Docker镜像内程序的实际运行情况等),对容器的数量进行动态的调整(例如,调整CPU、内存的使用数量等),以满足业务需求。在不需要容器时,还可以快速地销毁容器,从而可以节省系统资源,解决了Redis路由组件的高可伸缩性的问题。
因此可知,在本发明的技术方案中,提出了一种支持Redis集群部署框架的路由方法,可以有效地解决传统Redis集群部署架构、特别是教育云平台发展中遇到的问题,可以很好地适用于教育云平台上。在教育云平台上使用Docker容器的概念、模式、工具,部署Predixy和Redis,可以提高Predixy和Redis教育云平台上部署、维护、升级、水平扩展的生产效率。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (7)
1.一种Redis服务实例的路由方法,其特征在于,该方法包括如下步骤:
编写Dockerfile,将单独的服务组件包装为Docker镜像,并且指定该Docker镜像的版本号;
在预设的各个地点分别部署多个Redis服务实例,组成Redis集群;
部署多个Predixy的Docker镜像实例,组成Predixy集群;
Predixy集群中的各个Docker镜像实例根据预设的策略规则,将客户端发送的不同类别的数据分别路由到不同的Redis服务实例上;
其中,所述Predixy集群中的各个Docker镜像实例根据预设的策略规则,将客户端发送的不同类别的数据分别路由到不同的Redis服务实例上包括:
预先定义数据类别以及数据类别的标识;
预先确定各种数据类型所对应的Redis服务实例;
客户端在发送数据时,在所发送的数据的key的前缀中添加相应的数据类别的标识;
Predixy集群中的各个Docker镜像实例接收到客户端发送的数据时,根据数据的key的前缀中的数据类别的标识确定所对应的Redis服务实例,并将该数据路由到所确定的Redis服务实例上。
2.根据权利要求1所述的方法,其特征在于:
预先定义2种数据类别:数据类别user和数据类别other,并预先定义这2种数据类别的标识;
当客户端在发送数据时,如果所发送的数据为用户数据,则在该数据的key的前缀中添加相应的数据类别user的标识;而如果所发送的数据为其它数据,则在该数据的key的前缀中添加相应的数据类别other的标识。
3.根据权利要求2所述的方法,其特征在于:
当Redis集群中有6个Redis服务实例Master-A、Master-B、Master-C、Master-D、Master-E和Master-F时,将数据类别user对应于Master-A和Master-B,并将数据类别other对应于Master-C、Master-D、Master-E和Master-F。
4.根据权利要求3所述的方法,其特征在于:
将键空间中的0~2730的slot对应于Master-A,将2731~5462的slot对应于Master-B,将5463~8194的slot对应于Master-C,将8195~10926的slot对应于Master-D,将10927~13658的slot对应于Master-E,将13659~16383的slot对应于Master-E。
5.根据权利要求4所述的方法,其特征在于,该方法进一步包括:
使用Key分布算法,根据数据的key的前缀中的数据类别的标识确定所对应的slot值,然后将该数据路由到该slot值所对应的Redis服务实例上。
6.根据权利要求1所述的方法,其特征在于:
所述Redis集群包括两种类型的Redis服务实例:写实例和读实例。
7.根据权利要求1所述的方法,其特征在于:
各个Redis服务实例通过Docker容器进行部署;
各个Predixy的Docker镜像实例通过Docker容器进行部署。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811638719.2A CN109862075B (zh) | 2018-12-29 | 2018-12-29 | 一种Redis服务实例的路由方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811638719.2A CN109862075B (zh) | 2018-12-29 | 2018-12-29 | 一种Redis服务实例的路由方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109862075A CN109862075A (zh) | 2019-06-07 |
CN109862075B true CN109862075B (zh) | 2022-05-03 |
Family
ID=66893283
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811638719.2A Active CN109862075B (zh) | 2018-12-29 | 2018-12-29 | 一种Redis服务实例的路由方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109862075B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110837424A (zh) * | 2019-10-15 | 2020-02-25 | 东软集团股份有限公司 | 服务实例确定方法、装置、存储介质及电子设备 |
CN111371684B (zh) * | 2020-03-02 | 2022-08-09 | 中国邮政储蓄银行股份有限公司 | 路由处理方法及装置、双活数据中心系统 |
CN112416847B (zh) * | 2020-04-15 | 2023-05-02 | 上海哔哩哔哩科技有限公司 | Redis集群创建方法、系统及装置 |
CN112000515A (zh) * | 2020-08-07 | 2020-11-27 | 北京浪潮数据技术有限公司 | 一种redis集群中的实例数据恢复方法及组件 |
CN112532523B (zh) * | 2020-11-23 | 2021-11-12 | 福建顶点软件股份有限公司 | 一种基于子服务路由的进程内调度方法和存储设备 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105357296A (zh) * | 2015-10-30 | 2016-02-24 | 河海大学 | 一种Docker云平台下弹性缓存系统 |
CN106649083A (zh) * | 2016-09-05 | 2017-05-10 | 中国农业银行股份有限公司 | 应用灰度发布方法及设备、应用访问方法及设备 |
WO2017080257A1 (zh) * | 2015-11-11 | 2017-05-18 | 华讯方舟科技有限公司 | 一种基于键值对的数据处理方法及系统 |
CN108881477A (zh) * | 2018-07-16 | 2018-11-23 | 上海新炬网络技术有限公司 | 一种基于分布式的文件采集监控的方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103731341B (zh) * | 2013-12-30 | 2018-08-03 | 广州华多网络科技有限公司 | 一种对即时通讯业务进行处理的方法及系统 |
CN104199957B (zh) * | 2014-09-17 | 2018-03-02 | 合一网络技术(北京)有限公司 | 一种Redis通用代理的实现方法 |
US10249172B2 (en) * | 2016-06-27 | 2019-04-02 | M/s. Hug Innovations Corp. | Wearable device for safety monitoring of a user |
CN107800551A (zh) * | 2016-08-31 | 2018-03-13 | 北京优朋普乐科技有限公司 | Redis集群系统及其提高可靠性的方法、客户端 |
-
2018
- 2018-12-29 CN CN201811638719.2A patent/CN109862075B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105357296A (zh) * | 2015-10-30 | 2016-02-24 | 河海大学 | 一种Docker云平台下弹性缓存系统 |
WO2017080257A1 (zh) * | 2015-11-11 | 2017-05-18 | 华讯方舟科技有限公司 | 一种基于键值对的数据处理方法及系统 |
CN106649083A (zh) * | 2016-09-05 | 2017-05-10 | 中国农业银行股份有限公司 | 应用灰度发布方法及设备、应用访问方法及设备 |
CN108881477A (zh) * | 2018-07-16 | 2018-11-23 | 上海新炬网络技术有限公司 | 一种基于分布式的文件采集监控的方法 |
Non-Patent Citations (1)
Title |
---|
Redis集群可靠性的研究与优化;李燚;《中国优秀硕士学位论文全文数据库》;20180131;正文第2.1节、附图2.1 * |
Also Published As
Publication number | Publication date |
---|---|
CN109862075A (zh) | 2019-06-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109862075B (zh) | 一种Redis服务实例的路由方法 | |
CN110198231B (zh) | 用于多租户的容器网络管理方法和系统以及中间件 | |
US11354039B2 (en) | Tenant-level sharding of disks with tenant-specific storage modules to enable policies per tenant in a distributed storage system | |
US11409556B2 (en) | Custom placement policies for virtual machines | |
US7490265B2 (en) | Recovery segment identification in a computing infrastructure | |
CN107818112B (zh) | 一种大数据分析作业系统及任务提交方法 | |
CN105579965B (zh) | 经由提供商定义接口的客户端驻地资源控制 | |
US20130219022A1 (en) | Hypothetical policy and event evaluation | |
US10250437B2 (en) | Method and system for configuring network devices | |
US11108687B1 (en) | Scalable network function virtualization service | |
CN103067433A (zh) | 一种分布式存储系统的数据迁移方法、设备和系统 | |
CN104468150A (zh) | 一种虚拟主机实现故障迁移的方法及虚拟主机业务装置 | |
CN113961312A (zh) | 目标服务的部署方法、装置和电子设备 | |
CN108073423A (zh) | 一种加速器加载方法、系统和加速器加载装置 | |
CN115086330A (zh) | 跨集群负载均衡系统 | |
US20190158455A1 (en) | Automatic dns updates using dns compliant container names | |
CN110298031B (zh) | 一种词典服务系统及模型版本一致性配送方法 | |
US10452295B1 (en) | Data routing in information processing system utilizing persistent memory | |
CN116418826A (zh) | 对象存储系统扩容方法、装置、系统及计算机设备 | |
US11240107B1 (en) | Validation and governance of a cloud computing platform based datacenter | |
US8229980B2 (en) | State buckets | |
Myoupo et al. | On the Dynamic Replacement of Virtual Service Resources for Mobile Users in Virtual Networks. | |
CN111382326A (zh) | 实例组创建方法、装置、服务器及存储介质 | |
CN116719481B (zh) | 配置数据处理方法、装置及相关设备 | |
CN109947451A (zh) | 一种集群应用文件更新方法、系统、介质及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |