连接Redis内存数据库的方法、系统、选择器和服务器与流程

文档序号:15700932发布日期:2018-10-19 19:49阅读:188来源:国知局

本发明涉及计算机技术领域,特别是涉及一种连接Redis(REmote DIctionary Server)内存数据库的方法、系统、选择器和服务器。



背景技术:

Redis(REmote DIctionary Server)是目前应用最广的内存非结构化数据库之一,Redis在开发过程中使用基于内存的Redis内存数据库的应用越来越多,但由于Redis内存数据库外部的TCP连接数有限,使得现有的Redis内存数据库在并发请求时会因为TCP连接数不够用而出现不能提供服务的情况,也就是说,现有的Redis内存数据库在大规模并发访问情况下,会出现拒绝访问的情况。



技术实现要素:

本发明提供了一种连接Redis(REmote DIctionary Server)内存数据库的方法、系统、选择器和服务器,以解决现有技术中由于Redis内存数据库外部的TCP连接数有限,使得在大规模并发访问情况下出现Redis内存数据库拒绝访问的问题。

一方面,本发明提供了一种连接Redis内存数据库的方法,该方法包括:应用于选择器,包括:接收客户端的业务数据通讯请求;在预设的Redis代理服务器集群中选择最优的Redis代理服务器,并触发Redis代理服务器将客户端与业务数据通讯请求相对应的Redis内存数据库连接,以使客户端在Redis内存数据库中进行数据处理。

进一步地,在预设的Redis代理服务器集群中选择最优的Redis代理服务器,具体包括:根据业务数据通讯请求以及Redis代理服务器自身的状态确定最优的Redis代理服务器。

进一步地,Redis代理服务器自身的状态包括如下至少之一:Redis代理服务器发来的Redis代理服务器与Redis内存数据库集群中的Redis内存数据库的连接情况、Redis代理服务器自身负载情况、Redis代理服务器与Redis内存数据库的连接的负载使用情况、以及Redis代理服务器的访问效率。

进一步地,该方法还包括:接收Redis代理服务器发来的链接,并将链接发送给客户端,以使客户端根据链接,通过Redis代理服务器与Redis内存数据库进行连接;其中,链接为与业务数据通讯请求相对应的可连接到Redis内存数据库的链接。

进一步地,该方法还包括:在数据处理完成后,通知Redis代理服务器释放链路。

进一步地,通知Redis代理服务器释放链路,具体包括:在收到客户端发送来的归还链接请求后,通知Redis代理服务器断开与客户端的连接。

进一步地,该方法还包括:按预定周期触发Redis内存数据库向选择器发送Redis内存数据库的状态报告。

进一步地,业务数据通讯请求中至少包括以下中的一种或多种:预连接的Redis内存数据库、用户名、密码和数据库实例ID。

另一方面,本发明提供了另一种连接Redis内存数据库的方法,应用于Redis代理服务器,包括:接收选择器发来的触发,触发为建立客户端与业务数据通讯请求相对应的Redis内存数据库连接;根据触发将客户端与业务数据通讯请求相对应的Redis内存数据库连接,以使客户端在Redis内存数据库中进行数据处理;其中,Redis代理服务器设于预设的Redis代理服务器集群中。

进一步地,根据触发将客户端与业务数据通讯请求相对应的Redis内存数据库连接之前,方法还包括:将如下至少之一的Redis代理服务器自身的状态发送给选择器:Redis代理服务器自身与Redis内存数据库集群中的Redis内存数据库的连接情况、Redis代理服务器自身负载情况、Redis代理服务器与Redis内存数据库的连接的负载使用情况、以及Redis代理服务器的访问效率。

进一步地,根据触发将客户端与业务数据通讯请求相对应的Redis内存数据库连接,包括:根据业务数据通讯请求选择空闲链接或者新创建链接到Redis内存数据库,并将链接发送选择器。

进一步地,根据触发将客户端与业务数据通讯请求相对应的Redis内存数据库连接之后,方法还包括:在选择器触发下,断开与客户端的连接。

再一方面,本发明又提供了一种连接Redis内存数据库的方法,该方法包括:选择器在接收到客户端的业务数据通讯请求后,在预设的Redis代理服务器集群中选择最优的Redis代理服务器;Redis代理服务器将客户端与业务数据通讯请求相对应的Redis内存数据库连接,以使客户端在Redis内存数据库中进行数据处理。

进一步地,该方法还包括:将客户端、选择器、Redis代理服务器、Redis内存数据库之间交互的报文,均设置Redis数据包体位,通过Redis数据包体位,使选择器、Redis代理服务器、Redis内存数据库对报文进行识别。

进一步地,该方法还包括:将客户端、选择器、Redis代理服务器以及Redis内存数据库之间交互的报文,均设置校验位。

