一种HANDLE标识解析系统及数据查询方法与流程

文档序号:19745061发布日期:2020-01-21 18:13阅读:2427来源:国知局
一种HANDLE标识解析系统及数据查询方法与流程

本发明涉及一种提升handle标识解析系统数据查询速度的方法,涉及通信技术领域。



背景技术:

handle标识解析系统由tcp/ip的联合发明人、有“互联网之父”之称的robertkahn博士发明,核心系统由美国国家创新研究所(cnri)开发。标识可以理解为用于识别不同物品、实体、物联网对象的名称标记,可以是由数字、字母、符号、文字等以一定的规则组成的字符串。标识的本质是用于识别对象的技术(包含实体对象、虚拟数字对象等),以便各类信息处理系统、资源管理系统、网络管理系统对目标对象进行相关管理和控制。在实际使用中,用户通过向handle标识解析系统发送查询请求,来获得需要查询的handle标识的详细信息。

对于handle标识的详细信息数据,目前handle标识解析系统中普遍使用的是数据库存储方案,使用的数据库主要有三种:1、berkeleydatabase;2、mysqldatabase;3、postgresqldatabase。这三种数据库都属于handle标识解析系统外部数据库存储方式。当handle标识解析系统接收到客户的查询请求之后,需要去外部数据库中查找结果,然后将结果条目拷贝到程序内存中,再组装成响应报文返回给客户。

目前handle标识解析系统普遍采用的数据查询方案需要到外部数据库中进行结果查询和结果拷贝,这一过程会受到外部数据库性能和硬件io性能影响,耗费较长时间,从而导致系统的整体性能不高。在大量用户同时查询的情况下,handle标识解析系统需要大量的查询外部数据库,当超过外部数据库响应能力时候,查询超时会导致系统给用户返回服务器太忙无法处理请求(rc_server_busy)的结果。这样的结果对于客户来说是无效的结果,给客户带来较差的handle标识解析系统的服务体验。



技术实现要素:

为了克服上述问题,本发明针对现有handle标识解析系统,在大批量查询请求的情况下查询外部数据库速度较慢的问题进行改进。

本发明提供以下技术方案:handle标识解析系统,所述系统包括,

一个容量为x的hash表,hash表中携带一个记录每个hash节点最近命中时间的lru链表;

一个内存池,所述hash表中根据handle名称字符串的hash结果值决定位置,在此位置存放对应内存池中的对应handle结果的地址指针;内存池中存放handle标识解析结果报文。

进一步的,所述内存池的容量为y,且y可线性增长。

更进一步的,所述lru链表存储对应handle标识在系统运行中最后命中使用的时间。

本发明还提供基于上述handle标识解析系统的数据查询方法,所述查询方法包括以下步骤:

步骤一,接收查询请求,系统查询hash表;

步骤二,如果查询到对应条目则依照场景三中的过程将完整网络报文发送给客户;如果未查询到对应条目,则系统按照现有查询方式去外部数据库中查询结果;判断hash表中是否有空闲节点;

步骤三,如果所述hash表中有空闲节点则则依照场景一中的过程将完整网络报文发送给客户;

步骤四,如果所述hash表中没有空闲节点,则依照场景二中的过程将完整网络报文发送给客户。

进一步的,所述场景二具体为,hash表中经没有空闲节点,

步骤2.1,将lru链表中最早命中的结果从hash表、内存池和lru链表中删除;

步骤2.2,将外部数据库中查询到的结果存入内存池中,并将结果在内存池中的指针存入hash表中,在hash表的链表中记录此条结果的最后命中时间;

步骤2.3,将结果返回给用户。

进一步的,所述场景三具体为,

步骤3.1,根据对应条目中的指针信息在内存池中取出响应结果报文,加上网络头和ip头信息组装成完整网络报文,立刻发送给客户;

步骤3.2,根据hash表中的指针信息去lru链表中找到对应时间信息,更新最后命中时间。

进一步的,所述场景一具体为,hash表中有空闲节点,

步骤1.1,将结果存入内存池中,并将结果在内存池中的位置以指针形式存入hash表中,在hash表的lru链表中记录此条结果的生存期ttl值和最后命中时间;

步骤1.2,将结果返回给用户。

与现有技术相比,本发明具有以下优点:

