连接建立方法和装置与流程

文档序号:18106680发布日期:2019-07-06 11:42阅读:177来源:国知局
连接建立方法和装置与流程

本申请涉及网络通信技术,特别涉及连接建立方法和装置。



背景技术:

远程字典服务器(redis:remotedictionaryserver),是一种开源的基于内存的数据结构存储器,通常可作为数据库。在应用中,redis客户端负责向redis服务端备份数据。

在网络应用环境中,redis客户端与redis服务端之间会建立属于公有虚拟专用网络(vpn:virtualprivatenetwork)的tcp连接。但是,因为网络应用环境中ip地址资源有限,常会出现以下问题:至少两个网络设备比如redis服务端被分配了相同的ip地址。如图1所示,redis服务端1020与redis服务端1021被分配了相同ip地址192.168.5.10。此种情况下,因为redis服务端1020与redis服务端1021存在ip地址冲突(ip地址相同),则会导致redis客户端1011无法与redis服务端1020、redis服务端1021成功建立属于公网vpn的tcp连接。



技术实现要素:

有鉴于此,本申请提供了一种连接建立方法和装置,以在同一redis客户端同时连接具有相同ip地址的不同redis服务端的场景下,实现redis客户端成功与具有相同ip地址的各不同redis服务端建立tcp连接。

第一方面,本申请提供了一种连接建立方法,该方法应用于redis客户端,包括:

创建至少包括vpn索引的套接字地址结构,套接字地址结构与已创建的套接字对应,套接字与redis客户端和指定redis服务端之间待建立的tcp连接关联,vpn索引为redis客户端上指定接口绑定的vpn标识的索引,指定接口为redis客户端上连接指定redis服务端的接口;

依据套接字地址结构中的vpn索引在redis客户端与指定redis服务端之间建立归属于上述vpn标识对应的vpn的tcp连接。

结合第一方面,在第一种可能的实现方式中,在创建套接字地址结构之前,上述方法还包括:

接收配置指令,配置指令用于指示为指定接口绑定vpn标识,配置指令携带待与指定接口绑定的vpn标识;

检查配置指令携带的vpn标识是否与redis客户端上除指定接口之外的其它接口绑定的vpn标识相同;

如果否,将配置指令携带的vpn标识与指定接口绑定;

如果是,依据其它接口连接的对端设备的ip地址、以及指定接口连接的指定redis服务端的ip地址,判断是否将配置指令携带的vpn标识与指定接口绑定。

结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,依据其它接口连接的对端设备的ip地址、以及指定接口连接的指定redis服务端的ip地址,判断是否将配置指令携带的vpn标识与指定接口绑定,包括:

比较上述的其它接口连接的对端设备的ip地址和指定接口连接的指定redis服务端的ip地址;

如果相同,则禁止将配置指令携带的vpn标识与指定接口绑定并返回绑定失败消息;

如果不同,则将配置指令携带的vpn标识与指定接口绑定。

结合第一方面,在第三种可能的实现方式中,创建至少包括vpn索引的套接字地址结构,包括:

获取已记录在redis客户端的vpn索引;

创建套接字地址结构,并将已获取的vpn索引添加至套接字地址结构的指定位置。

结合第一方面,在第四种可能的实现方式中,依据套接字地址结构中的vpn索引在redis客户端与指定redis服务端之间建立归属于vpn的tcp连接,包括:

通过已绑定所述vpn标识的所述指定接口,与所述指定redis服务端进行用于tcp连接的交互,以在所述redis客户端的所述指定接口与所述指定redis服务端之间建立tcp连接,所述tcp连接归属于所述vpn标识对应的vpn。

第二方面,本申请提供了一种连接建立装置,该装置应用于redis客户端,包括:

套接字模块,用于创建至少包括vpn索引的套接字地址结构,套接字地址结构与已创建的套接字对应,套接字与redis客户端和指定redis服务端之间待建立的tcp连接关联,vpn索引为redis客户端上指定接口绑定的vpn标识的索引,指定接口为redis客户端上连接指定redis服务端的接口;

tcp连接模块,用于依据套接字地址结构中的vpn索引在redis客户端与指定redis服务端之间建立归属于vpn标识对应的vpn的tcp连接。

结合第一方面,在第一种可能的实现方式中,该装置进一步包括:

vpn模块,用于在套接字模块创建套接字地址结构之前,接收配置指令,配置指令用于指示为指定接口绑定vpn标识,配置指令携带待与指定接口绑定的vpn标识;

检查配置指令携带的vpn标识是否与redis客户端上除指定接口之外的其它接口绑定的vpn标识相同;