又再一方面,本发明提供了一种选择器,包括:第一接收单元,用于接收客户端的业务数据通讯请求;选择单元,用于在预设的Redis代理服务器集群中选择最优的Redis代理服务器,并触发Redis代理服务器将客户端与业务数据通讯请求相对应的Redis内存数据库连接,以使客户端在Redis内存数据库中进行数据处理。

还再一方面,本发明提供了一种Redis代理服务器,包括:第二接收单元,用于接收选择器发来的触发,触发为建立客户端与业务数据通讯请求相对应的Redis内存数据库连接;第二处理单元,用于根据触发将客户端与业务数据通讯请求相对应的Redis内存数据库连接,以使客户端在Redis内存数据库中进行数据处理;其中,Redis代理服务器设于预设的Redis代理服务器集群中。

又再一方面,本发明提供了一种连接Redis内存数据库的系统,包括:

客户端,用于向选择器发送业务数据通讯请求。

选择器,用于在接收到业务数据通讯请求后,在预设的Redis代理服务器集群中选择最优的Redis代理服务器;

Redis代理服务器集群,包括至少一个Redis代理服务器,用于将客户端与业务数据通讯请求相对应的Redis内存数据库连接,以使客户端在Redis内存数据库中进行数据处理;以及

Redis内存数据库,用于根据客户端发出的指令完成相应的数据处理。

本发明有益效果如下:

本发明通过预设的选择器在Redis代理服务器集群中确定最优的Redis代理服务器,最后通过该最优的Redis代理服务器将客户端SDK与Redis内存数据库连接,以实现客户端SDK在Redis内存数据库中进行数据处理,从而有效解决了现有技术中在大规模并发访问情况下出现Redis内存数据库拒绝访问的问题。

附图说明

图1是本发明实施例的一种连接Redis内存数据库的方法的流程示意图;

图2是本发明实施例的另一种连接Redis内存数据库的方法的架构示意图;

图3是本发明实施例的一种连接Redis内存数据库的系统的架构示意图;

图4是本发明实施例的再一种连接Redis内存数据库的方法的流程示意图;

图5是本发明实施例的又再一种连接Redis内存数据库的方法的流程示意图;

图6是本发明实施例的报文结构示意图;

图7是本发明实施例的选择器的结构示意图;

图8是本发明实施例的Redis代理服务器的结构示意图。

具体实施方式

为了解决现有技术中Redis内存数据库在大规模并发访问情况下出现拒绝访问的问题,本发明提供了一种连接Redis(REmote DIctionary Server)内存数据库的方法、系统、选择器和服务器,本发明通过设置选择器和Redis代理服务器集群,由选择器在Redis代理服务器集群中确定最优的Redis代理服务器,并通过该最优的Redis代理服务器将客户端SDK与Redis内存数据库连接,最终实现客户端SDK在Redis内存数据库中进行数据处理。以下结合附图以及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不限定本发明。

本发明实施例提供了一种连接Redis(REmote DIctionary Server)内存数据库的方法,参见图1,应用于选择器,该方法包括:

S101、接收客户端的业务数据通讯请求;

S102、在预设的Redis代理服务器集群中选择最优的Redis代理服务器,并触发Redis代理服务器将客户端与业务数据通讯请求相对应的Redis内存数据库连接,以使客户端在Redis内存数据库中进行数据处理。

也就是说,本发明实施例通过选择器在Redis代理服务器集群中确定最优的Redis代理服务器,最后通过该最优的Redis代理服务器将客户端SDK与Redis内存数据库连接,以实现客户端SDK在Redis内存数据库中进行数据处理,从而有效解决了现有技术中Redis内存数据库在大规模并发访问情况下出现拒绝访问的问题。

具体来说,本发明实施例是通过设置选择器和Redis代理服务器集群,Redis代理服务器集群包括第一代理服务器Redis_proxy(1)、第二代理服务器Redis_proxy(2)......第n代理服务器Redis_proxy(n),本发明实施例的Redis内存数据库也包括多个,如,第一Redis内存数据库REDIS(1)、第二Redis内存数据库REDIS(2).......第m Redis内存数据库REDIS(m),由选择器在Redis代理服务器集群中确定最优的Redis代理服务器,最后通过该最优的Redis代理服务器将客户端SDK与Redis内存数据库连接,从而使得客户端SDK在Redis内存数据库中进行数据处理。

需要说明的是,本发明实施例的业务数据通讯请求中至少包括以下中的一种或多种:预连接的Redis内存数据库、用户名、密码和数据库实例ID,当然,在具体实施时,本领域的技术人员也可以根据实际需要在业务数据通讯请求中设置其他内容,如,设置校验码等等。

本发明实施例的数据处理包括客户端SDK在Redis内存数据库中进行的存储、读取、删除等操作。

