一种Codis集群扩容的方法和装置制造方法及图纸

技术编号:20915518 阅读:18 留言:0更新日期:2019-04-20 09:29
本发明专利技术公开了一种Codis集群扩容的方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:根据待创建扩容组的数量G和每个待创建扩容组所需的Redis实例的个数S生成Redis实例队列;根据当前集群可用的槽位创建G个扩容组,并且读取所述Redis实例队列,向创建的每个扩容组中添加S个Redis实例。该实施方式能够动态规划Codis集群所需要创建的组和组中所需添加的主从Redis实例,并且自适应动态创建组,以及为创建的组添加主从Redis实例,减少人工参与,降低了成本,提高了扩容效率和准确度。

A Method and Device for Codis Cluster Expansion

The invention discloses a CODIS cluster expansion method and device, which relates to the field of computer technology. One specific implementation of the method includes: generating Redis instance queues according to the number G of expansion groups to be created and the number S of Redis instances required for each expansion group to be created; creating G expansion groups according to the available slots in the current cluster, and reading the Redis instance queues, adding S Redis instances to each expansion group created. The implementation can dynamically plan the groups that Codis cluster needs to create and the master-slave Redis instances that need to be added in the groups, and dynamically create the groups adaptively, and add the master-slave Redis instances for the groups created, so as to reduce the manual participation, reduce the cost and improve the efficiency and accuracy of expansion.

【技术实现步骤摘要】
一种Codis集群扩容的方法和装置
本专利技术涉及计算机
,尤其涉及一种Codis集群扩容的方法和装置。
技术介绍
开源项目Codis是一个分布式的Redis解决方案(Redis是基于内存亦可持久化的日志型、Key-Value数据库),现在已经应用在各个场景中。现阶段对于Codis集群进行扩容,是基于其自带的管理工具(如codis-admin),逐一对codis-server(Codis项目维护的一个Redis分支)进行操作。具体的,首先通过人为观察确定出可用的槽位,并且基于该可用的槽位通过页面操作创建出一个扩容组Codis-Redis-Group;然后人为操作相应页面为该Codis-Redis-Group添加一个主Redis实例codis-server-master,以及为该Codis-Redis-Group逐一添加从Redis实例codis-server-slave。重复上述创建以及添加的过程,为当前Codis集群进行扩容。在实现本专利技术过程中,专利技术人发现现有技术中至少存在如下问题:面对大规模Codis集群扩容的需求,现有技术只能通过人工进行扩容以及只支持单台操作,所以操作速度慢、效率低;对于不止维护一套Codis集群的现状,如果各个集群都通过手工维护,则会有准确度不高的问题;而且,扩容Codis集群时需要人为规划,存在人工成本高的问题。
技术实现思路
有鉴于此,本专利技术实施例提供一种Codis集群扩容的方法和装置,能够动态规划Codis集群所需要创建的组和组中所需添加的主从Redis实例,并且自适应动态创建组,以及为创建的组添加主从Redis实例。为实现上述目的,根据本专利技术实施例的一个方面,提供了一种Codis集群扩容的方法。本专利技术实施例的Codis集群扩容的方法包括:根据待创建扩容组的数量G和每个待创建扩容组所需的Redis实例的个数S生成Redis实例队列;根据当前集群可用的槽位创建G个扩容组,并且读取所述Redis实例队列,向创建的每个扩容组中添加S个Redis实例。可选地,所述生成Redis实例队列的步骤包括:根据扩容组的数量G和每个扩容组所需的Redis实例的个数S,获取G*S个Redis实例的标识信息;将获取到的Redis实例的标识信息存于Redis实例队列中。可选地,在根据当前集群可用的槽位创建G个扩容组,并且读取所述Redis实例队列,向每个扩容组中添加S个Redis实例之前,还包括:获取当前集群中的已有组的ID,根据所述已有组的ID获取对应的所述已有组在当前集群中的槽位;根据所述已有组的槽位以及当前集群支持的组的最大数量,确定出当前集群可用的槽位。可选地,在确定出当前集群可用的槽位之后,还包括将所述可用的槽位存于槽位队列中;所述根据当前集群可用的槽位创建G个扩容组,并且读取所述Redis实例队列,向每个扩容组中添加S个Redis实例的步骤包括:读取所述槽位队列中的G个可用槽位,根据所述G个可用槽位创建G个扩容组;读取所述Redis实例队列中的标识信息,向每个扩容组中添加S个Redis实例。可选地,还包括:在根据当前集群可用的槽位创建G个扩容组之前,确定当前集群可用的槽位的数量大于所述待创建扩容组的数量G。可选地,所述Redis实例队列包括主Redis实例队列和从Redis实例队列;所述根据扩容组的数量G和每个扩容组所需的Redis实例的个数S生成Redis实例队列的步骤包括:根据待扩容的Redis实例的个数N以及每个扩容组所需的Redis实例的个数S,计算待创建扩容组的数量G;将G个Redis实例的标识信息存于主Redis实例队列中;将N-G个Redis实例的标识信息存于从Redis实例队列中;所述根据当前集群可用的槽位创建G个扩容组,并且读取所述Redis实例队列,向每个扩容组中添加S个Redis实例的步骤包括:根据当前集群可用的槽位创建一个扩容组,并且,读取出所述主Redis实例队列中的一个标识信息以及所述从Redis实例队列中的S-1个标识信息,将读取出的标识信息添加到该扩容组;直至创建的扩容组的个数为G。为实现上述目的,根据本专利技术实施例的另一个方面,提供了一种Codis集群扩容的装置。本专利技术实施例的Codis集群扩容的装置包括:队列生成模块,用于根据待创建扩容组的数量G和每个待创建扩容组所需的Redis实例的个数S生成Redis实例队列;创建模块,用于根据当前集群可用的槽位创建G个扩容组,并且读取所述Redis实例队列,向创建的每个扩容组中添加S个Redis实例。可选地,所述队列生成模块还用于,根据扩容组的数量G和每个扩容组所需的Redis实例的个数S,获取G*S个Redis实例的标识信息;以及,将获取到的Redis实例的标识信息存于Redis实例队列中。可选地,还包括确定模块,用于获取当前集群中的已有组的ID,根据所述已有组的ID获取对应的所述已有组在当前集群中的槽位;以及,根据所述已有组的槽位以及当前集群支持的组的最大数量,确定出当前集群可用的槽位。可选地,所述确定模块还用于,将所述可用的槽位存于槽位队列中;所述创建模块还用于,读取所述槽位队列中的G个可用槽位,根据所述G个可用槽位创建G个扩容组;读取所述Redis实例队列中的标识信息,向每个扩容组中添加S个Redis实例。可选地,还包括判断模块,用于确定当前集群可用的槽位的数量大于所述待创建扩容组的数量G。可选地,所述队列生成模块还用于,根据待扩容的Redis实例的个数N以及每个扩容组所需的Redis实例的个数S,计算待创建扩容组的数量G;将G个Redis实例的标识信息存于主Redis实例队列中;将N-G个Redis实例的标识信息存于从Redis实例队列中;所述创建模块还用于,根据当前集群可用的槽位创建一个扩容组,并且,读取出所述主Redis实例队列中的一个标识信息以及所述从Redis实例队列中的S-1个标识信息,将读取出的标识信息添加到该扩容组;直至创建的扩容组的个数为G。为实现上述目的,根据本专利技术实施例的再一个方面,提供了一种Codis集群扩容的服务器。本专利技术实施例的Codis集群扩容的服务器包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一项Codis集群扩容的方法。为实现上述目的,根据本专利技术实施例的再一个方面,提供了一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现上述任一项Codis集群扩容的方法。上述专利技术中的一个实施例具有如下优点或有益效果:根据当前集群可用的槽位自动创建G个扩容组后,读取生成的Redis实例队列,则自动为创建的扩容组添加主从Redis实例,进而减少扩容过程中人工的参与,降低了成本。并且本实施例的过程通过程序实现,不仅提高了扩容效率,而且又因为程序中会通过一些准确逻辑进行判断,则提高了扩容的操作准确度。上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。附图说明附图用于更好地理解本专利技术,不构成对本专利技术的不当限定。其中:图1是Codis集群codis-server构架的示意图;图2是根据本专利技术实施例的一种Codis集群扩容的方法的基本步骤本文档来自技高网...