在handle标识解析系统中增加内存池存储大量热点数据,减少查询外部数据库的操作。减少查询外部数据库以及从外部数据库中把结果拷贝到handle标识解析系统中的等待时间。实现handle标识解析系统在大量查询的情况下,快速查找到结果数据。

附图说明

图1为本发明handle标识解析系统架构图;

图2为hash表有空闲节点时查询入表流程图;

图3为hash表无空闲节点时查询入表流程图;

图4为命中hash表时流程图。

具体实施方式

下面将结合本发明实施例的附图,对本发明中实施例的技术方案进行描述。显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

实施例1

改造后架构如图1所示,在handle标识解析系统启动时候,创建一个x大小的hash表,x值可以根据实际需求和硬件环境由配置文件灵活设置,并且hash表中携带一个记录每个hash节点最近命中时间的lru链表。申请一块y大小的可线性增长的内存池,y的初始值和线性增长值可以根据实际需求和硬件环境由配置文件灵活设置。hash表中根据handle名称字符串的hash结果值决定位置,在此处存放对应内存池中的对应handle结果的地址指针。内存池中存放handle标识解析结果报文。

实施例2

本发明还提供基于上述handle标识解析系统的数据查询方法,所述查询方法包括以下步骤:

步骤一,接收查询请求,系统查询hash表;

步骤二,如果查询到对应条目则依照场景三中的过程将完整网络报文发送给客户;如果未查询到对应条目,则系统按照现有查询方式去外部数据库中查询结果;判断hash表中是否有空闲节点;

步骤三,如果所述hash表中有空闲节点则则依照场景一中的过程将完整网络报文发送给客户;

步骤四,如果所述hash表中没有空闲节点,则依照场景二中的过程将完整网络报文发送给客户。

应用场景一:系统刚启动不久,hash表中无此条handle请求的结果,并且hash表中有空余位置。

具体实现如图2所示,当接收到查询请求后,系统先去hash表中查询,未找到对应条目。然后系统按照现有查询方式去外部数据库中查询结果,获得结果后,判断得到hash表中有空闲节点。将结果存入内存池中,并将结果在内存池中的位置以指针形式存入hash表中,在hash表的lru链表中记录此条结果的生存期ttl值和最后命中时间。将结果返回给用户。

应用场景二:系统运行一段时间后,hash表中无此条handle请求的结果,并且hash表中已经没有空余位置。

具体实现如图3所示,当接收到查询请求后,系统先去hash表中查询,未找到对应条目。然后系统按照现有查询方式去外部数据库中查询结果,获得结果后,判断得到hash表中已经没有空闲节点。将lru链表中最早命中的结果从hash表、内存池和lru链表中删除。将外部数据库中查询到的结果存入内存池中,并将结果在内存池中的指针存入hash表中,在hash表的链表中记录此条结果的最后命中时间。将结果返回给用户。

应用场景三:系统运行一段时间后,hash表中存在handle请求的结果。

具体实现如图4所示,当接收到查询请求后,系统先去hash表中查询,找到对应条目。根据对应条目中的指针信息去内存池中取出响应结果报文,加上网络头和ip头信息组装成完整网络报文,立刻发送给客户。根据hash表中的指针信息去lru链表中找到对应时间信息,更新最后命中时间。

根据上面描述,使用本方法的handle标识解析系统架构改变为:在原生handle标识解析系统基础上增加内存池缓存机制。此机制由hash表、内存池和lru链表组合而成。hash表根据handle名称的hash值决定此条handle标识在hash表中的位置,这里存储了指向内存池和lru链表的指针。内存池中存储了完整的handle标识解析结果报文。lru链表存储了此条handle标识在系统运行中最后命中使用的时间,为hash表填满后替换热点handle标识做判断依据。

在大量查询请求的情况下,热点数据的查询业务全部处于场景三。这个场景不需要进行外部数据库的查询和结果数据的跨应用拷贝,只需要在handle标识解析系统所管理的内存中进行查询和拷贝数据,极大提升了handle标识解析系统中结果数据的查询速度。

本发明创造所述的应用方式可根据实际情况进行调整,并不是用来限制发明创造。以上对本发明所提供的技术方案进行了详细介绍;本实施例的说明只是用于帮助理解本发明的方法。本发明所述的应用方式可根据实际情况进行调整,并不是用来限制本发明。

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