具体实施时,本发明实施例选择器在预设的Redis代理服务器集群中选择最优的Redis代理服务器具体是,根据业务数据通讯请求以及Redis代理服务器自身的状态确定最优的Redis代理服务器。

具体来说,本发明实施例的选择器是根据业务数据通讯请求确定客户端SDK预连接的Redis内存数据库,并根据客户端SDK预连接的Redis内存数据库以及Redis代理服务器与Redis内存数据库集群中的Redis内存数据库的连接情况来确定最优的Redis代理服务器。

简单来说,本发明实施例的选择器主要是根据业务数据通讯请求确定客户端SDK预连接的Redis内存数据库,以及Redis代理服务器与Redis内存数据库的连接情况来确定最优的Redis代理服务器。

具体实施时,本发明实施例中Redis代理服务器自身的状态包括如下至少之一:Redis代理服务器发来的Redis代理服务器与Redis内存数据库集群中的Redis内存数据库的连接情况、Redis代理服务器自身负载情况、Redis代理服务器与Redis内存数据库的连接的负载使用情况、以及Redis代理服务器的访问效率。

即,本发明实施例的选择器是根据业务数据通讯请求、Redis代理服务器发来的Redis代理服务器与Redis内存数据库集群中的Redis内存数据库的连接情况,Redis代理服务器自身负载情况、Redis代理服务器与Redis内存数据库的连接的负载使用情况、以及Redis代理服务器的访问效率,确定最优的Redis代理服务器。

也就是说,本发明实施例确定最优的Redis代理服务器是综合考虑以下各个因素:

1)业务数据通讯请求中客户端SDK预连接的Redis内存数据库;

2)Redis代理服务器与Redis内存数据库集群中的Redis内存数据库的连接情况;

3)Redis代理服务器自身负载情况;

4)Redis代理服务器与Redis内存数据库连接的负载使用情况;

5)Redis代理服务器的访问效率;等等情况,来最终确定最优的Redis代理服务器。

以及其他因素来最终确定最优的Redis代理服务器,在具体实施时,本领域的技术人员也可以设置其他的考虑因素,本发明对此并不做具体限定。

总体来说,本发明实施例是综合考虑上述因素来确定最优的Redis代理服务器。当然在具体实施时,本发明实施例可通过对各个因素来设置权重,并通过最终的计算结果来确定最优的Redis代理服务器。

具体实施时,本发明实施例的方法还包括:接收Redis代理服务器发来的链接,并将链接发送给客户端,以使客户端根据链接,通过Redis代理服务器与Redis内存数据库进行连接;其中,链接为与业务数据通讯请求相对应的到Redis内存数据库的链接。

本发明实施例通过选择器来确定最优Redis代理服务器,并通过最优Redis代理服务器建立客户端与Redis内存数据库连接和数据处理,可以减少Redis代理服务器的工作量,相应也可以减少客户端数据处理的时间,提高数据处理的效率。

具体实施时,本发明实施例通过Redis代理服务器根据业务数据通讯请求选择空闲链接或者新创建链接到Redis内存数据库,并将链接通过选择器发送给客户端,最终客户端根据链接,通过Redis代理服务器与Redis内存数据库进行连接。

也就是说,选择器在确定了最优的Redis代理服务器后,由该Redis代理服务器根据业务数据通讯请求选择空闲链接或者新创建链接到Redis内存数据库,并通过该链路来建立客户端SDK与Redis内存数据库的连接。

具体来说,在确定了最优的Redis代理服务器后,该Redis代理服务器根据业务数据通讯请求确定客户端SDK预连接的Redis内存数据库,并根据其自身与Redis内存数据库的连接情况,确定是选择空闲链接或者新创建链接到Redis内存数据库,并通过该链路来建立客户端SDK与Redis内存数据库的连接。

在具体实施时,本发明实施例建立客户端SDK与Redis内存数据库的连接,具体包括:由Redis代理服务器将链接上报给选择器,并通过选择器将链接发送给客户端SDK,以使客户端SDK根据链接,通过Redis代理服务器与Redis内存数据库进行连接。

也就是说,在具体实施时,客户端SDK是通过Redis代理服务器与Redis内存数据库进行连接,并通过Redis代理服务器传递客户端SDK和Redis内存数据库之间的交互的指令报文和数据报文。

具体实施时,本发明实施例方法还包括:在数据处理完成后,通过选择器通知Redis代理服务器释放链路。

具体来说,本发明实施例是在数据处理完成后,选择器根据客户端SDK发送来的归还链接请求后,通知Redis代理服务器断开与客户端SDK的连接。

