CN101344882A - 数据查询方法、插入方法及删除方法 - Google Patents
数据查询方法、插入方法及删除方法 Download PDFInfo
- Publication number
- CN101344882A CN101344882A CNA2007101186008A CN200710118600A CN101344882A CN 101344882 A CN101344882 A CN 101344882A CN A2007101186008 A CNA2007101186008 A CN A2007101186008A CN 200710118600 A CN200710118600 A CN 200710118600A CN 101344882 A CN101344882 A CN 101344882A
- Authority
- CN
- China
- Prior art keywords
- node
- guid
- index
- terminal
- ownership
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W8/00—Network data management
- H04W8/26—Network addressing or numbering for mobility support
Landscapes
- Engineering & Computer Science (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- User Interface Of Digital Computer (AREA)
Abstract
本发明涉及一种数据查询方法,包括:业务节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点,从所述归属索引节点中获取该终端的归属数据节点的地址信息;业务节点根据所述归属数据节点的地址信息计算所述归属数据节点的GUID,根据所述归属数据节点的GUID及索引节点的GUID确定所述归属数据节点的归属心跳节点;业务节点通过所述归属心跳节点获得所述归属数据节点的状态信息,向状态信息为活动的归属数据节点发送数据查询请求。本发明还涉及一种终端数据插入方法。本发明另涉及一种终端数据删除方法。本发明可以实现对数据进行快速地查询、插入以及删除。
Description
技术领域
本发明涉及一种数据查询方法、插入方法以及删除方法,尤其是涉及一种基于分布式终端数据管理架构的终端数据查询方法、插入方法以及删除方法。
背景技术
传统的终端数据管理采用集中式架构,该架构的可扩展性较差,不利于硬件(容量)及功能(应用)的扩展;现有终端数据管理采用分布式架构,该架构分为三层,前端(Front End,以下简称FE),后端(Back End,以下简称BE),索引层(Index Server,以下简称IS)。相对于集中式架构,其性能已经有了较大的提高。
前端:为业务节点,负责具体的业务逻辑,业务节点的数量可以依据业务处理能力的需求而定。
后端:为数据节点,用于存储终端数据。每个数据节点由主、备两个服务器(Master/Slave sever),后端的终端数据容量可以通过增加数据节点数目进行增加。
索引:
索引与前端的接口:由于终端数据存储在多个数据节点上,那么当前端业务节点需要取特定终端的数据时,必须要知道该终端数据存储在哪个数据节点上,索引层根据终端标识能够查找到该终端的归属数据节点。
索引与后端的接口:当后端的终端数据发生变化,例如插入或删除终端数据,后端数据节点需要通知索引层使得索引层保持最新的索引信息。
索引层存在两种模式,一种为集中索引模式,另一种为半分布式索引模式。集中索引模式,如图1,前端和后端之间存在唯一的索引节点,该节点中存有后端所有终端的索引数据,而前端的所有终端查询请求都由该索引节点承担。半分布式索引模式又存在两种模式,一种为索引数据查询负荷分布化,另一种为索引数据存储分布化。索引数据查询负荷分布化,如图2,每个前端都内置一个索引节点,每一索引节点中存有所有用户的索引数据,而该索引节点只承担起所在前端的查询请求,该方法存在以下缺陷,每个索引节点需要保存后端的所有用户的索引数据,因此索引节点容易产生存储瓶颈。索引数据存储分布化,如图3,索引数据分布地存在若干个索引节点上,但是每个索引节点都要承担前端的所有用户查询请求,也就是说,前端通过广播的方式将查询请求发给所有的索引节点,拥有查询请求指定的用户索引信息的索引节点会给出响应,其他的则不用给出响应,该方法存在以下缺陷:由于前端访问索引节点是广播式的,因此每一个索引节点都需要接受前端的访问,因此使得索引节点的索引数据查询负荷增加。
发明内容
本发明的一方面是提供一种终端数据查询方法,通过引入归属索引节点,使得索引数据分布地存储在若干个索引节点上,实现索引数据存储分布化;终端在进行数据查询时,通过访问该终端的归属索引节点获得终端的归属数据节点信息,从而实现索引数据查询负荷分布化;再通过引入归属心跳节点,使得业务节点/数据节点可以动态地获得整个索引环链信息,可以加快归属索引节点的定位,同时索引节点可以动态地获得与其建立心跳连接的节点的状态信息,使得查询总是发向活着的数据节点,从而提高数据查询的速度。
本发明的另一方面是提供一种终端数据插入方法,当向数据节点中插入终端数据时,通过引入归属索引节点,找到终端的归属索引节点,将包含有终端的全球唯一性标识(Global Unique ID,简称GUID)及该数据节点的地址信息的索引数据存储到该索引节点,使得索引数据分布地存储在若干个索引节点上,实现索引数据存储分布化。
本发明的又一方面是提供一种终端数据删除方法,当从数据节点中删除终端数据时,通过引入归属索引节点,找到终端的归属索引节点,将包含有终端的GUID及该数据节点的地址信息的索引数据从该索引节点中删除,以实现快速地删除终端数据及索引数据。
为实现本发明的第一目的,本发明的实施例提供了一种数据查询方法,其中包括:业务节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点,从所述归属索引节点中获取该终端的归属数据节点的地址信息;业务节点根据所述归属数据节点的地址信息计算所述归属数据节点的GUID,根据所述归属数据节点的GUID及索引节点的GUID确定所述归属数据节点的归属心跳节点;业务节点通过所述归属心跳节点获得所述归属数据节点的状态信息,向状态信息为活动的归属数据节点发送数据查询请求。
在上述数据查询方法的实施例中,通过引入归属索引节点,由于索引数据分布地存储在若干个索引节点上,终端找到其对应的归属索引节点,即可获得与终端相关的索引数据,然后从索引数据中获取该终端的归属数据节点的地址信息,实现了索引数据存储分布化;终端在进行数据查询时,通过访问该终端的归属索引节点获得终端的归属数据节点信息,从而实现索引数据查询负荷分布化;再通过引入归属心跳节点,使得业务节点/数据节点可以动态地获得整个索引环链信息,可以加快归属索引节点的定位,同时索引节点可以动态地获得与其建立心跳连接的节点的状态信息,使得查询总是发向活着的数据节点,从而提高数据查询的速度。索引数据存储分布化及索引数据查询负荷分布化的机制,提高了终端数据的管理性能。
为实现本发明的第二目的,本发明的实施例提供了一种终端数据插入方法,其中包括:向数据节点中插入终端数据;该数据节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点;将该终端的GUID及该数据节点的地址信息存储到该归属索引节点。
上述终端数据插入方法的实施例中,通过引入归属索引节点,找到终端的归属索引节点,将包含有终端的GUID及该数据节点的地址信息的索引数据存储到该索引节点,使得索引数据分布地存储在若干个索引节点上,实现索引数据存储分布化。
为实现本发明的第三目的,本发明的实施例提供了一种终端数据删除方法,其中包括:从数据节点中删除终端数据;该数据节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点;将该终端的GUID及该数据节点的地址信息从该归属索引节点中删除。
上述终端数据删除方法的实施例中,通过引入归属索引节点,找到终端的归属索引节点,将包含有终端的GUID及该数据节点的地址信息的索引数据从该索引节点中删除,以实现快速地删除终端数据及索引数据。
附图说明
图1为现有技术一的结构示意图;
图2为现有技术二的结构示意图;
图3为现有技术三的结构示意图;
图4为本发明终端数据插入方法实施例的流程图;
图5为本发明终端数据删除方法实施例的流程图;
图6为本发明数据查询方法实施例的流程图。
具体实施方式
全球唯一性标识(Global Unique ID,简称GUID)由于其唯一标识性,应用非常广泛,可用于注册表、数据库、节点标识、终端等,本发明的实施例中的各节点的GUID通过哈希算法运算各节点的IP地址得到,终端的GUID通过哈希算法运算终端的标识得到。
本发明的实施例中存在如下物理或逻辑单元。
分布式哈希表(Distributed Hash Table,简称DHT)是一种分布式关键字查询的技术,DHT环链的管理如下:
DHT环链的构成。每个节点(如本发明实施例中的业务节点或索引节点)都拥有自己的GUID,DHT算法按照GUID数值的大小顺序串连起来构成一个DHT环链。该环链上的每个节点不仅维护其紧邻两节点的地址信息,还可以维护若干个其他与之比较接近的节点的地址信息,从而方便快速定位。节点维护其他节点的地址信息是通过路由表来实现的。
DHT环链上节点的加入。其中新增节点预先知道的DHT环链中的某一已知节点,该新增节点通过哈希算法运算其IP地址获得该新增节点的GUID,新增节点发送携带有GUID的请求消息至该已知节点,该已知节点利用DHT算法将新增节点插入到环链中,相应的在该新增节点内新生成一路由表,通过该路由表可以维护其紧邻两节点的地址信息,还可以维护若干个其他与之比较接近的节点的地址信息,同时其他节点也可以因该新增节点的加入,需要更新各自节点的路由表信息。
DHT环链上节点的退出。当环链上的节点退出或失效(Fail)后,DHT环链上剩下的节点会自动接管该节点中相关信息,更新相关索引节点的路由表。
归属节点:归属节点可以用于存储某类数据或管理某类信息。某一对象(如数据节点、业务节点或外层应用节点等)的归属节点的确定方法可以设置为以下两种情况中的一种:第一种情况具体为:在用于确定该对象的归属节点的所有节点中,节点的GUID大于该对象的GUID,并且在该对象的GUID与该节点的GUID之间不存在其他节点,则确定该节点为该对象的归属节点,此种情况下,归属节点GUID大于且最接近于该对象的GUID;第一种情况具体为:在用于确定该对象的归属节点的所有节点中,节点的GUID小于该对象的GUID,并且在该对象的GUID与该节点的GUID之间不存在其他节点,则确定该节点为该对象的归属节点,此种情况下,归属节点GUID小于且最接近于该对象的GUID。
本发明的实施例中引入了下列归属节点。
(1)归属数据节点:终端数据所在的数据节点成为该终端的归属数据节点。(2)归属索引节点:用于存储索引数据,索引数据包括终端的GUID及存储相应终端数据的归属数据节点的地址信息。
(3)归属心跳节点:
数据节点/业务节点的归属心跳节点本质为索引节点,该索引节点可以动态地获得与其建立心跳连接的数据节点/业务节点的状态信息,还可以将收集的索引层的所有索引节点的信息发送至与其建立心跳连接的数据节点/业务节点。
外层应用节点的归属心跳节点本质上为业务节点,该业务节点可以将收集的业务层的所有业务节点的信息发送至与其建立心跳连接的外层应用节点。下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
图4为本发明终端数据插入方法实施例一的流程图。该实施例中的数据插入方法,包括以下步骤:
步骤11、向数据节点中插入终端数据;
步骤12、该数据节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点;
步骤13、将该终端的GUID及该数据节点的地址信息存储到该归属索引节点。
上述终端数据插入方法的实施例中,当向数据节点中插入终端数据时,需要在索引层增加相应的索引数据,通过引入归属索引节点,找到终端的归属索引节点,将包含有终端的GUID及该数据节点的地址信息的索引数据存储到该索引节点,使得索引数据分布地存储在若干个索引节点上,实现索引数据存储分布化。
上述实施例中终端的归属索引节点的确定可以规定以下两种情况。第一种情况具体为:索引节点的GUID大于该终端的GUID,并且在在该终端的GUID与该索引节点的GUID之间不存在其他索引节点,确定该索引节点为该终端的归属索引节点,此种情况终端的归属索引节点的GUID大于且最接近于终端的GUID。
第二种情况具体为:索引节点的GUID小于该终端的GUID,并且在在该终端的GUID与该索引节点的GUID之间不存在其他索引节点,则确定该索引节点为该终端的归属索引节点,此种情况终端的归属索引节点的GUID小于且最接近于终端的GUID。
终端的归属索引节点的确定方法可以在DHT环链上完成。需要在该数据节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点之前,索引节点已按照DHT环链构成方式形成索引节点环链。
该数据节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点具体为:该数据节点向与该数据节点相连的索引节点发送携带有终端的GUID的请求消息;索引节点环链根据终端的GUID及索引节点的GUID确定该终端的归属索引节点。
若按照上述第一种情况确定归属索引节点,则索引节点环链根据终端的GUID及索引节点的GUID确定该终端的归属索引节点的步骤具体包括:将与该数据节点连接的索引节点的GUID与该终端的GUID进行比较,若该索引节点的GUID小于该终端的GUID,按GUID递增的顺序将所述请求消息发送至所述索引节点环链中下一索引节点,直至该索引节点的GUID大于该终端的GUID,确定该索引节点为该终端的归属索引节点;若该索引节点的GUID大于该终端的GUID,按GUID递减的顺序将所述请求消息发送至所述索引节点环链中下一索引节点,直至该索引节点的GUID小于该终端的GUID,确定该索引节点的前一索引节点为该终端的归属索引节点。
若按照上述第二种情况确定归属索引节点,则索引节点环链根据终端的GUID及索引节点的GUID确定该终端的归属索引节点的步骤具体包括:将与该数据节点连接的索引节点的GUID与该终端的GUID进行比较,若该索引节点的GUID大于该终端的GUID,按GUID递减的顺序将所述请求消息发送至所述索引节点环链中下一索引节点,直至该索引节点的GUID小于该终端的GUID,确定该索引节点为该终端的归属索引节点;若该索引节点的GUID小于该终端的GUID,按GUID递增的顺序将所述请求消息发送至所述索引节点环链中下一索引节点,直至该索引节点的GUID大于该终端的GUID,确定该索引节点的前一索引节点为该终端的归属索引节点。
当索引节点数目较少时,每个索引节点可以维护其他索引节点的GUID及地址信息,当每个索引节点维护有所有索引节点的GUID及地址信息时,无论索引节点是按照环链形式排列还是按照其他方式排列,均可以通过以下方式快速确定或定位归属索引节点,确定该终端的归属索引节点的步骤具体包括:将与该数据节点连接的索引节点的GUID与该终端的GUID进行比较,当其中一索引节点的GUID大于或小于该终端的GUID,且该索引节点的GUID与该终端的GUID之间不存在其他索引节点的GUID时,确定该索引节点为该终端的归属索引节点。
在上一实施例的基础上,在所述步骤1之前还包括:数据节点(后端节点)注册登记到索引层,与索引层建立心跳连接的步骤,该步骤具体为:后端节点启动,根据数据节点的GUID及索引层的索引节点的GUID确定该数据节点的归属心跳节点,该数据节点的归属心跳节点用于查询数据节点的状态信息和/或将收集的所有索引节点的信息发送至该数据节点,所述索引节点的信息包括索引节点的GUID及索引节点的地址信息。
索引层与数据层建立心跳连接后,归属心跳节点可以动态地获得与其建立心跳连接的数据节点的状态信息,还可以将收集的索引层的所有索引节点的信息发送至与其建立心跳连接的数据节点。若该数据节点的归属心跳节点将收集的所有索引节点的信息发送至该数据节点,当向数据节点中插入终端数据时,由于数据节点保存有索引层的所有索引节点的信息,因此根据终端的GUID及索引节点的GUID确定该终端的归属索引节点的步骤可以直接在后端完成,而无需再到索引层去找满足条件的归属索引节点,避免必须到索引层经过若干跳才能找到归属索引节点所带来的时间延时,从而加快了确定归属索引节点的速度,方便终端数据的快速插入。
数据节点的归属心跳节点的确定方法也可以在上述的索引节点环链上完成。需要在根据数据节点的GUID及索引节点的GUID确定该数据节点的归属心跳节点之前,索引节点已按照GUID数值大小顺序串连成索引节点环链。
根据数据节点的GUID及索引节点的GUID确定该数据节点的归属心跳节点具体包括:数据节点向与该数据节点相连的索引节点发送携带有该数据节点的GUID的请求消息;索引节点环链根据数据节点的GUID及索引节点的GUID确定该数据节点的归属心跳节点。
图5为本发明终端数据删除方法实施例的流程图。该实施例中的数据删除方法,包括以下步骤:
步骤21、从数据节点中删除终端数据;
步骤22、该数据节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点;
步骤23、将该终端的GUID及该数据节点的地址信息从该归属索引节点中删除。
上述终端数据删除方法的实施例中,当从数据节点中删除终端数据时,需要从索引层删除相应的索引数据,通过引入归属索引节点,找到终端的归属索引节点,将包含有终端的GUID及该数据节点的地址信息的索引数据从该索引节点中删除,以实现快速地删除终端数据及索引数据。
上述实施例中,在从数据节点中删除终端数据之前还可以包括:数据节点(后端节点)注册登记到索引层,与索引层建立心跳连接的步骤,该步骤具体为:后端节点启动,根据数据节点的GUID及索引层的索引节点的GUID确定该数据节点的归属心跳节点,该数据节点的归属心跳节点用于查询数据节点的状态信息和/或将收集的所有索引节点的信息发送至该数据节点,所述索引节点的信息包括索引节点的GUID及索引节点的地址信息。
索引层与数据层建立心跳连接后,归属心跳节点可以动态地获得与其建立心跳连接的数据节点的状态信息,还可以将收集的索引层的所有索引节点的信息发送至与其建立心跳连接的数据节点。若该数据节点的归属心跳节点将收集的所有索引节点的信息发送至该数据节点,当从数据节点中删除终端数据时,由于该数据节点保存有索引层的所有索引节点的信息,因此根据终端的GUID及索引节点的GUID确定该终端的归属索引节点的步骤可以直接在后端完成,从而加快了确定归属索引节点的速度,方便终端数据的快速删除。
图6为本发明数据查询方法实施例的流程图。该实施例中的数据查询方法,包括以下步骤:
步骤31、业务节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点,从所述归属索引节点中获取该终端的归属数据节点的地址信息;
步骤32、业务节点根据所述归属数据节点的地址信息计算所述归属数据节点的GUID,根据所述归属数据节点的GUID及索引节点的GUID确定所述归属数据节点的归属心跳节点;
步骤33、业务节点通过所述归属心跳节点获得所述归属数据节点的状态信息,向状态信息为活动的归属数据节点发送数据查询请求。数据节点的状态可以分为活动的或非活动的,活动的数据解点可以接收数据查询请求,提供数据查询服务。
在上述数据查询方法的实施例中,通过引入归属索引节点,由于索引数据分布地存储在若干个索引节点上,终端找到其对应的归属索引节点,即可获得与终端相关的索引数据,然后从索引数据中获取该终端的归属数据节点的地址信息,实现了索引数据存储分布化;终端在进行数据查询时,通过访问该终端的归属索引节点获得终端的归属数据节点信息,从而实现索引数据查询负荷分布化;再通过引入归属心跳节点,使得业务节点/数据节点可以动态地获得整个索引环链信息,可以加快归属索引节点的定位,同时索引节点可以动态地获得与其建立心跳连接的节点的状态信息,使得查询总是发向活着的数据节点,从而提高数据查询的速度。索引数据存储分布化及索引数据查询负荷分布化的机制,提高了终端数据的管理性能。
上述实施例中,在业务节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点之前还包括:业务节点(前端节点)注册登记到索引层,与索引层建立心跳连接的步骤,该步骤具体为:前端节点启动,根据业务节点的GUID及索引层的索引节点的GUID确定该业务节点的归属心跳节点,该业务节点的归属心跳节点用于查询业务节点的状态信息和/或将收集的所有索引节点的信息发送至该业务节点。业务节点通过与索引节点建立心跳连接,可以动态地获得索引层中所有索引节点的信息,索引节点也可以动态地获得与其建立心跳连接的业务节点的状态信息,从而更好地实现了业务节点与索引节点之间的动态信息交互。
索引层与业务层建立心跳连接后,归属心跳节点可以动态地获得与其建立心跳连接的业务节点的状态信息,还可以将收集的索引层的所有索引节点的信息发送至与其建立心跳连接的业务节点。若该业务节点的归属心跳节点将收集的所有索引节点的信息发送至该业务节点,则所述业务节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点的步骤可以直接在前端完成,而无需再到索引层去找满足条件的归属索引节点,避免必须到索引层经过若干跳才能找到归属索引节点所带来的时间延时,从而加快了确定归属索引节点的速度,进一步方便获取该终端的归属索引节点上的归属数据节点信息。上述实施例中,在业务节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点之前还包括:数据节点(后端节点)注册登记到索引层,与索引层建立心跳连接的步骤,该步骤具体为:后端节点启动,根据数据节点的GUID及索引层的索引节点的GUID确定该数据节点的归属心跳节点,该数据节点的归属心跳节点用于查询数据节点的状态信息和/或将收集的所有索引节点的信息发送至该数据节点。数据节点通过与索引节点建立心跳连接,可以动态地获得索引层中所有索引节点的信息,索引节点也可以动态地获得与其建立心跳连接的数据节点的状态信息,从而更好地实现了数据节点与索引节点之间的动态信息交互。
外层应用节点选择业务节点时,可以在与该外层应用节点连接的业务节点中采用轮询的方式进行选择;还可以通过确定该终端的归属业务节点方式来选择。因此业务节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点之前还包括:外层应用节点根据终端的GUID及业务节点的GUID确定该终端的归属业务节点。然后由通过该终端的归属业务节点进行业务处理。
上述实施例中,还包括:外层应用节点注册登记到业务层,与索引层建立心跳连接的步骤,该步骤具体为:外层应用节点启动,根据外层应用节点的GUID及业务节点的GUID确定该外层应用节点的归属心跳节点,该外层应用节点的归属心跳节点用于将收集的业务层中所有业务节点的信息发送至该外层应用节点。外层应用节点通过与业务节点建立心跳连接,可以动态地获得业务层中所有业务节点的信息,从而更好地实现了业务节点与外层应用节点之间的动态信息交互。
外层应用层与业务层建立心跳连接后,外层应用节点的归属心跳节点可以将收集的业务层的所有业务节点的信息发送至与其建立心跳连接的外层应用节点。若该外层应用节点的归属心跳节点将收集的所有业务节点的信息发送至该外层应用节点,所述业务节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点之前还包括:外层应用节点根据终端的GUID及该外层应用节点中保存的业务节点的GUID确定该终端的归属业务节点。由于该外层应用节点保存有业务层的所有业务节点的信息,因此根据终端的GUID及业务节点的GUID确定该终端的归属业务节点的步骤可以直接在前端完成,而无需再到业务层去找满足条件的归属业务节点,避免必须到业务层经过若干跳才能找到归属业务节点所带来的时间延时,从而加快了确定归属业务节点的速度;同时由于外层应用节点与业务节点之间的心跳连接关系,使得外层应用节点可以动态地自动地获得前端的业务节点之间状态变化情况,如增加一个业务节点或减少一个业务节点,从而能够更好地实现业务负荷在各个前端的业务节点中进行分担。
当业务层中的业务节点按照DHT环链构成方式形成业务节点环链时,确定终端的归属业务节点、以及确定外层应用节点的归属心跳节点可以分别采用类似于上述确定终端的归属索引节点、以及确定数据节点的归属心跳节点的方法。
下面分别说明如何利用以上两个DHT环链(索引节点环链、业务节点环链),进行终端数据的管理,即索引节点环链及业务节点环链,进行外层应用节点的登记、前端/后端登记到索引层、索引信息的插入、索引信息的删除及归属数据节点的查询等。
(1)外层应用节点登记到业务层。
外层应用节点启动,调用DHT接口,根据外层应用节点的IP地址产生GUID。
外层应用节点调用DHT接口向与之相连的业务节点(预先配置)发送携带有该外层应用节点的GUID的登记请求消息。
业务节点收到外层应用节点的GUID信息后,判断该业务节点是否为归属业务节点,若不是,查找其下一跳,将该消息送给其下一跳,由下一跳负责继续查找,直到找到该GUID的归属业务节点。
由于上述请求消息为登记请求消息,业务节点收集业务节点环链完整信息(包括各个业务节点的GUID),将其发送给外层应用节点,且与该外层应用节点建立心跳关系,用于跟踪该外层应用节点的状态信息。
当归属业务节点检测到业务节点环链发生变化时,收集业务节点环链完整信息,将其发送给其管辖的外层应用节点。(可以FTP,或只发送增量)
若外层应用节点中保存有业务DHT环链信息时,当外层应用节点再次发送登记请求消息时会根据其保存的业务节点环链信息,采用轮询(ROUNDROBIN)的方式选择业务节点,或者通过该外层应用节点的GUID,从业务DHT环链中选择其归属业务节点。
(2)前端/后端登记到索引层。
业务节点/数据节点启动,调用前端/后端的DHT接口,根据业务节点/数据节点的IP地址产生GUID。
前端/后端调用DHT接口向与业务节点/数据节点连接的索引节点(预先配置的索引节点)发送携带有所述业务节点/数据节点的GUID的登记请求消息。
索引节点收到业务节点/数据节点的GUID信息后,判断该索引节点是否为归属索引节点,若不是,查找其下一跳,将该消息送给其下一跳,由下一跳负责继续查找,直到找到该GUID的归属索引节点。
由于上述请求消息为登记请求消息,归属索引节点收集索引节点环链完整信息,将其发送给业务节点/数据节点,且与该业务节点/数据节点建立心跳连接,用于跟踪该业务节点/数据节点的状态信息。
当归属索引节点检测到索引节点环链发生变化时,收集索引节点环链完整信息,将其发送给其管辖的前端/后端节点(可以FTP,或只发送增量)。
(3)后端通过索引节点环链将索引信息插入到索引层。
当插入一条用户数据到某一数据节点时,调用DHT接口,根据该数据节点的IP地址产生GUID。
该数据节点调用DHT接口将<GUID,数据节点地址>信息送给与之相连的索引节点。如果连接多个索引节点,可采用ROUND ROBIN方式进行负荷分担.
索引节点收到<GUID,数据节点地址>信息后,判断该索引节点是否为归属索引节点,若不是,查找其下一跳,将该消息送给其下一跳,由下一跳负责继续查找,直到找到该GUID的归属索引节点,然后将<GUID,数据节点地址>存储到其归属索引节点中。
若数据节点中保存有索引节点环链信息时,当数据节点中再次插入用户数据,再次向索引节点发送插入请求消息时,会根据该数据节点保存的索引节点环链信息及该数据节点的GUID,直接找到该用户的归属索引节点,然后将<GUID,数据节点地址>存储到其归属索引节点中。
(4)后端通过DHT将索引信息从索引层删除。
当从某一数据节点删除一条用户数据时,调用DHT接口,根据该数据节点的IP地址产生GUID。该GUID也可以在用户数据插入数据节点时进行保存。
数据节点调用DHT接口将GUID信息送给与之相连的索引节点。如果连接多个索引节点,可采用ROUND ROBIN方式进行负荷分担。
索引节点收到GUID后,判断该索引节点是否为归属索引节点,若不是,查找其下一跳,将该消息送给其下一跳,由下一跳负责继续查找,直到找到该GUID的归属索引节点,然后根据GUID将该索引记录从归属索引节点中删除。
若数据节点中保存有索引节点环链信息时,该从数据节点中删除一条用户数据时,可以直接比较该数据节点的GUID和其保存的DHT环链信息即可找到该数据节点的归属索引节点,然后将索引记录从归属索引节点中删除。
(5)前端通过索引DHT环链查找归属数据节点。
业务节点查找某一特定用户的归属数据节点地址时,调用DHT接口产生GUID。
该业务节点调用DHT接口将该业务节点的GUID信息送给与之相连的索引节点。如果连接多个索引节点,可采用ROUND ROBIN方式进行负荷分担。
索引节点收到GUID信息后,判断该索引节点是否为归属索引节点,若不是,查找其下一跳,将该消息送给其下一跳,由下一跳负责继续查找,直到找到该GUID的归属索引节点,然后根据GUID从归属索引节点中取出其归属数据节点的地址信息。
若业务节点中保存有索引节点环链信息时,该业务节点比较用户的GUID和其保存的索引节点环链信息即可找到该用户的归属索引节点,然后该业务节点直接发送查询请求到该用户的归属索引节点,从中取出其归属数据节点的地址信息。
取出归属数据节点的地址信息后,业务节点就可以直接与其归属数据节点建立连接获得用户数据。
由于电信领域的DHT环链有两个特点:一是DHT环链的节点不会频繁的上下线,比较稳定;二是DHT环链的节点数不会太多,比较容易获得整个环链的状态信息。
根据这些特点本发明引入了前/后端到索引层的登记流程,通过该流程达到两个目的:一是使前/后端能够动态地获得整个索引节点环链的状态信息,从而前/后端本身就可以直接找到用户的归属索引节点,极大地提高了检索速度,极大减少索引节点环链内部的消息流量;二是使索引节点环链也可以通过与前/后端节点间的心跳连接,动态地检测到所有前/后端的状态信息,且将所有前/后端的状态信息也分布的存储在索引节点环链的各个索引节点中,这样可方便快速地提供前/后端之间的状态查询。
索引层的索引节点环链将现有的用户数据管理中的集中式/半分布式的索引变成了全分布式索引,从而使得用户数据管理的架构彻底分布化,即同时实现索引数据查询负荷分布化及索引数据存储分布化,从而进一步提高用户数据管理的硬件/功能(容量/应用)性能,提高资源利用率和增强容灾效果。
将DHT环链技术应用于用户数据管理中的前端,能够很好的完成业务层节点的状态信息和外层应用节点状态信息的交互,从而很好的实现外层应用节点的负荷在众多业务节点之间的分担。
综上所述,上述数据管理方法,具有以下优点:灵活的扩展性:当存储能力(DATA CAPACITY)不够时,可增加数据节点;当业务能力(TAFFICCAPACITY)不够时,可增加业务节点;当业务功能(APPLICATION CAPACITY)不够时,可增加新功能FE
高可靠的容灾特性:数据节点采用2-WAY REPLICATION(1+1实时备份)同时处于激活状态;业务节点采用N+K的备份,且所有的业务节点都处于激活状态。
较高的资源利用率:所有的数据节点和业务节点都处于激活状态,没有资源处于闲置状态。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前达实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (20)
1、一种数据查询方法,其特征在于,包括:
业务节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点,从所述归属索引节点中获取该终端的归属数据节点的地址信息;
业务节点根据所述归属数据节点的地址信息计算所述归属数据节点的GUID,根据所述归属数据节点的GUID及索引节点的GUID确定所述归属数据节点的归属心跳节点;
业务节点通过所述归属心跳节点获得所述归属数据节点的状态信息,向状态信息为活动的归属数据节点发送数据查询请求。
2、根据权利要求1所述的方法,其特征在于,在业务节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点之前还包括:
根据业务节点的GUID及索引节点的GUID确定该业务节点的归属心跳节点,该业务节点的归属心跳节点用于查询业务节点的状态信息和/或将收集的所有索引节点的信息发送至该业务节点。
3、根据权利要求2所述的方法,其特征在于,在根据业务节点的GUID及索引节点的GUID确定该业务节点的归属心跳节点之前还包括:索引节点按照GUID数值的大小顺序串连构成一索引节点环链;根据业务节点的GUID及索引节点的GUID确定该业务节点的归属心跳节点具体为:
业务节点向与该业务节点相连的索引节点发送携带有该业务节点的GUID的请求消息;
索引节点环链根据业务节点的GUID及索引节点的GUID确定该业务节点的归属心跳节点。
4、根据权利要求1所述的方法,其特征在于,在业务节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点之前还包括:索引节点按照GUID数值的大小顺序串连构成一索引节点环链,该业务节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点具体为:
该业务节点向与该业务节点相连的索引节点发送携带有终端的GUID的请求消息;
索引节点环链根据终端的GUID及索引节点的GUID确定该终端的归属索引节点。
5、根据权利要求2所述的方法,其特征在于,若该业务节点的归属心跳节点将收集的所有索引节点的信息发送至该业务节点,则所述业务节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点具体包括:业务节点根据终端的GUID及该业务节点中保存的索引节点的GUID确定该终端的归属索引节点。
6、根据权利要求1所述的方法,其特征在于,在业务节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点之前还包括:
根据数据节点的GUID及索引节点的GUID确定该数据节点的归属心跳节点,该数据节点的归属心跳节点用于查询数据节点的状态信息和/或将收集的所有索引节点的信息发送至该数据节点。
7、根据权利要求6所述的方法,其特征在于,在根据数据节点的GUID及索引节点的GUID确定该数据节点的归属心跳节点之前还包括:索引节点按照GUID数值的大小顺序串连构成一索引节点环链;根据数据节点的GUID及索引节点的GUID确定该数据节点的归属心跳节点具体为:
数据节点向与该数据节点相连的索引节点发送携带有该数据节点的GUID的请求消息;
索引节点环链根据数据节点的GUID及索引节点的GUID确定该数据节点的归属心跳节点。
8、根据权利要求1所述的方法,其特征在于,所述业务节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点之前还包括:
外层应用节点根据终端的GUID及业务节点的GUID确定该终端的归属业务节点。
9、根据权利要求8所述的方法,其特征在于,在外层应用节点根据终端的GUID及业务节点的GUID确定该终端的归属业务节点之前还包括:
根据外层应用节点的GUID及业务节点的GUID确定该外层应用节点的归属心跳节点,该外层应用节点的归属心跳节点用于将收集的所有业务节点的信息发送至该外层应用节点。
10、根据权利要求9所述的方法,其特征在于,在根据外层应用节点的GUID及业务节点的GUID确定该外层应用节点的归属心跳节点之前还包括:业务节点按照GUID数值的大小顺序串连构成一业务节点环链;根据外层应用节点的GUID及业务节点的GUID确定该外层应用节点的归属心跳节点具体为:
外层应用节点向与该外层应用节点相连的业务节点发送携带有该外层应用节点的GUID的请求消息;
业务节点环链根据外层应用节点的GUID及上业务节点的GUID确定该外层应用节点的归属心跳节点。
11、根据权利要求8所述的方法,其特征在于,在外层应用节点根据终端的GUID及业务节点的GUID确定该终端的归属业务节点之前还包括:业务节点按照GUID数值的大小顺序串连构成一业务节点环链,该外层应用节点根据终端的GUID及业务节点的GUID确定该终端的归属业务节点具体为:
该外层应用节点向与该外层应用节点相连的业务节点发送携带有终端的GUID的请求消息;
业务节点环链根据终端的GUID及业务节点的GUID确定该终端的归属业务节点。
12、根据权利要求9所述的方法,其特征在于,若该外层应用节点的归属心跳节点将收集的所有业务节点的信息发送至该外层应用节点,则所述外层应用节点根据终端的GUID及业务节点的GUID确定该终端的归属业务节点具体包括:外层应用节点根据终端的GUID及该外层应用节点中保存的业务节点的GUID确定该终端的归属业务节点。
13、一种终端数据插入方法,其特征在于,包括:
向数据节点中插入终端数据;
该数据节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点;
将该终端的GUID及该数据节点的地址信息存储到该归属索引节点。
14、根据权利要求13所述的方法,其特征在于,在向数据节点中插入终端数据之前还包括:
根据数据节点的GUID及索引节点的GUID确定该数据节点的归属心跳节点,该数据节点的归属心跳节点用于查询数据节点的状态信息和/或将收集的所有索引节点的信息发送至该数据节点。
15、根据权利要求14所述的方法,其特征在于,在根据数据节点的GUID及索引节点的GUID确定该数据节点的归属心跳节点之前还包括:索引节点按照GUID数值的大小顺序串连构成一索引节点环链;根据数据节点的GUID及索引节点的GUID确定该数据节点的归属心跳节点具体为:
数据节点向与该数据节点相连的索引节点发送携带有该数据节点的GUID的请求消息;
索引节点环链根据数据节点的GUID及索引节点的GUID确定该数据节点的归属心跳节点。
16、根据权利要求13所述的方法,其特征在于,在该数据节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点之前还包括:索引节点按照GUID数值的大小顺序串连构成一索引节点环链,该数据节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点具体为:
该数据节点向与该数据节点相连的索引节点发送携带有终端的GUID的请求消息;
索引节点环链根据终端的GUID及上索引节点的GUID确定该终端的归属索引节点。
17、根据权利要求14所述的方法,其特征在于,若该数据节点的归属心跳节点将收集的所有索引节点的信息发送至该数据节点,则该数据节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点具体为:该数据节点根据终端的GUID及该数据节点中保存的索引节点的GUID确定该终端的归属索引节点。
18、一种终端数据删除方法,其特征在于,包括:
从数据节点中删除终端数据;
该数据节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点;
将该终端的GUID及该数据节点的地址信息从该归属索引节点中删除。
19、根据权利要求18所述的方法,其特征在于,在从数据节点中删除终端数据之前还包括:
根据数据节点的GUID及索引节点的GUID确定该数据节点的归属心跳节点,该数据节点的归属心跳节点用于查询数据节点的状态信息和/或将收集的所有索引节点的信息发送至该数据节点。
20、根据权利要求19所述的方法,其特征在于,若该数据节点的归属心跳节点将收集的所有索引节点的信息发送至该数据节点,则该数据节点根据终端的GUID及索引节点的GUID确定该终端的归属索引节点具体为:该数据节点根据终端的GUID及该数据节点中保存的索引节点的GUID确定该终端的归属索引节点。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101186008A CN101344882B (zh) | 2007-07-10 | 2007-07-10 | 数据查询方法、插入方法及删除方法 |
PCT/CN2008/000962 WO2009006779A1 (fr) | 2007-07-10 | 2008-05-19 | Procédé et système pour déterminer un nœud d'index de domicile et un nœud de service de domicile d'un utilisateur |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2007101186008A CN101344882B (zh) | 2007-07-10 | 2007-07-10 | 数据查询方法、插入方法及删除方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101344882A true CN101344882A (zh) | 2009-01-14 |
CN101344882B CN101344882B (zh) | 2010-06-02 |
Family
ID=40228160
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101186008A Active CN101344882B (zh) | 2007-07-10 | 2007-07-10 | 数据查询方法、插入方法及删除方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN101344882B (zh) |
WO (1) | WO2009006779A1 (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102474714A (zh) * | 2009-07-21 | 2012-05-23 | 德国电信股份公司 | 分布式网络寄存器 |
CN104298560A (zh) * | 2013-07-15 | 2015-01-21 | 中兴通讯股份有限公司 | 一种负荷分担系统及方法 |
WO2018058949A1 (zh) * | 2016-09-30 | 2018-04-05 | 华为技术有限公司 | 一种数据存储方法、装置及系统 |
CN108228322A (zh) * | 2016-12-12 | 2018-06-29 | 阿里巴巴集团控股有限公司 | 一种分布式链路跟踪、分析方法及服务器、全局调度器 |
CN109542981A (zh) * | 2018-11-21 | 2019-03-29 | 网易(杭州)网络有限公司 | 一种数据同步的系统及方法、电子设备、存储介质 |
WO2022084784A1 (en) * | 2020-10-23 | 2022-04-28 | International Business Machines Corporation | Auto-scaling a query engine for enterprise-level big data workloads |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109697193A (zh) * | 2017-10-24 | 2019-04-30 | 中兴通讯股份有限公司 | 一种确定异常节点的方法、节点及计算机可读存储介质 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5878347A (en) * | 1996-03-26 | 1999-03-02 | Ericsson, Inc. | Routing a data signal to a mobile station within a telecommunications network |
US7054867B2 (en) * | 2001-09-18 | 2006-05-30 | Skyris Networks, Inc. | Systems, methods and programming for routing and indexing globally addressable objects and associated business models |
US7171439B2 (en) * | 2002-06-14 | 2007-01-30 | Integrated Device Technology, Inc. | Use of hashed content addressable memory (CAM) to accelerate content-aware searches |
US7206934B2 (en) * | 2002-09-26 | 2007-04-17 | Sun Microsystems, Inc. | Distributed indexing of identity information in a peer-to-peer network |
CN100544261C (zh) * | 2005-12-20 | 2009-09-23 | 中国科学院声学研究所 | 一种基于网络信息的数据分布/获取方法 |
CN100477622C (zh) * | 2006-06-28 | 2009-04-08 | 华中科技大学 | 对等网络点播系统中的环状节点组织方法 |
-
2007
- 2007-07-10 CN CN2007101186008A patent/CN101344882B/zh active Active
-
2008
- 2008-05-19 WO PCT/CN2008/000962 patent/WO2009006779A1/zh active Application Filing
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102474714A (zh) * | 2009-07-21 | 2012-05-23 | 德国电信股份公司 | 分布式网络寄存器 |
CN102474714B (zh) * | 2009-07-21 | 2014-11-26 | 德国电信股份公司 | 分布式网络寄存器 |
CN104298560A (zh) * | 2013-07-15 | 2015-01-21 | 中兴通讯股份有限公司 | 一种负荷分担系统及方法 |
WO2018058949A1 (zh) * | 2016-09-30 | 2018-04-05 | 华为技术有限公司 | 一种数据存储方法、装置及系统 |
CN108228322A (zh) * | 2016-12-12 | 2018-06-29 | 阿里巴巴集团控股有限公司 | 一种分布式链路跟踪、分析方法及服务器、全局调度器 |
CN108228322B (zh) * | 2016-12-12 | 2022-03-25 | 阿里巴巴集团控股有限公司 | 一种分布式链路跟踪、分析方法及服务器、全局调度器 |
CN109542981A (zh) * | 2018-11-21 | 2019-03-29 | 网易(杭州)网络有限公司 | 一种数据同步的系统及方法、电子设备、存储介质 |
WO2022084784A1 (en) * | 2020-10-23 | 2022-04-28 | International Business Machines Corporation | Auto-scaling a query engine for enterprise-level big data workloads |
GB2615466A (en) * | 2020-10-23 | 2023-08-09 | Ibm | Auto-scaling a query engine for enterprise-level big data workloads |
US11809424B2 (en) | 2020-10-23 | 2023-11-07 | International Business Machines Corporation | Auto-scaling a query engine for enterprise-level big data workloads |
Also Published As
Publication number | Publication date |
---|---|
CN101344882B (zh) | 2010-06-02 |
WO2009006779A1 (fr) | 2009-01-15 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101344882B (zh) | 数据查询方法、插入方法及删除方法 | |
CN101626563B (zh) | 一种通信网络中的数据存储系统及信息处理方法 | |
CN107888657A (zh) | 低延迟分布式存储系统 | |
CN102638584B (zh) | 数据分布缓存方法及系统 | |
CN105138571B (zh) | 分布式文件系统及其存储海量小文件的方法 | |
CN111291079A (zh) | 一种数据的查询方法和装置 | |
US20080195597A1 (en) | Searching in peer-to-peer networks | |
CN104050250A (zh) | 一种分布式键-值查询方法和查询引擎系统 | |
CN102148850A (zh) | 一种集群系统的业务处理方法及集群系统 | |
CN101771723A (zh) | 数据同步方法 | |
CN101472166A (zh) | 一种内容缓存、查询方法及点对点媒体传输系统 | |
CN105472002A (zh) | 基于集群节点间即时拷贝的会话同步方法 | |
CN110417883B (zh) | 一种应用于区块链的点对点网络结构的设计方法 | |
CN105554121A (zh) | 实现分布式缓存系统负载均衡的方法及系统 | |
CN107888666A (zh) | 一种跨地域数据存储系统以及数据同步方法和装置 | |
CN104967873A (zh) | 流媒体直播调度方法、系统和调度服务器 | |
CN108399175B (zh) | 一种数据存储、查询方法及其装置 | |
US11263270B1 (en) | Heat balancing in a distributed time-series database | |
CN101222490A (zh) | 一种网络服务器系统及方法 | |
JP4459999B2 (ja) | 投票を活用した無停止サービスシステム及びそのシステムにおける情報更新及び提供方法 | |
US11409771B1 (en) | Splitting partitions across clusters in a time-series database | |
CN102891811B (zh) | 名字服务数据库的锁定方法和交换机 | |
CN105635278A (zh) | 一种管理存储系统的元数据的方法以及元数据服务器 | |
CN107908713B (zh) | 一种基于Redis集群的分布式动态杜鹃过滤系统及其过滤方法 | |
CN101789963A (zh) | 数据同步系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |