路由访问方法、路由访问系统及用户终端
技术领域
本发明涉及移动互联网领域,尤其涉及一种路由访问方法、路由访问系统及用户终端。
背景技术
传统的非关系型的数据库(NoSQL)数据库在多节点集群模式下,访问路由信息由独立的路由节点管理。用户终端对该数据库中的任意数据节点进行访问时,都需要先访问独立的路由节点,该独立的理由节点会根据用户终端访问的数据信息查找对应的数据节点,并将用户终端的数据请求信息转发给对应的数据节点,数据节点接收到上述数据请求消息后,会进行相应的处理,并先将处理结果反馈给独立的路由节点,再由独立的路由节点将反馈结果返回给用户终端。
由于现有的路由访问系统中,所有的数据访问操作都需要先经过独立节点然后再到达数据节点才能完成,也就是需要经过两次跳转才能完成,所以会影响数据访问的性能,增加网络延迟。
发明内容
本发明提供了一种路由访问方法、路由访问系统及用户终端,在用户终端进行路由访问时,仅需要一跳操作就能完成,提升了数据访问性能,减少了网络延迟。
本发明实施例一方面提供了一种路由访问方法,包括:
用户终端接收并保存管理节点发送的路由配置表,所述路由配置表中包含数据节点的标识与所述哈希值的对应关系;
所述用户终端根据所述路由配置表查找对应的数据节点标识,并向所述数据节点标识对应的数据节点执行数据的读写操作。
优选的,所述路由配置表由所述管理节点设置。
优选的,所述配置表中包含数据节点的标识与所述数据标识的哈希值的对应关系,包括:
所述管理节点将所述哈希值分为多个数据块,每个数据块对应于一个哈希值的取值区间;
建立所述数据块与所述数据节点标识的映射关系。
优选的,所述建立所述数据块与所述数据节点标识的映射关系,包括:
根据所述数据节点的权重及负载情况,为所述数据节点分配对应的数据块信息。
优选的,所述数据节点的标识包括数据节点的编号、IP地址、端口号和名称中的至少一个;所述数据标识是数据的关键字。
优选的,所述方法还包括:
所述用户终端将所述获取的路由配置表保存在所述驱动内存中。
优选的,所述方法还包括:
当所述用户终端向所述确定的数据节点执行数据读写操作失败时,重新从所述管理节点上获取更新后的路由配置表;
所述用户终端将获取的更新后的路由配置表保存在内存中,并根据所述更新后的路由配置表查找对应的数据节点标识。
优选的,所述方法还包括:
所述用户终端提取进行数据读写操作的数据标识;
根据所述数据标识获取对应的哈希值,并根据所述哈希值在所属路由配置表中查找对应的数据节点信息。
优选的,所述根据所述数据标识获取对应的哈希值,包括:
根据所述数据标识查找对应的哈希值;或者
将所述数据标识直接进行哈希运算,计算出对应的哈希值。
本发明实施例还提供了一种路由访问系统,包括:管理节点和至少两个数据节点,其中:
所述管理节点,用于配置路由配置表,并将所述路由配置表发送给用户终端,所述路由配置表上包含数据节点的标识与所述数据标识的哈希值的对应关系;
所述数据节点,用于和管理节点连接,并根据所述用户终端的请求完成数据的读写操作。
优选的,所述路由配置表上包含数据节点的标识与所述数据标识的哈希值的对应关系,包括:
将哈希值分为多个数据块,每个数据块对应于一个哈希值的取值区间;
建立数据块与所述数据节点标识的映射关系。
优选的,所述建立所述数据块与所述数据节点标识的映射关系,包括:
根据所述数据节点的权重及负载情况,为所述数据节点分配对应的数据块信息。
优选的,所述数据节点的标识包括数据节点的编号、IP地址、端口号和名称中的至少一个;所述数据标识是数据的关键字。
优选的,所述管理节点,还用于获取所述数据节点的标识信息。
本发明实施例还提供了一种用户终端,包括:
收发单元,用于向管理节点请求路由配置信息表,并接收所述管理节点发送的路由配置表;
存储单元,用于将所述收发单元获取到的路由配置表保存在所述内存中;
数据读写单元,用于根据所述路由配置表查找对应的数据节点标识,并向所述数据节点标识对应的数据节点发起数据读写操作。
优选的,所述收发单元,还用于在所述数据读写单元无法完成数据读写操作时,再次向所述管理节点请求路由配置表,并接收所述管理节点发送的更新后的路由配置表;
所述存储单元,还用于保存所述收发单元获取到的更新后的路由配置表;
所述读写单元,还用于根据更新后的路由配置表确定对应的数据节点。
优选的,所述数据读写单元,还用于根据所述用户终端进行数据读写的数据标识获取对应的哈希值,并根据所述哈希值在所属路由配置表中查找对应的数据节点标识。
优选的,所述用户终端还包括运算单元,用于将所述用户终端的数据标识进行哈希运算后得出哈希值。
本发明实施例所提供的路由访问方法、路由访问系统及用户终端,具有以下有益效果:
在多节点集群模式下,将路由访问信息保存在用户终端上,数据节点的路由选择直接在用户终端本地就能完成,查找到对应的数据节点后,直接将访问请求发送给数据节点,不需要在经过管理节点,这样不需要二次跳转,可以提升访问性能。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例或现有技术描述汇总所需要使用的附图作简单介绍,显而易见地,下面描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例所提供的路由访问系统的拓扑图;
图2是本发明实施例中管理节点设置路由配置表的流程图;
图3是本发明实施例中用户终端进行数据访问的第一流程图;
图4是本发明实施例中用户终端进行数据访问的第二流程图;
图5是本发明实施例中用户终端的第一结构示意图;
图6是本发明实施例中用户终端的第二结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
如图1所示,本发明实施例提供了一种路由访问系统,也可以看做是一种无跳转访问的网络拓扑结构,该路由访问系统中包括一个管理节点及至少两个数据节点,其中:
管理节点,与至少两个数据节点连接,并设置路由配置表,所述路由配置表中包含数据节点的标识与所述数据标识的哈希值的对应关系,当用户终端向管理节点请求该路由配置表时,将该路由配置表发送给用户终端;
数据节点,和管理节点连接,接收用户终端的发送的数据读写信息,完成用户终端的数据读写操作。
其中,所述管理节点还用于对失效节点进行处置,充当元数据服务器,管理和维护路由表等信息,获取数据节点的标识,所述数据节点的标识包括数据节点的编号、IP地址、端口号和名称中的至少一个。
在本发明另外一个实施例中,管理节点还承担对用户终端接入路由访问系统前的认证工作。
在本发明实施例中,管理节点与其管理的数据节点可以称为一个集群,在该集群中,一个管理节点可以与N个数据节点连接,N为自然数。
在本发明实施例中,所述管理节点可以是一个服务器,或者其他存储设备,所述数据节点也可以是服务器、PC机或者其他存储设备。
实施例二
在本发明实施例中,管理节点设置路由配置表的方法可以如图2所示,具体包括:
201、管理节点将0~232哈希值数值区间分为若干个数据块(Chunk),每个数据块的范围可以是相同的,如包含65535个数据,也可以是不同的。
需要说明的是:数据信息的关键字(Key)值经过哈希运算后均可以被哈希成0~232之间的数值。
202、管理节点根据数据节点的硬件信息、负载、状态等为数据节点分配权重,如表1所示,表1也可以叫做集群配置表。在表1中,第一数据节点Cluster 1和第二数据节点Cluster 2的权重是相同的,均为1,则管理节点可以为第一数据节点和第二数据节点分配相同数量的数据块。
其中,表1中的ID表示表1中相应记录的编号。数据节点的状态主要包括开启和关闭两种状态,当数据节点处于开启状态时,可以执行数据的读写操作,当数据节点处于关闭状态时,则无法进行数据的读写操作。
表1
| Id |
Name |
Weight |
Status |
| 0 |
Cluster1 |
1 |
On |
| 1 |
Cluster2 |
1 |
On |
| … |
… |
… |
… |
203、管理节点为每个数据节点分配对应的chunk,如表2所示,具体分配时可以参照数据节点的权重、状态等信息。这样每个数据节点都有对应的哈希值范围,如每个数据块(Chunk)都有对应的哈希值的起始范围(Start_Range和End_Range)。
表2
| Id |
Cluster_id |
Start_range |
End_range |
Status |
| 0 |
0 |
0 |
65535 |
On |
| 1 |
1 |
65536 |
131071 |
On |
| 2 |
0 |
131072 |
196607 |
On |
| 3 |
1 |
196608 |
262143 |
On |
| ... |
… |
… |
… |
… |
| … |
… |
… |
… |
… |
表2也可以叫做路由信息表,在表2中,哈希值范围是0~65535的Chunk对应的数据节点的编号(Cluster_id)是0,哈希值范围是131072~196607的Chunk对应的数据节点的编号(Cluster_id)也是0,即上述两个哈希值范围所对应的数据信息的读写操作都在编号为0的数据节点上。
204、管理节点获取该集群内与其连接的所有数据节点的标识信息,具体如数据节点的IP地址、端口号、名称等,并构建节点信息表。
表3
| Id |
Cluster_id |
Name |
IP |
Port |
Status |
| 0 |
0 |
Node1 |
192.168.1.1 |
7778 |
On |
| 1 |
1 |
Node2 |
192.168.1.3 |
7778 |
On |
表3也可以叫做节点信息表,如表3所示,具体可以包括数据节点ID、节数据点名称、对应集群号、数据节点的端口号、数据节点的IP地址、数据节点的状态等参数的对应关系。
205、管理节点将上述集群配置表、路由信息表及节点信息表发送给用户终端,同时管理节点也保存上述的集群配置表、路由信息表及节点信息表。
在本实施例另外一个优选的方案中,管理节点将集群配置表、路由信息表及节点信息表进行合并,合并成完整一份完整的表单,可以叫做路由配置表。
实施例三:
在本发明另外一个实施例中,该路由访问系统中还可以包括用户终端,用户终端可以在所述数据节点上执行数据的读写操作,如图3所示,具体的:
301、用户终端首次进行路由访问时,可以先向管理节点获取路由配置表,并将该路由配置表保存在驱动程序中;
具体的,用户终端向管理节点发送请求消息,请求消息中携带用户终端需要进行数据读写操作的标识;管理节点收到请求消息后,将配置的路由配置表发送给用户终端,用户终端收到后并保存在所述内存中,具体的,可以保存在驱动内存中。
需要说明的是:用户终端在首次进行路由访问时,还可以到管理节点进行验证操作,如在管理节点上根据用户终端的标识等信息验证该用户是不是合法授权的用户,是否具备相应的访问权限等。
302、用户终端会根据获取的路由配置表查询对应的数据节点,并直接向数据节点进行数据的读写操作;
具体的,对于同一类业务,其数据标识Key值是相同的,如对于浏览网页类业务具有相同的key值,如在线视频业务,也具备相同的Key值等。
用户终端提取待访问数据的数据标识,并对该数据标识进行哈希运算,得到该数据标识的哈希值,并根据该数据标识的哈希值从该路由配置表中查询对应的数据节点信息,并向确定的数据节点进行数据读取操作。
需要说明的是,对提取的Key值进行哈希运算后,其哈希值都会落在0~232的数值区间内。
303、用户终端第二次进行数据访问时,先根据保存在驱动内存中的路由配置表查找数据节点信息,并向对应的数据节点进行读写操作;
用户终端完成首次读写操作后,再次进行数据读写操作时,会先从驱动内存中查找路由配置表,获取相应的数据节点信息,并向该数据节点发起数据的读写操作。
304、如果无法进行数据读写操作,则意味着路由配置表中的数据节点配置发生了变化,则用户终端会再次向管理节点获取路由配置表,并根据新的路由配置表确定对应的数据节点信息,并向该数据节点进行读写操作。
实施例四:
如图4所示,本发明实施例提供了一种路由访问方法,以用户终端首次访问该路由系统,所要访问的数据标识的哈希值为132220为例进行说明,对路由表的配置参照表1、表2和表3的配置,其中:
401、用户终端向管理节点发送请求消息,请求获取管理节点上保存的路由配置表;
路由配置表事先配置在所述管理节点上,其可以以集群配置表、路由信息表及节点信息表等形式独立存在,具体如表1、表2、表3所示,其也可以被设置在一张完整的表上,保存了集群配置表、路由信息表及节点信息表中的所有配置信息。
402、管理节点收到请求消息后,将保存的路由配置表发送给用户终端;
403、用户终端接收到该路由配置表后,将该路由配置表保存在驱动内存中,并根据所要访问数据的数据标识的哈希值来确定所对应的数据节点,具体的:该数据标识的哈希值是132220,这样在表2中查找到该哈希值对应的数据节点的标识是0,然后在表3中进行查找,对应的数据节点的名称是Node 2,IP地址是192.168.1.3,端口号(port)是7778;
404、用户终端根据确定的数据节点的名称、IP地址、端口号构造数据请求消息,并将数据请求信息发送给该Node 2;
405、接收从Node 2返回的数据信息。
实施例五:
如图5所示,本发明实施例提供了一种用户终端,包括:
收发单元501,用于向管理节点请求路由配置信息表,并接收所述管理节点发送的路由配置表;
存储单元503,用于将所述收发单元获取到的路由配置表保存在所述内存中;
数据读写单元505,用于根据所述路由配置表查找对应的数据节点标识,并向所述数据节点标识对应的数据节点发起数据读写操作。
在本发明另外一个实施例中,所述收发单元501,还用于在所述数据读写单元无法完成数据读写操作时,再次向所述管理节点请求路由配置表,并接收所述管理节点发送的更新后的路由配置表;
所述存储单元503,还用于保存所述收发单元获取到的更新后的路由配置表;
所述读写单元505,还用于更具更新后的路由配置表确定对应的数据节点。
在本发明另外一个实施例中,所述数据读写单元505,还用于根据所述用户终端进行数据读写的数据标识获取对应的哈希值,并根据所述哈希值在所属路由配置表中查找对应的数据节点标识。
在本发明另外一个实施例中,所述用户终端还包括运算单元,用于将数据标识进行哈希运算后得出哈希值。
实施例六
参照附图6,本发明实施例还提供了一种用户终端,所述用户终端包括存储器601和处理器603,所述存储器601用于存储代码,所述代码包括:接收并保存管理节点发送的路由配置表,所述路由配置表中包含数据节点的标识与所述哈希值的对应关系;根据所述路由配置表查找对应的数据节点标识,并向所述数据节点标识对应的数据节点执行数据的读写操作;
所述处理器603用于执行所述存储器601中存储的代码。
在本发明另外一个实施例中,所述路由配置表由所述管理节点构造。
在本发明另外一个实施例中,所述配置表中包含数据节点的标识与所述数据标识的哈希值的对应关系,包括:
所述管理节点将所述哈希值分为多个数据块,每个数据块对应于一个哈希值的取值区间;
建立所述数据块与所述数据节点标识的映射关系。
在本发明另外一个实施例中,所述建立所述数据块与所述数据节点标识的映射关系,包括:
根据所述数据节点的权重及负载情况,为所述数据节点分配对应的数据块信息。
在本发明另外一个实施例中,所述数据节点的标识包括数据节点的编号、IP地址、端口号和名称中的至少一个;所述数据标识是数据的Key。
在本发明另外一个实施例中,所述代码还包括:
所述用户终端将所述获取的路由配置表保存在所述驱动内存中。
在本发明另外一个实施例中,所述代码还包括:
当所述用户终端向所述确定的数据节点执行数据读写操作失败时,重新从所述管理节点上获取更新后的路由配置表;
所述用户终端将获取的更新后的路由配置表保存在内存中,并根据所述更新后的路由配置表查找对应的数据节点标识。
在本发明另外一个实施例中,所述代码还包括:所述用户终端提取进行数据读写操作的数据标识;
根据所述数据标识获取对应的哈希值,并根据所述哈希值在所属路由配置表中查找对应的数据节点信息。
在本发明另外一个实施例中,所述根据所述数据标识获取对应的哈希值,包括:
根据所述数据标识查找对应的哈希值;或者
将所述数据标识直接进行哈希运算,计算出对应的哈希值。
应该理解,本发明的各种实施例中,上述各过程中序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
另外,本文中术语“系统”和“网络”在本文中常被可互换使用。本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
所属领域的技术人员可以清楚了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其他的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,仅仅是一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或者组件可以结合或者可以继承到一个系统,或者一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或者直接耦合或者通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其他的形式连接。
所述作为分离部件说明的单元可以是或者可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在个单元中。上述集成的单元即可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本发明可以用硬件实现,或者软件实现,或它们的组合方式来实现。当使用软件实现时,可以见上述功能存储在计算机可读介质中或作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是计算机能够存取的任何介质。以此为例但不限于:计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。此外,任何连接可以适当的成为计算机可读介质,例如,如果软件是使用同轴电缆、光纤光缆、双绞线、数字用户线(SDL)或者诸如红外线、无线电和微波之类的无线技术包括在所属介质的定影中。如本发明所使用的盘(Disk)和碟(Disc)包括压缩光碟(CD)、激光碟、光碟、数字通用光碟(DVD)、软盘和蓝光光碟,其中盘通常磁性的复制数据,而碟则用激光来光学的复制数据。上面的组合也应当包括在计算机可读介质的保护范围之内。
总之,以上所述仅为本发明技术方案的较佳实施例而已,并非用于限定本范明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。