也就是说,本发明实施例的客户端SDK在完成数据处理后,会向选择器发送归还链接请求,或者是其他的请求,以表明客户端SDK数据处理完成,选择器在收到上述请求后,则通知Redis代理服务器断开与,Redis代理服务器保留与与Redis内存数据库集群中的Redis内存数据库的连接关系,后续,选择器可根据客户端SDK发来的业务数据通讯请求,以及Redis代理服务器保留与与Redis内存数据库集群中的Redis内存数据库的连接关系,Redis代理服务器自身负载情况、Redis代理服务器与Redis内存数据库的连接的负载使用情况、以及Redis代理服务器的访问效率,来确定最优的Redis代理服务器,也就是说,本发明实施例可以实现Redis代理服务器与Redis内存数据库之间的连接的复用,从而大大节约系统开销。

具体实施时,本发明明年实施例方法还包括:选择器按预定周期触发Redis内存数据库向选择器发送Redis内存数据库的状态报告。

具体来说,本发明实施例通过选择器定期向Redis内存数据库发送一个发送状态报告的请求,Redis内存数据库在收到该请求后,向选择器发送Redis内存数据库的状态报告,选择器根据Redis内存数据库发送来的状态报告确定Redis内存数据库的状态。并且,选择器在收到状态报告后,会更新更新管理器数据。

或者也可以是,Redis内存数据库定期向选择器发送其自身的状态报告。

本发明实施例通过向选择器发送上述状态报告,以向选择器报活,而且通过该状态报告选择器可以有效保证Redis内存数据库连接的可靠性。

与图1相对应的,本发明实施例还一种连接Redis内存数据库的方法,参见图2,应用于Redis代理服务器,该方法包括:

S201、接收选择器发来的触发,触发为建立客户端与业务数据通讯请求相对应的Redis内存数据库连接;

S202、根据触发将客户端与业务数据通讯请求相对应的Redis内存数据库连接,以使客户端在Redis内存数据库中进行数据处理;

其中,Redis代理服务器设于预设的Redis代理服务器集群中。

也就是说,本发明实施例是通过选择器在Redis代理服务器集群中确定最优的Redis代理服务器,最后通过该最优的Redis代理服务器将客户端SDK与Redis内存数据库连接,以实现客户端SDK在Redis内存数据库中进行数据处理,从而有效解决了现有技术中Redis内存数据库在大规模并发访问情况下出现拒绝访问的问题。

具体实施时,本发明实施例在步骤S202之前,还包括:将如下至少之一的Redis代理服务器自身的状态发送给选择器:

Redis代理服务器自身与Redis内存数据库集群中的Redis内存数据库的连接情况、Redis代理服务器自身负载情况、Redis代理服务器与Redis内存数据库的连接的负载使用情况、以及Redis代理服务器的访问效率。

即,在具体实施时,本发明实施例的Redis代理服务器将Redis代理服务器自身与Redis内存数据库集群中的Redis内存数据库的连接情况,Redis代理服务器自身负载情况、Redis代理服务器与Redis内存数据库的连接的负载使用情况、以及Redis代理服务器的访问效率,发送给选择器,选择器根据上述条件来确定最优的Redis代理服务器,以减少Redis代理服务器的工作量,相应也可以减少客户端数据处理的时间。

进一步地,本发明实施例根据触发将客户端与业务数据通讯请求相对应的Redis内存数据库连接,包括:根据业务数据通讯请求选择空闲链接或者新创建链接到Redis内存数据库,并将链接发送选择器。通过选择器发送给客户端,最终客户端根据链接,通过Redis代理服务器与Redis内存数据库进行连接。

具体实施时,本发明实施例的Redis代理服务器还可在选择器触发下,断开与客户端的连接,保留与与Redis内存数据库集群中的Redis内存数据库的连接关系,实现Redis代理服务器与Redis内存数据库之间的连接的复用,从而大大节约系统开销。

图3是本发明实施例的一种连接Redis内存数据库的系统的架构示意图,下面将结合图3对本发明实施例连接Redis内存数据库的系统架构进行说明:

本发明实施例的系统架构包括客户端SDK、选择器Selector、Redis代理服务器集群和Redis内存数据库集群;

其中,Redis代理服务器集群包括第一代理服务器Redis_proxy(1)、第二代理服务器Redis_proxy(2)......第n代理服务器Redis_proxy(n);

Redis内存数据库集群包括:第一Redis内存数据库REDIS(1)、第二Redis内存数据库REDIS(2).......第m Redis内存数据库REDIS(m);

本发明实施例的中的n和m均为自然数。

本发明实施例的客户端SDK:主要负责和Redis代理集群进行业务数据通讯;

Redis代理服务器集群;负责维护Redis集群的连接维护,状态维护,对用户客户端SDK的业务请求进行响应,作为和Redis集群进行通讯的桥梁,同时保证服务的快捷有效性;

Redis内存数据库集群:作为Redis的实际业务数据的存储服务。

具体实施时,本发明实施例通过选择器在Redis代理服务器集群中确定最优的Redis代理服务器,并通过该最优的Redis代理服务器将客户端SDK与Redis内存数据库连接,从而使得客户端SDK在Redis内存数据库中进行数据处理。