【技术保护点】
1.一种Codis集群扩容的方法,其特征在于,包括:根据待创建扩容组的数量G和每个待创建扩容组所需的Redis实例的个数S生成Redis实例队列;根据当前集群可用的槽位创建G个扩容组,并且读取所述Redis实例队列,向创建的每个扩容组中添加S个Redis实例。

【技术特征摘要】
1.一种Codis集群扩容的方法,其特征在于,包括:根据待创建扩容组的数量G和每个待创建扩容组所需的Redis实例的个数S生成Redis实例队列;根据当前集群可用的槽位创建G个扩容组,并且读取所述Redis实例队列,向创建的每个扩容组中添加S个Redis实例。2.根据权利要求1所述的方法,其特征在于,所述生成Redis实例队列的步骤包括:根据扩容组的数量G和每个扩容组所需的Redis实例的个数S,获取G*S个Redis实例的标识信息;将获取到的Redis实例的标识信息存于队列中,以生成Redis实例队列。3.根据权利要求1所述的方法,其特征在于,在根据当前集群可用的槽位创建G个扩容组,并且读取所述Redis实例队列,向每个扩容组中添加S个Redis实例之前,还包括:获取当前集群中的已有组的ID,根据所述已有组的ID获取对应的所述已有组在当前集群中的槽位;根据所述已有组的槽位以及当前集群支持的组的最大数量,确定出当前集群可用的槽位。4.根据权利要求3所述的方法,其特征在于,在确定出当前集群可用的槽位之后,还包括将所述可用的槽位存于槽位队列中;所述根据当前集群可用的槽位创建G个扩容组,并且读取所述Redis实例队列,向每个扩容组中添加S个Redis实例的步骤包括:读取所述槽位队列中的G个可用槽位,根据所述G个可用槽位创建G个扩容组;读取所述Redis实例队列中的标识信息,向每个扩容组中添加S个Redis实例。5.根据权利要求1所述的方法,其特征在于,还包括:在根据当前集群可用的槽位创建G个扩容组之前,确定当前集群可用的槽位的数量大于所述待创建扩容组的数量G。6.根据权利要求1所述的方法,其特征在于,所述Redis实例队列包括主Redis实例队列和从Redis实例队列;所述根据扩容组的数量G和每个扩容组所需的Redis实例的个数S生成Redis实例队列的步骤包括:根据待扩容的Redis实例的个数N以及每个扩容组所需的Redis实例的个数S,计算待创建扩容组的数量G;将G个Redis实例的标识信息存于主Redis实例队列中;将N-G个Redis实例的标识信息存于从Redis实例队列中;所述根据当前集群可用的槽位创建G个扩容组,并且读取所述Redis实例队列,向每个扩容组中添加S个Redis实例的步骤包括:根据当前集群可用的槽位创建一个扩容组,并且,读取出所述主Redis实例队列中的一个标识信息以及所述从Redis实例队列中的S-1个标识...

【专利技术属性】
技术研发人员:赵明珠
申请(专利权)人:北京京东尚科信息技术有限公司北京京东世纪贸易有限公司
类型:发明
国别省市:北京,11

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

1