如果否,将配置指令携带的vpn标识与指定接口绑定;

如果是,依据其它接口连接的对端设备的ip地址、以及指定接口连接的指定redis服务端的ip地址,判断是否将配置指令携带的vpn标识与指定接口绑定。

结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,vpn模块依据其它接口连接的对端设备的ip地址、以及指定接口连接的指定redis服务端的ip地址,判断是否将配置指令携带的vpn标识与指定接口绑定,包括:

比较其它接口连接的对端设备的ip地址和指定接口连接的指定redis服务端的ip地址;

如果相同,则禁止将配置指令携带的vpn标识与指定接口绑定并返回绑定失败消息;

如果不同,则将配置指令携带的vpn标识与指定接口绑定。

结合第二方面,在第三种可能的实现方式中,套接字模块创建至少包括vpn索引的套接字地址结构,包括:

获取已记录在redis客户端的vpn索引;

创建套接字地址结构,并将已获取的vpn索引添加至套接字地址结构的指定位置。

结合第二方面,在第四种可能的实现方式中,tcp连接模块依据套接字地址结构中的vpn索引在redis客户端与指定redis服务端之间建立归属于vpn的tcp连接,包括:

通过已绑定所述vpn标识的所述指定接口,与所述指定redis服务端进行用于tcp连接的交互,以在所述redis客户端的所述指定接口与所述指定redis服务端之间建立tcp连接,所述tcp连接归属于所述vpn标识对应的vpn。

第三方面,本申请提供了一种电子设备,包括:机器可读存储介质和处理器,机器可读存储介质:存储指令代码,处理器:与机器可读存储介质通信,读取和执行机器可读存储介质中的指令代码,实现上述连接建立方法。

第四方面,本申请提供了一种机器可读存储介质,机器可读存储介质上存储有若干计算机指令,计算机指令被执行时执行上述的连接建立方法。

由以上技术方案可以看出,本申请中,通过将redis客户端上连接指定redis服务端的指定接口绑定vpn标识,利用绑定vpn标识的指定接口与指定redis服务端建立tcp连接,进而利用vpn区分具体相同ip地址的不同redis服务端。因此,实现了在同一redis客户端同时连接至少两个不同redis服务端(ip地址相同)的场景下,只要redis客户端上连接这些不同redis服务端的端口绑定的vpn标识不同,redis客户端便能通过vpn标识区分各不同redis服务端,成功与ip地址相同的各不同redis服务端建立tcp连接。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本公开的实施例,并与说明书一起用于解释本公开的原理。

图1为redis客户端与redis服务端组网应用图;

图2为本申请实施例提供的方法流程图;

图3为本申请实施例提供的vpn索引与指定接口绑定流程图;

图4为本申请实施例提供的应用示意图;

图5为本申请实施例提供的装置结构示意图;

图6为本申请实施例提供的图5所示装置的硬件结构示意图。

具体实施方式

目前,通过公有vpn,redis客户端与redis服务端之间建立tcp连接。这种tcp连接建立方式,限制了图1所示的redis服务端1020、redis服务端1021具有相同ip地址前提下,redis客户端1011因为无法区分redis服务端1020、redis服务端1021而不能成功与redis服务端1020、redis服务端1021建立tcp连接。

为了解决上述问题,实现在同一redis客户端同时连接至少两个ip地址相同的不同redis服务端的前提下,该redis客户端也能成功与ip地址相同的各不同redis服务端建立tcp连接,本申请实施例提供了图2所示的流程:

参见图2,图2为本申请实施例提供的方法流程图。该流程应用于redis客户端。

如图2所示,该流程包括以下步骤:

步骤201,创建至少包括vpn索引的套接字地址结构。

作为一个实施例,在建立redis客户端与指定redis服务端(任一一个redis服务端)之间的tcp连接时,redis客户端会先调用socket函数创建套接字。套接字是基于接口和ip地址的,这里的接口是指redis客户端上与指定redis服务端建立tcp连接的接口(记为指定接口),ip地址为指定redis服务端的ip地址。

在创建套接字成功后,socket函数会返回一个套接字描述符。这里的套接字描述符用于唯一描述上述创建的套接字。

同时,redis客户端还会创建一个套接字地址结构。这里的套接字地址结构与上述创建的套接字有关联(称之为对应)。在本申请实施例中,redis客户端创建套接字地址结构的方式类似现有套接字地址结构的创建方式,但最终创建出的套接字地址结构包含的内容相比现有的套接字地址结构发生了改变。