图4是本发明实施例的另一种连接Redis内存数据库的方法的流程示意图,下面将结合图4对本发明实施例的方法进行详细的解释和说明:

Redis代理服务器启动后,上报自身状态到选择器;

选择器根据配置获取Redis集群状态;

客户端SDK向选择器发送业务数据通讯请求;

选择器根据业务数据通讯请求以及Redis代理服务器自身的状态确定最优的Redis代理服务器,并发送给客户端SDK;

客户端SDK访问该Redis代理服务器,由Redis代理服务器锁定客户端SDK与Redis代理服务器,以及Redis代理服务器与业务数据通讯请求相对应的Redis内存数据库之间的链接;

需要说明的是,在Redis代理服务器锁定链接过程中,需要Redis代理服务器向Redis内存数据库进行业务数据访问,并通过Redis内存数据库针对业务数据通讯请求进行数据处理;

客户端SDK向Redis代理服务器发送业务请求数据,Redis代理服务器获取数据库实例ID,并通过Redis内存数据库完成数据处理;

Redis内存数据库向选择器发送自身的状态报告,选择器根据Redis内存数据库发送来的状态报告更新管理器数据。

客户端SDK数据处理完成后,向选择器发送归还连接,由选择器通知Redis代理服务器,Redis代理服务器收到通知后,断开与客户端SDK的连接,也就是说,本发明实施例在连接使用完毕后,可以主动断开连接。

相应的,本发明实施例还提供了一种连接Redis内存数据库的方法,参见图5,包括:

S501、选择器在接收到客户端的业务数据通讯请求后,在预设的Redis代理服务器集群中选择最优的Redis代理服务器;

S502、Redis代理服务器将客户端与业务数据通讯请求相对应的Redis内存数据库连接,以使客户端在Redis内存数据库中进行数据处理。

本发明通过预设的选择器在Redis代理服务器集群中确定最优的Redis代理服务器,最后通过该最优的Redis代理服务器将客户端SDK与Redis内存数据库连接,以实现客户端SDK在Redis内存数据库中进行数据处理,从而有效解决了现有技术中在大规模并发访问情况下出现Redis内存数据库拒绝访问的问题。

具体实施时,本发明实施例的方法还包括,将客户端、选择器、Redis代理服务器、Redis内存数据库之间交互的报文,均设置Redis数据包体位,通过Redis数据包体位,使选择器、Redis代理服务器、Redis内存数据库对报文进行识别。

即,本发明实施例通过对Redis的协议进行二次封装,使用TCP/UDP的代理服务的方式进行扩充,同时对Redis的连接进行使用规划,避免对REDIS本身连接数的占用过多。

同时,本发明实施例还可将客户端、选择器、Redis代理服务器以及Redis内存数据库之间交互的报文,均设置校验位,以更好的保证系统的安全性。

图6是本发明实施例的报文结构示意图,如图6所示,本发明实施例的报文包括:

包头指令:2字节,描述该协议协议的命令字,主要为控制命令字;

长度:最小1个字节,最长4个字节,标识整个包长,长度的字节数由最低字节的最高两位决定,定义该长度字段本身的长度;

Redis包体,Redis本身的协议数据,属于Redis自身业务数据,本发明实施例通过Redis包体对Redis的协议进行二次封装,也就是说,本发明通过对Redis的连接进行使用规划,避免对Redis本身连接数的占用过多;

HMAC签名,对Redis数据包体做数字签名,即对报文设置校验位,防止数据被篡改;

本发明实施例的报文包括指令报文和数据报文,指令报文为客户端SDK向Redis代理服务器发起请求Redis连接占用,断开连接,传送连接状态;数据报文主要是客户端向Redis代理服务器发起Redis数据请求;

指令报文包含指令字,请求时,指令报文主要作用是获取连接、认证连接、报活心跳监测、主/被动断开连接以及复位资源;

指令报文主要包括:

0x001标明发起连接;

0x002标明获取Redis最优连接,包含以下参数中的一种或多种:用户名、密码、库名、用户名和密码;

0x100标明断开连接和连接ID;

0x101标明心跳监测;

本发明实施例的数据报文指令:请求时,数据包体中封装Redis请求指令,其中,

0x200标明传输Redis命令,Redis命令存于消息体中;

0x201标明传输返回命令字,返回内容包含Redis指令操作的返回信息。

也就是说,本发明实施例中客户端SDK向Redis代理服务器发送的报文,均设置Redis数据包体位,通过Redis数据包体位,使Redis代理服务器对报文进行识别。

并且,本发明实施例将客户端SDK、选择器、Redis代理服务器以及Redis内存数据库之间交互的报文,均设置校验位,从而增强外部访问的安全性。

