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实例,并且自适应动态创建组,以及为创建的组添加主从Redi ...
【技术保护点】
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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。