在一个例子中,上述改变是指:在创建出的套接字地址结构中额外增加了vpn索引。此时,本申请实施例中,redis客户端创建出的套接字地址结构仍继承现有套接字地址结构的要求(具体应包含的参数)。

在另一个例子中,上述改变是指:在创建出的套接字地址结构中至少包括vpn索引。此时,本申请实施例中创建出的套接字地址结构可不继承或者部分继承现有套接字地址结构的要求(应包含的参数),本申请实施例并不具体限定。

作为一个实施例,上述vpn索引为上述指定接口绑定的vpn标识的索引。在一个例子中,上述vpn索引是在创建套接字地址结构之前以代码形式记录在redis客户端。基于此,步骤201中创建至少包括vpn索引的套接字地址结构包括:

获取已记录在redis客户端的vpn索引;

创建套接字地址结构,并将已获取的vpn索引添加至套接字地址结构的指定位置。这里,指定位置可为套接字地址结构中最后空闲位置。最终实现了如何创建至少包括vpn索引的套接字地址结构。

步骤202,依据套接字地址结构中的vpn索引在redis客户端与指定redis服务端之间建立归属于上述vpn标识对应的vpn的tcp连接。

在一个例子中,vpn标识与上述vpn索引对应。

在一个例子中,步骤202可通过以下步骤a实现:

步骤a,通过已绑定上述vpn标识的所述指定接口,与指定redis服务端进行用于tcp连接的交互,以在redis客户端的指定接口与指定redis服务端之间建立tcp连接,tcp连接归属于vpn标识对应的vpn。

作为一个实施例,上述与指定redis服务端进行用于tcp连接的交互比如为tcp的三次握手等。

至此,完成图2所示流程。

通过图2所示流程可以看出,在本申请实施例中,通过将redis客户端上连接指定redis服务端的指定接口绑定vpn标识,利用绑定vpn标识的指定接口与指定redis服务端建立tcp连接,进而利用vpn区分具体相同ip地址的不同redis服务端。因此,实现了在同一redis客户端同时连接至少两个不同redis服务端(ip地址相同)的场景下,只要redis客户端上连接这些不同redis服务端的端口绑定的vpn标识不同,redis客户端便能通过vpn标识区分各不同redis服务端,成功与ip地址相同的各不同redis服务端建立tcp连接。

可选地,在一个实施例中,在图2所示流程前,redis客户端可创建vpn标识,并将vpn标识与指定接口绑定。

作为一个实施例,redis客户端将vpn标识与指定接口绑定可通过图3所示流程实现。如图3所示,该流程可包括:

步骤301,redis客户端接收配置指令,配置指令用于指示为指定接口绑定vpn标识,配置指令携带待与指定接口绑定的vpn标识。

当为指定接口绑定vpn标识时,会根据实际需求先确定哪一个vpn标识需与指定接口绑定。一旦确定vpn标识,则会将确定出的vpn标识携带在配置指令发送给redis客户端。

步骤302,redis客户端检查配置指令携带的vpn标识是否与redis客户端上除指定接口之外的其它接口绑定的vpn标识相同,如果否,将vpn标识对应的vpn与指定接口绑定;如果是,依据其它接口连接的对端设备的ip地址、以及指定接口连接的指定redis服务端的ip地址判断是否将配置指令携带的vpn标识与指定接口绑定。

作为一个实施例,本步骤302中依据其它接口连接的对端设备的ip地址、以及指定接口连接的指定redis服务端的ip地址判断是否将配置指令携带的vpn标识与指定接口绑定可包括:

比较其它接口连接的对端设备的ip地址和指定接口连接的指定redis服务端的ip地址;

如果相同,则禁止将配置指令携带的vpn标识与指定接口绑定并返回绑定失败消息;这里,作为一个实施例,绑定失败消息可用于指示重新下发配置指令以重新为指定接口绑定vpn标识。

如果不同,则将配置指令携带的vpn标识与指定接口绑定。

通过上述步骤最终实现了在同一redis客户端同时连接至少两个不同redis服务端(ip地址相同)的前提下,通过redis客户端上连接这些不同redis服务端的端口绑定的vpn标识不同区分各个不同redis服务端,以保证redis客户端成功与ip地址相同的各不同redis服务端建立tcp连接。

需要说明的是,在本申请实施例中,当为指定接口绑定vpn标识时,redis客户端可进一步生成对应得vpn索引。这里生成的vpn索引可依赖于接收到的配置命令的次序来设置,比如,当前接收的配置命令的次序是10,则vpn索引为10。