具体实施时,本发明实施例在报文内容小于预设阈值时,客户端SDK、选择器、Redis代理服务器以及Redis内存数据库之间交互的报文采用UDP协议,从而保证报文传输的灵活性。并在报文内容大于预设阈值时,客户端SDK、选择器、Redis代理服务器以及Redis内存数据库之间交互的报文采用TCP协议,从而保证报文传输的稳定性。

具体实施时,本发明实施例设置预设阈值为512字节,当然具体实施时,本领域的技术人员也可以根据实际需要将该阈值设置为其他数值。

相应的,本发明实施例还提供了一种选择器,参见图7,该选择器包括:

第一接收单元,用于接收客户端的业务数据通讯请求;

选择单元,用于在预设的Redis代理服务器集群中选择最优的Redis代理服务器,并触发Redis代理服务器将客户端与业务数据通讯请求相对应的Redis内存数据库连接,以使客户端在Redis内存数据库中进行数据处理。

本发明实施例通过选择器在Redis代理服务器集群中确定最优的Redis代理服务器,最后通过该最优的Redis代理服务器将客户端SDK与Redis内存数据库连接,以实现客户端SDK在Redis内存数据库中进行数据处理,从而有效解决了现有技术中Redis内存数据库在大规模并发访问情况下出现拒绝访问的问题。

进一步地,本发明实施例选择单元是根据业务数据通讯请求以及Redis代理服务器自身的状态确定最优的Redis代理服务器。

具体实施时,本发明实施例Redis代理服务器自身的状态包括如下至少之一:Redis代理服务器发来的Redis代理服务器与Redis内存数据库集群中的Redis内存数据库的连接情况、Redis代理服务器自身负载情况、Redis代理服务器与Redis内存数据库的连接的负载使用情况、以及Redis代理服务器的访问效率。

简单来说,本发明实施例的选择器主要是根据业务数据通讯请求确定客户端SDK预连接的Redis内存数据库,以及Redis代理服务器与Redis内存数据库的连接情况来确定最优的Redis代理服务器。

进一步地,本发明实施例第一接收单元还用于,接收Redis代理服务器发来的链接,并将链接发送给客户端,以使客户端根据链接,通过Redis代理服务器与Redis内存数据库进行连接;其中,链接为与业务数据通讯请求相对应的可连接到Redis内存数据库的链接。

也就是说,本发明实施例通过选择器来确定最优Redis代理服务器,并通过最优Redis代理服务器建立客户端与Redis内存数据库连接和数据处理,可以减少Redis代理服务器的工作量,相应也可以减少客户端数据处理的时间,提高数据处理的效率。

具体实施时,第一处理单元还用于在数据处理完成后,通知Redis代理服务器释放链路。

具体来说,本发明实施例第一处理单元是在收到客户端发送来的归还链接请求后,通知Redis代理服务器断开与客户端的连接。

也就是说,本发明实施例的客户端SDK在完成数据处理后,会向选择器发送归还链接请求,或者是其他的请求,以表明客户端SDK数据处理完成,选择器在收到上述请求后,则通知Redis代理服务器断开与,Redis代理服务器保留与与Redis内存数据库集群中的Redis内存数据库的连接关系,后续,选择器可根据客户端SDK发来的业务数据通讯请求,以及Redis代理服务器保留与与Redis内存数据库集群中的Redis内存数据库的连接关系,Redis代理服务器自身负载情况、Redis代理服务器与Redis内存数据库的连接的负载使用情况、以及Redis代理服务器的访问效率,来确定最优的Redis代理服务器,也就是说,本发明实施例可以实现Redis代理服务器与Redis内存数据库之间的连接的复用,从而大大节约系统开销。

具体实施时,本发明实施例第一处理单元还用于,按预定周期触发Redis内存数据库向选择器发送Redis内存数据库的状态报告。

具体来说,本发明实施例通过选择器定期向Redis内存数据库发送一个发送状态报告的请求,Redis内存数据库在收到该请求后,向选择器发送Redis内存数据库的状态报告,选择器根据Redis内存数据库发送来的状态报告确定Redis内存数据库的状态。并且,选择器在收到状态报告后,会更新更新管理器数据。

或者也可以是,Redis内存数据库定期向选择器发送其自身的状态报告。

本发明实施例通过向选择器发送上述状态报告,以向选择器报活,而且通过该状态报告选择器可以有效保证Redis内存数据库连接的可靠性。

相应的,本发明实施例还提供了一种Redis代理服务器,参见图8,该Redis代理服务器包括:

第二接收单元,用于接收选择器发来的触发,触发为建立客户端与业务数据通讯请求相对应的Redis内存数据库连接;

第二处理单元,用于根据触发将客户端与业务数据通讯请求相对应的Redis内存数据库连接,以使客户端在Redis内存数据库中进行数据处理;

其中,Redis代理服务器设于预设的Redis代理服务器集群中。

