本发明涉及云计算技术领域,具体提供一种redis集群获取可访问ip地址的方法。
背景技术:
随着redis的逐步兴起与大规模使用,单机redis无论从存储容量、计算压力和带宽上都已经受制于硬件技术的发展,即使市面上最高规格硬件存储和带宽也难以满足几百gb甚至tb级的应用场景,因此redis集群应运而生,它无论从扩展能力上还是数据承载能力上都是大规模redis应用场景的最佳解决方案。虽然市面上有很多redis集群方案,但是无论从支持上还是设计方面官方的集群方案都是十分优秀的,然而官方的方案在具有多层网络的环境中存在一个显著的重定向问题,当节点跨网关或者集群整体在2层以上的网络中的时候,返回的地址有时候对客户端来说是不可直接访问的,这就要求redis集群和客户端必须部署在同一个网络平面上,并且客户端想要在多层网络中进行重连,需要通过预先存储数据来查询可连接的ip地址,如何解决这些问题成为了为用户提供更具有通用性服务的一个难题。
技术实现要素:
本发明的技术任务是针对上述存在的问题,提供一种客户端不需要进行额外的开发能够正确的重定向到可访问地址,即能够有效解决多层网络中的ip地址映射问题,并且当数据节点地址发生变更时能够快速响应的redis集群获取可访问ip地址的方法。
为实现上述目的,本发明提供了如下技术方案:
一种redis集群获取可访问ip地址的方法,该方法中,redis集群的重定向由数据实际所在的节点处理,不由接受指令节点处理,包括redis集群节点响应客户端的过程和redis集群节点处理查新指令的过程。
作为优选,所述redis集群节点响应客户端的过程具体包括以下步骤:
s1、redis集群节点收到命令数据,计算key的校验码;
s2、判断数据是否在当前节点,若是,则执行步骤s3,否则执行步骤s4;
s3、返回数据,并执行步骤s6;
s4、向实际节点发送查询客户端网络平面的连接ip地址和端口;
s5、获得节点连接地址返回给客户端;
s6、结束。
redis集群节点收到命令数据,首选计算key的校验码,然后根据集群的分片数据计算出,数据存在于哪个节点,如果数据刚好存在当前节点则直接返回结果,否则向实际节点发送查询客户端网络平面的连接ip地址和端口,节点查询到地址后将数据返回给客户端,客户端进行进一步操作。
作为优选,所述redis集群节点处理查新指令的过程包括以下步骤:
s7、redis集群收到查询地址指令,解析出客户端地址;
s8、使用路由跟踪获取连接路径上的网关地址;
s9、根据开放路由表遍历所有网关上的路由表;
s10、将查询到数据节点上的出口ip地址和端口返回给发送指令的客户端。
作为优选,步骤s1中,redis集群节点收到查询或修改命令数据,计算key的校验码crc。
作为优选,步骤s4中,发送查询节点连接指令并发送客户端信息到数据所在节点。
作为优选,步骤s7中,redis集群收到查询指定客户端所在网络平面连接指令,解析出客户端的ip地址。
作为优选,步骤s8中,使用路由跟踪查询所有路径上的平台内网网关。
作为优选,步骤s9中,遍历网关查询路由,过滤出实际网络路径,获取最接近客户端的数据节点出口ip地址。
作为优选,步骤s10中,返回数据节点的连接信息给接收发送查询指令节点。
当redis收到查询指定客户端所在网络平面连接指令的时候,解析出客户端的ip地址,使用路由跟踪获取连接路上的所有网关地址,根据开放路由表遍历所有网关上的路由表,并过滤出数据节点到内网出口上的路径,将查询到数据节点上的出口ip地址和端口返回给发送指令的客户端,过程结束。
与现有技术相比,本发明的redis集群获取可访问ip地址的方法具有以下突出的有益效果:
(一)通过所述redis集群获取可访问ip地址的方法能够有效解决多层网络中的ip地址映射问题,不需要预先存储ip对应数据;
(二)当数据节点地址发生变更时能够快速响应;
(三)客户端不需要进行额外的开发能够正确的重定向到可访问地址,具有良好的推广应用价值。
附图说明
图1是本发明所述redis集群获取可访问ip地址的方法的redis集群节点响应客户端的过程流程图;
图2是本发明所述redis集群获取可访问ip地址的方法的redis集群节点处理查新指令的过程流程图。
具体实施方式
下面将结合附图和实施例,对本发明的redis集群获取可访问ip地址的方法作进一步详细说明。
实施例
本发明的redis集群获取可访问ip地址的方法,redis集群的重定向由数据实际所在的节点处理,不由接受指令节点处理,包括redis集群节点响应客户端的过程和redis集群节点处理查新指令的过程。
如图1所示,redis集群节点响应客户端的过程具体包括以下步骤:
s1、redis集群节点收到命令数据,计算key的校验码。
redis集群节点收到查询或修改命令数据,计算key的校验码crc。
s2、判断数据是否在当前节点,若是,则执行步骤s3,否则执行步骤s4。
s3、返回数据,并执行步骤s6。
s4、向实际节点发送查询客户端网络平面的连接ip地址和端口。
发送查询节点连接指令并发送客户端信息到数据所在节点。
s5、获得节点连接地址返回给客户端。
s6、结束。
redis集群节点收到命令数据,首选计算key的校验码,然后根据集群的分片数据计算出,数据存在于哪个节点,如果数据刚好存在当前节点则直接返回结果,否则向实际节点发送查询客户端网络平面的连接ip地址和端口,节点查询到地址后将数据返回给客户端,客户端进行进一步操作。
如图2所示,redis集群节点处理查新指令的过程包括以下步骤:
s7、redis集群收到查询地址指令,解析出客户端地址。
redis集群收到查询指定客户端所在网络平面连接指令,解析出客户端的ip地址。
s8、使用路由跟踪获取连接路径上的网关地址。使用路由跟踪查询所有路径上的平台内网网关。
s9、根据开放路由表遍历所有网关上的路由表。
遍历网关查询路由,过滤出实际网络路径,获取最接近客户端的数据节点出口ip地址。
s10、将查询到数据节点上的出口ip地址和端口返回给发送指令的客户端。返回数据节点的连接信息给接收发送查询指令节点。
当redis收到查询指定客户端所在网络平面连接指令的时候,解析出客户端的ip地址,使用路由跟踪获取连接路上的所有网关地址,根据开放路由表遍历所有网关上的路由表,并过滤出数据节点到内网出口上的路径,将查询到数据节点上的出口ip地址和端口返回给发送指令的客户端,过程结束。
以上所述的实施例,只是本发明较优选的具体实施方式,本领域的技术人员在本发明技术方案范围内进行的通常变化和替换都应包含在本发明的保护范围内。
1.一种redis集群获取可访问ip地址的方法,其特征在于:该方法中,redis集群的重定向由数据实际所在的节点处理,不由接受指令节点处理,包括redis集群节点响应客户端的过程和redis集群节点处理查新指令的过程。
2.根据权利要求1所述的redis集群获取可访问ip地址的方法,其特征在于:所述redis集群节点响应客户端的过程具体包括以下步骤:
s1、redis集群节点收到命令数据,计算key的校验码;
s2、判断数据是否在当前节点,若是,则执行步骤s3,否则执行步骤s4;
s3、返回数据,并执行步骤s6;
s4、向实际节点发送查询客户端网络平面的连接ip地址和端口;
s5、获得节点连接地址返回给客户端;
s6、结束。
3.根据权利要求2所述的redis集群获取可访问ip地址的方法,其特征在于:所述redis集群节点处理查新指令的过程包括以下步骤:
s7、redis集群收到查询地址指令,解析出客户端地址;
s8、使用路由跟踪获取连接路径上的网关地址;
s9、根据开放路由表遍历所有网关上的路由表;
s10、将查询到数据节点上的出口ip地址和端口返回给发送指令的客户端。
4.根据权利要求3所述的redis集群获取可访问ip地址的方法,其特征在于:步骤s1中,redis集群节点收到查询或修改命令数据,计算key的校验码crc。
5.根据权利要求4所述的redis集群获取可访问ip地址的方法,其特征在于:步骤s4中,发送查询节点连接指令并发送客户端信息到数据所在节点。
6.根据权利要求5所述的redis集群获取可访问ip地址的方法,其特征在于:步骤s7中,redis集群收到查询指定客户端所在网络平面连接指令,解析出客户端的ip地址。
7.根据权利要求6所述的redis集群获取可访问ip地址的方法,其特征在于:步骤s8中,使用路由跟踪查询所有路径上的平台内网网关。
8.根据权利要求7所述的redis集群获取可访问ip地址的方法,其特征在于:步骤s9中,遍历网关查询路由,过滤出实际网络路径,获取最接近客户端的数据节点出口ip地址。
9.根据权利要求8所述的redis集群获取可访问ip地址的方法,其特征在于:步骤s10中,返回数据节点的连接信息给接收发送查询指令节点。
技术总结