至此,完成图3所示流程。

通过图3所示流程,最终实现了如何为指定接口绑定vpn标识。

基于图2、图3所示流程,下面通过一个具体实施例进行描述:

参见图4,图4为本实施例提供的应用示意图。如图4所示,redis客户端401通过接口eth12与redis服务端402,以及通过接口eth13与redis服务端403连接。在图4中,redis服务端402与redis服务端403的ip地址相同,均为192.168.5.12。redis客户端401的ip地址为192.168.5.11。

在图4中,基于图3所示流程,则最终,redis客户端401的接口eth12与vpn41绑定,redis客户端401的接口eth13与vpn42绑定。

在图4中,因为redis客户端401的接口eth12与vpn41绑定,这意味着redis客户端401的接口eth12连接的redis服务端402是基于vpn41的,因此,在redis客户端401与redis服务端402建立tcp连接时可基于vpn41建立。基于图2所示流程,则redis客户端401最终会与redis服务端402之间建立处于vpn41的tcp连接。

同样,因为redis客户端401的接口eth13与vpn42绑定,这意味着redis客户端401的接口eth13连接的redis服务端403是基于vpn42的,因此,在redis客户端401与redis服务端403建立tcp连接时可基于vpn42建立。基于图2所示流程,则redis客户端401最终会与redis服务端403之间建立处于vpn42的tcp连接。

最终实现了即使redis服务端402、redis服务端403具有相同的ip地址,但redis客户端401通过vpn41、vpn42区分redis服务端402、redis服务端403,可以和redis服务端402、redis服务端403分别建立属于不同vpn的tcp连接。

至此,完成图4所示实施例的描述。

以上对本申请提供的方法进行了描述。下面对本申请提供的装置进行描述:

参见图5,图5为本实施例提供的装置结构图。如图5所示,该装置可包括:

套接字模块,用于创建至少包括vpn索引的套接字地址结构,套接字地址结构与已创建的套接字对应,套接字与redis客户端和指定redis服务端之间待建立的tcp连接关联,vpn索引为redis客户端上指定接口绑定的vpn标识的索引,指定接口为redis客户端上连接指定redis服务端的接口;

tcp连接模块,用于依据套接字地址结构中的vpn索引在redis客户端与指定redis服务端之间建立归属于vpn标识对应的vpn的tcp连接。

在一个例子中,如图5所示,该装置进一步包括:

vpn模块,用于在套接字模块创建套接字地址结构之前,接收配置指令,配置指令用于指示为指定接口绑定vpn标识,配置指令携带待与指定接口绑定的vpn标识;

检查配置指令携带的vpn标识是否与redis客户端上除指定接口之外的其它接口绑定的vpn标识相同;

如果否,将配置指令携带的vpn标识与指定接口绑定;

如果是,依据其它接口连接的对端设备的ip地址、以及指定接口连接的指定redis服务端的ip地址,判断是否将配置指令携带的vpn标识与指定接口绑定。

作为一个实施例,vpn模块依据其它接口连接的对端设备的ip地址、以及指定接口连接的指定redis服务端的ip地址,判断是否将配置指令携带的vpn标识与指定接口绑定,包括:

比较其它接口连接的对端设备的ip地址和指定接口连接的指定redis服务端的ip地址;

如果相同,则禁止将配置指令携带的vpn标识与指定接口绑定并返回绑定失败消息;

如果不同,则将配置指令携带的vpn标识与指定接口绑定。

作为一个实施例,套接字模块创建至少包括vpn索引的套接字地址结构,包括:

获取已记录在redis客户端的vpn索引;

创建套接字地址结构,并将已获取的vpn索引添加至套接字地址结构的指定位置。

作为一个实施例,tcp连接模块依据套接字地址结构中的vpn索引在redis客户端与指定redis服务端之间建立归属于vpn标识对应的vpn的tcp连接,包括:

通过已绑定所述vpn标识的所述指定接口,与所述指定redis服务端进行用于tcp连接的交互,以在所述redis客户端的所述指定接口与所述指定redis服务端之间建立tcp连接,所述tcp连接归属于所述vpn标识对应的vpn。

至此,完成图5所示装置的结构描述。

对应地,本申请还提供图5所示装置的硬件结构图。如图6所示,该硬件结构可以包括:机器可读存储介质和处理器,其中:

机器可读存储介质:存储指令代码。

处理器:与机器可读存储介质通信,读取和执行机器可读存储介质中的指令代码,实现本实施例公开的tcp连接建立方法。

至此,完成图6所示装置的硬件结构图。

以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

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