本发明实施例是通过选择器在Redis代理服务器集群中确定最优的Redis代理服务器,最后通过该最优的Redis代理服务器将客户端SDK与Redis内存数据库连接,以实现客户端SDK在Redis内存数据库中进行数据处理,从而有效解决了现有技术中Redis内存数据库在大规模并发访问情况下出现拒绝访问的问题。

进一步地,本发明实施例第二处理单元还用于,将Redis代理服务器自身与Redis内存数据库集群中的Redis内存数据库的连接情况,Redis代理服务器自身负载情况、Redis代理服务器与Redis内存数据库的连接的负载使用情况、以及Redis代理服务器的访问效率,发送给选择器,以使选择器确定最优的Redis代理服务器,从而减少Redis代理服务器的工作量,相应也可以减少客户端数据处理的时间,提高数据处理的效率。

具体实施时,本发明实施例第二处理单元还用于,根据业务数据通讯请求选择空闲链接或者新创建链接到Redis内存数据库,并将链接发送选择器,再由选择器发送给客户端,使得客户端能够根据链接,通过Redis代理服务器与Redis内存数据库进行连接。

具体实施时,本发明实施例第二处理单元还用于,在选择器触发下,断开与客户端的连接。

也就是说,本发明实施例的客户端SDK在完成数据处理后,会向选择器发送归还链接请求,或者是其他的请求,以表明客户端SDK数据处理完成,选择器在收到上述请求后,则通知Redis代理服务器断开与,Redis代理服务器保留与与Redis内存数据库集群中的Redis内存数据库的连接关系,后续,选择器可根据客户端SDK发来的业务数据通讯请求,以及Redis代理服务器保留与与Redis内存数据库集群中的Redis内存数据库的连接关系,Redis代理服务器自身负载情况、Redis代理服务器与Redis内存数据库的连接的负载使用情况、以及Redis代理服务器的访问效率,来确定最优的Redis代理服务器,也就是说,本发明实施例可以实现Redis代理服务器与Redis内存数据库之间的连接的复用,从而大大节约系统开销。

相应的,本发明实施例还提供了一种连接Redis内存数据库的系统,参见图3,该系统包括:

客户端,用于向选择器发送业务数据通讯请求。

选择器,用于在接收到业务数据通讯请求后,在预设的Redis代理服务器集群中选择最优的Redis代理服务器;

Redis代理服务器集群,包括至少一个Redis代理服务器,用于将客户端与业务数据通讯请求相对应的Redis内存数据库连接,以使客户端在Redis内存数据库中进行数据处理;以及

Redis内存数据库,用于根据客户端发出的指令完成相应的数据处理。

也就是说,本发明实施例通过选择器在Redis代理服务器集群中确定最优的Redis代理服务器,最后通过该最优的Redis代理服务器将客户端SDK与Redis内存数据库连接,以实现客户端SDK在Redis内存数据库中进行数据处理,从而有效解决了现有技术中Redis内存数据库在大规模并发访问情况下出现拒绝访问的问题。

具体来说,本发明实施例是通过设置选择器和Redis代理服务器集群,Redis代理服务器集群包括第一代理服务器Redis_proxy(1)、第二代理服务器Redis_proxy(2)......第n代理服务器Redis_proxy(n),本发明实施例的Redis内存数据库也包括多个,如,第一Redis内存数据库REDIS(1)、第二Redis内存数据库REDIS(2).......第m Redis内存数据库REDIS(m),由选择器在Redis代理服务器集群中确定最优的Redis代理服务器,最后通过该最优的Redis代理服务器将客户端SDK与Redis内存数据库连接,从而使得客户端SDK在Redis内存数据库中进行数据处理。

需要说明的是,本发明实施例的业务数据通讯请求中至少包括以下中的一种或多种:预连接的Redis内存数据库、用户名、密码和数据库实例ID,当然,在具体实施时,本领域的技术人员也可以根据实际需要在业务数据通讯请求中设置其他内容,如,设置校验码等等。

本发明实施例的数据处理包括客户端SDK在Redis内存数据库中进行的存储、读取、删除等操作。

具体实施时,本发明实施例选择器还用于,根据业务数据通讯请求以及Redis代理服务器自身的状态确定最优的Redis代理服务器。

其中,本发明实施例中Redis代理服务器自身的状态包括如下至少之一:Redis代理服务器发来的Redis代理服务器与Redis内存数据库集群中的Redis内存数据库的连接情况、Redis代理服务器自身负载情况、Redis代理服务器与Redis内存数据库的连接的负载使用情况、以及Redis代理服务器的访问效率;

进一步地,本发明实施例Redis代理服务器还用于,向选择器发送其自身状态,选择器还用于,根据Redis代理服务器发来的Redis代理服务器自身状态以及业务数据通讯请求来确定最优的Redis代理服务器。

具体来说,本发明实施例的选择器是根据业务数据通讯请求确定客户端SDK预连接的Redis内存数据库,并根据客户端SDK预连接的Redis内存数据库以及Redis代理服务器与Redis内存数据库集群中的Redis内存数据库的连接情况来确定最优的Redis代理服务器。

简单来说,本发明实施例的选择器主要是根据业务数据通讯请求确定客户端SDK预连接的Redis内存数据库,以及Redis代理服务器与Redis内存数据库的连接情况来确定最优的Redis代理服务器。

具体实施时,本发明实施例中的选择器是根据业务数据通讯请求、Redis代理服务器发来的Redis代理服务器与Redis内存数据库集群中的Redis内存数据库的连接情况,Redis代理服务器自身负载情况、Redis代理服务器与Redis内存数据库的连接的负载使用情况、以及Redis代理服务器的访问效率,确定最优的Redis代理服务器。

具体实施时,本发明实施例Redis代理服务器还用于,根据业务数据通讯请求选择空闲链接或者新创建链接到Redis内存数据库,并建立客户端SDK与Redis内存数据库的连接。

也就是说,在确定了最优的Redis代理服务器后,由该Redis代理服务器根据业务数据通讯请求选择空闲链接或者新创建链接到Redis内存数据库,并通过该链路来建立客户端SDK与Redis内存数据库的连接。

具体来说,在确定了最优的Redis代理服务器后,该Redis代理服务器根据业务数据通讯请求确定客户端SDK预连接的Redis内存数据库,并根据其自身与Redis内存数据库的连接情况,确定是选择空闲链接或者新创建链接到Redis内存数据库,并通过该链路来建立客户端SDK与Redis内存数据库的连接。

在具体实施时,本发明实施例建立客户端SDK与Redis内存数据库的连接,具体包括:由Redis代理服务器将链接上报给选择器,并通过选择器将链接发送给客户端SDK,以使客户端SDK根据链接,通过Redis代理服务器与Redis内存数据库进行连接。

也就是说,在具体实施时,客户端SDK是通过Redis代理服务器与Redis内存数据库进行连接,并通过Redis代理服务器传递客户端SDK和Redis内存数据库之间的交互的指令报文和数据报文。Redis代理服务器还用于,根据业务数据通讯请求选择空闲链接或者新创建链接到Redis内存数据库,将链接上报给选择器,选择器将链接发送给客户端SDK,使客户端SDK根据链接与Redis内存数据库进行连接。

具体实施时,本发明实施例的选择器还用于,在数据处理完成后,通知Redis代理服务器释放链路。

具体来说,本发明实施例是在数据处理完成后,选择器根据客户端SDK发送来的归还链接请求后,通知Redis代理服务器断开与客户端SDK的连接。

也就是说,本发明实施例的客户端SDK在完成数据处理后,会向选择器发送归还链接请求,或者是其他的请求,以表明客户端SDK数据处理完成,选择器在收到上述请求后,则通知Redis代理服务器断开与,Redis代理服务器保留与与Redis内存数据库集群中的Redis内存数据库的连接关系,后续,选择器可根据客户端SDK发来的业务数据通讯请求,以及Redis代理服务器保留与与Redis内存数据库集群中的Redis内存数据库的连接关系,Redis代理服务器自身负载情况、Redis代理服务器与Redis内存数据库的连接的负载使用情况、以及Redis代理服务器的访问效率,来确定最优的Redis代理服务器。

具体实施时,本发明明年实施例方法还包括:选择器按预定周期触发Redis内存数据库向选择器发送Redis内存数据库的状态报告。

具体来说,本发明实施例通过选择器定期向Redis内存数据库发送一个发送状态报告的请求,Redis内存数据库在收到该请求后,向选择器发送Redis内存数据库的状态报告,选择器根据Redis内存数据库发送来的状态报告确定Redis内存数据库的状态。并且,选择器在收到状态报告后,会更新更新管理器数据。

或者也可以是,Redis内存数据库定期向选择器发送其自身的状态报告。

简单来说,本发明实施例通过向选择器发送上述状态报告,以向选择器报活,而且通过该状态报告选择器可以有效保证Redis内存数据库连接的可靠性。

总体来说,本发明实施例通过对Redis的协议进行二次封装,使用TCP/UDP的代理服务的方式进行扩充,同时对Redis的连接进行使用规划,避免对REDIS本身连接数的占用过多。

并且,本发明的实施例还提供一种计算机可读存储介质,计算机可读存储介质存储有一个或者多个程序,一个或者多个程序可被一个或者多个处理器执行,以实现前述实施例提供的任一种连接Redis内存数据库的方法,因此也能实现相应的技术效果。

尽管为示例目的,已经公开了本发明的优选实施例,本领域的技术人员将意识到各种改进、增加和取代也是可能的,因此,本发明的范围应当不限于上述实施例。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1