CN112433999B - 一种Janusgraph客户端遍历方法及相关组件 - Google Patents

一种Janusgraph客户端遍历方法及相关组件 Download PDF

Info

Publication number
CN112433999B
CN112433999B CN202011224815.XA CN202011224815A CN112433999B CN 112433999 B CN112433999 B CN 112433999B CN 202011224815 A CN202011224815 A CN 202011224815A CN 112433999 B CN112433999 B CN 112433999B
Authority
CN
China
Prior art keywords
query result
result frame
client
janusgraph
frame
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.)
Active
Application number
CN202011224815.XA
Other languages
English (en)
Other versions
CN112433999A (zh
Inventor
高艳涛
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Inspur Data Technology Co Ltd
Original Assignee
Beijing Inspur Data Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Inspur Data Technology Co Ltd filed Critical Beijing Inspur Data Technology Co Ltd
Priority to CN202011224815.XA priority Critical patent/CN112433999B/zh
Publication of CN112433999A publication Critical patent/CN112433999A/zh
Application granted granted Critical
Publication of CN112433999B publication Critical patent/CN112433999B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/50Information retrieval; Database structures therefor; File system structures therefor of still image data
    • G06F16/53Querying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/18File system types
    • G06F16/182Distributed file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)

Abstract

本申请公开的Janusgraph客户端遍历方法中,取消使用join并引入阻塞队列,当客户端从Janusgraph Gremlin Server获取到查询结果帧后,不在等待该消息的所有帧到达,直接向上流动,把该结果帧信息放入到阻塞队列中,把原来以消息作为基本单位的批处理,变成以帧作为基本单位的批处理,使得客户端不必等待消息的最后一个frame到达便可以向应用程序线程发出通知,应用程序线程可以提前遍历并处理结果集,加快了数据处理速度,也有助于提升用户体验。本申请还提供了一种Janusgraph客户端遍历装置、设备及一种可读存储介质,具有上述有益效果。

Description

一种Janusgraph客户端遍历方法及相关组件
技术领域
本申请涉及计算机软件技术领域,特别涉及一种Janusgraph客户端遍历方法、装置、设备及一种可读存储介质。
背景技术
Janusgraph是一个高度可扩展的分布式图数据库,专门用于存储和查询包含数千亿个分布在多机群集中的极点和边缘的图形。
目前,当Janusgraph客户端(包含用户程序以及连接Janusgraph Gremlin Server的中间件)通过Janusgraph-driver这一中间件连接远程Janusgraph Gremlin Server(Gremlin Server为Janusgraph的一种部署端)请求获取图数据库时,若查询结果较大,Janusgraph Gremlin Server会将该消息分成多个frame(在Janusgraph的实现中的一个应用层概念,多个frame构成一个消息)发送到客户端,以防止消息过大导致序列化超时,最后一个frame含有消息结束标志。Janusgraph-driver收到多个frame后重新组装该消息,当最后一个frame到达后,该消息组装完毕,并通知应用程序数据可用。
而在Janusgraph-driver等待多个frame到达并组装的过程中,应用程序(指业务程序,例如使用图数据库做关系分析等)对应的线程(客户端请求获取图数据库的查询结果的线程)将一直处于阻塞状态,导致应用程序线程等待时间较长,***整体数据处理速度慢,用户体验差。
因此,如何缩短线程阻塞时间,缩短应用程序线程等待时间,提升***整体数据处理速度,是本领域技术人员急需解决的问题。
发明内容
本申请的目的是提供Janusgraph客户端遍历方法,该方法可以缩短线程阻塞时间,缩短应用程序线程等待时间,提升***整体数据处理速度;本申请的另一目的是提供Janusgraph客户端遍历装置、设备及一种可读存储介质。
为解决上述技术问题,本申请提供一种Janusgraph客户端遍历方法,包括:
Janusgraph客户端接收到图数据库查询请求后,生成RemoteStep异步任务,并向远程Janusgraph Gremlin Server提交查询任务;
若接收到反馈的查询结果帧,将所述查询结果帧添加至预先引入的阻塞队列中;
唤醒用户线程遍历所述阻塞队列中的查询结果帧进行数据处理。
可选地,在所述唤醒用户线程遍历所述阻塞队列中的查询结果帧进行数据处理之前,还包括:
判断所述阻塞队列中的帧数量是否达到触发值;
若达到,执行所述唤醒用户线程遍历所述阻塞队列中的查询结果帧进行数据处理的步骤;
若未达到,执行所述若接收到反馈的查询结果帧,将所述查询结果帧添加至预先引入的阻塞队列中的步骤。
可选地,在所述接收到反馈的查询结果帧之后,还包括:
判断所述查询结果帧是否为结束帧;
若是,结束查询结果帧的接收线程。
可选地,所述Janusgraph客户端遍历方法,其特征在于,还包括:
若所述查询结果帧为结束帧,生成消息接收完成的提示信息。
本申请还提供了一种Janusgraph客户端遍历装置,该装置包括:
任务提交单元,用于Janusgraph客户端接收到图数据库查询请求后,生成RemoteStep异步任务,并向远程Janusgraph Gremlin Server提交查询任务;
队列添加单元,用于若接收到反馈的查询结果帧,将所述查询结果帧添加至预先引入的阻塞队列中;
处理唤醒单元,用于唤醒用户线程遍历所述阻塞队列中的查询结果帧进行数据处理。
可选地,所述Janusgraph客户端遍历装置还包括:触发判断单元;
所述触发判断单元,用于在所述唤醒用户线程遍历所述阻塞队列中的查询结果帧进行数据处理之前,判断所述阻塞队列中的帧数量是否达到触发值;若达到,触发所述处理唤醒单元;若未达到,触发所述队列添加单元。
可选地,所述Janusgraph客户端遍历装置还包括:结束判断单元,用于在所述接收到反馈的查询结果帧之后,判断所述查询结果帧是否为结束帧;若是,结束查询结果帧的接收线程。
可选地,所述Janusgraph客户端遍历装置还包括:提示单元,用于在所述查询结果帧为结束帧时,生成消息接收完成的提示信息。
本申请还提供了一种Janusgraph客户端遍历设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现所述的Janusgraph客户端遍历方法的步骤。
本申请还提供了一种可读存储介质,所述可读存储介质上存储有程序,所述程序被处理器执行时实现所述的Janusgraph客户端遍历方法的步骤。
本申请所提供的Janusgraph客户端遍历方法中,取消使用join并引入阻塞队列,当客户端从Janusgraph Gremlin Server获取到查询结果帧后,不在等待该消息的所有帧到达,直接向上流动,把该结果帧信息放入到阻塞队列中,把原来以消息作为基本单位的批处理,变成以帧作为基本单位的批处理,使得客户端不必等待消息的最后一个frame到达便可以向应用程序线程发出通知,应用程序线程可以提前遍历并处理结果集,加快了数据处理速度,也有助于提升用户体验。
本申请还提供了一种Janusgraph客户端遍历装置、设备及一种可读存储介质,具有上述有益效果,在此不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为一种传统方式下的Janusgraph客户端遍历流程示意图;
图2为本申请实施例提供的一种Janusgraph客户端遍历方法的流程图;
图3为本申请实施例提供的一种Janusgraph客户端遍历流程示意图;
图4为本申请实施例提供的一种Janusgraph客户端遍历装置的结构框图;
图5为本申请实施例提供的一种Janusgraph客户端遍历设备的结构示意图。
具体实施方式
本申请的核心是提供Janusgraph客户端遍历方法,该方法可以缩短线程阻塞时间,缩短应用程序线程等待时间,提升***整体数据处理速度;本申请的另一核心是提供Janusgraph客户端遍历装置、设备及一种可读存储介质。
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
目前,传统方式下的Janusgraph客户端遍历流程示意图如图1所示,实现流程如下:
1、客户端将一个Gremlin Server查询抽象为一个RemoteStep单步,在RemoteStep里新建一个异步任务1,应用程序线程等待异步任务1完成。
2、在异步任务1中建立异步嵌套任务2,异步任务2的主要作用是把一些控制参数封装进消息内,如ARGS_BATCH_SIZE、ARGS_SCRIPT_EVAL_TIMEOUT等。
3、在异步任务2中建立嵌套异步任务3,异步任务3主要是选择连接并进行消息写入。实际上,由于当前Gremlin Server可以部署为一个集群,Janusgraph Gremlin Server会有多个,客户端对每个Janusgraph Gremlin Server都会维持一个连接,每一个连接都会有一个等待队列,用来存放即将要发送的数据。异步任务3的主要功能就是选择等待队列中数据较少的一个连接,并把任务附加到该连接的队列上。
在异步任务3中,首先向远程Janusgraph Gremlin Server提交查询任务,并从远程Janusgraph Gremlin Server中接收多个frame,组装成完整的消息。其中最后一个frame的事件标志位表明消息结束,其余frame的事件标志位表明消息尚未结束。在异步任务3等待Janusgraph Gremlin Server发送frame并组装的过程中,应用程序线程被阻塞。
异步任务3中,从所有frame组装完成消息后,标记异步任务3已完成,控制流向上流动,直至异步任务2完成,标记异步任务2已完成,控制流向上流动,直至异步任务1完成,同时把应用程序线程从阻塞状态变为就绪状态,等待cpu调度。
该种方式下在线程从异步任务1执行到异步任务2,再执行到异步任务3后,在异步任务3中将所有反馈结果信息接收完成后,再控制流向上流动,直至异步任务2完成,异步任务1完成后,应用程序线程才会从阻塞状态变为就绪状态,客户端接收到反馈的查询结果,线程阻塞时间较长相应地客户端等待时间也较长,应用程序响应慢,用户体验差。为避免上述情况,本申请中提出了一种Janusgraph客户端遍历方法,使得客户端不必等待消息的最后一个frame到达,在客户端收到查询结果帧后,便可以向应用程序线程发出通知,使得应用程序线程可以提前遍历并处理结果集,可以有效提升响应速度。
请参考图2,图2为本实施例提供的一种Janusgraph客户端遍历方法的流程图,该方法主要包括以下步骤:
步骤s110、Janusgraph客户端接收到图数据库查询请求后,生成RemoteStep异步任务,并向远程Janusgraph Gremlin Server提交查询任务;
Janusgraph客户端接收到图数据库查询请求后,生成RemoteStep异步任务,并向远程Janusgraph Gremlin Server提交查询任务的具体执行过程可以参照相关技术的介绍,本实施例中对此不做限定,具体可以包括以下步骤:
(1)客户端将一个Gremlin Server查询抽象为一个RemoteStep单步,在RemoteStep里新建一个异步任务1,应用程序线程等待异步任务1完成。
(2)在异步任务1中建立异步嵌套任务2,异步任务2的主要作用是把一些控制参数封装进消息内,如ARGS_BATCH_SIZE、ARGS_SCRIPT_EVAL_TIMEOUT等。
(3)在异步任务2中建立嵌套异步任务3,异步任务3主要是选择连接并进行消息写入。在异步任务3中,首先向远程Janusgraph Gremlin Server提交查询任务。
本实施例中仅以上述实现步骤为例进行介绍,其它实现方式下均可参照本实施例的介绍,在此不再赘述。
步骤s120、若接收到反馈的查询结果帧,将查询结果帧添加至预先引入的阻塞队列中;
在异步任务3中,从远程Janusgraph Gremlin Server中接收frame(查询结果帧),本实施例中无需等待接收到所有的frame,并将接收到的所有frame组装为完整的查询结果消息再启动后续的应用程序线程,为了加快应用程序线程响应时间,本实施例在RemoteStep步骤中取消使用join,即当前用户线程不在等待RemoteStep中的异步任务完成;并引入阻塞队列,当Client从Janusgraph Gremlin Server获取消息的一个frame后,不再等待该消息的所有frame到达,直接向上流动,把该frame的信息放入到阻塞队列中,这样用户线程不必等待消息完全到达,就可以开始遍历处理响应数据,加快了数据处理速度。
步骤s130、唤醒用户线程遍历阻塞队列中的查询结果帧进行数据处理。
当Client从Janusgraph Gremlin Server获取消息的一个frame后,不再等待该消息的所有frame到达,直接向上流动,把该frame的信息放入到阻塞队列中。
若阻塞队列内没有数据时,用户线程阻塞;一旦阻塞队列中添加有某消息的部分查询结果数据帧后,不等待该消息剩余数据帧到达,如图3所示,控制流立刻向上流动,唤醒用户线程进行数据处理,该种方式下仅在阻塞队列中没有数据的时候才进行线程阻塞,相比传统方法大大加快了数据的处理速度。这样,这样在队列上形成生产者-消费者模式,用户线程是消费者,RemoteStep的异步任务所在线程作为生产者,把原来以消息(包括所有查询结果)作为基本单位的批处理,变成以frame作为基本单位的批处理,这样用户线程不必等待消息完全到达,就可以开始遍历处理响应数据,加快了数据处理速度。使得底层收到较大的消息时,不再等待该消息完整到达便可以进行遍历处理,有助于减少内存消耗的同时提升响应速度。
需要说明的是,在唤醒用户线程根据部分消息(一部分查询结果帧)进行数据处理的过程可以参照传统方法中根据整个消息进行数据处理的过程,主要区别在于处理对象为整个消息还是部分消息,在此不再赘述。
基于上述介绍,本实施例提供的Janusgraph客户端遍历方法中,取消使用join并引入阻塞队列,当客户端从Janusgraph Gremlin Server获取到查询结果帧后,不在等待该消息的所有帧到达,直接向上流动,把该结果帧信息放入到阻塞队列中,把原来以消息作为基本单位的批处理,变成以帧作为基本单位的批处理,使得客户端不必等待消息的最后一个frame到达便可以向应用程序线程发出通知,应用程序线程可以提前遍历并处理结果集,加快了数据处理速度,也有助于提升用户体验。
上述实施例中提供了一种在阻塞队列中存在查询结果帧即触发用户线程对其进行数据处理的方法,而在一些应用线程下,存在一些数据处理的最低限制,为保障该些应用下的正常数据处理,在唤醒用户线程遍历阻塞队列中的查询结果帧进行数据处理之前,可以进一步执行以下步骤:
(1)判断阻塞队列中的帧数量是否达到触发值;
(2)若达到,执行唤醒用户线程遍历阻塞队列中的查询结果帧进行数据处理的步骤;
(3)若未达到,执行若接收到反馈的查询结果帧,将查询结果帧添加至预先引入的阻塞队列中的步骤。
本实施例中引入了数据帧的触发值,比如2个数据帧或者3个数据帧等,在阻塞队列中存储的数据帧的数量达到该触发值后再触发用户应用程序线程的处理,比如在阻塞队列中的数据帧达到2个后触发应用程序的处理,该种设置方法可以满足不同应用的数据处理要求,同时保障高效的数据处理速度。而其中,触发值的具体数值设定本实施例中不做限定,可以根据实际使用需要进行相应设定,在此不再赘述。
进一步地,基于上述实施例,在接收到反馈的查询结果帧之后,可以进一步执行以下步骤:
(1)判断查询结果帧是否为结束帧;
结束帧的判定可以根据帧中的事件标志位来判定,也可以从其他方便来判定,本实施例中对此不做限定。
(2)若是,结束查询结果帧的接收线程。
若查询结果帧非结束帧,则需要继续查询结果帧的接收线程,以便接收后续的查询结果,本实施例中对于该种情况下的处理方式不做限定,可以参照相关技术的介绍;若查询结果帧为结束帧,为了提升遍历速度,可以触发结束查询结果帧的接收线程,以提升应用的线程的流转速度,加速后续处理进程。
为了进一步提升线程流转的规范性,若查询结果帧为结束帧,可以进一步执行生成消息接收完成的提示信息的步骤,以实现线程间切换的有效区分。
当然,也可以不执行上述步骤,本实施例中对此不做限定。
请参考图4,图4为本实施例提供的Janusgraph客户端遍历装置的结构框图;该装置主要包括:任务提交单元110、队列添加单元120以及处理唤醒单元130。本实施例提供的Janusgraph客户端遍历装置可与上述Janusgraph客户端遍历方法相互对照。
其中,任务提交单元110主要用于Janusgraph客户端接收到图数据库查询请求后,生成RemoteStep异步任务,并向远程Janusgraph Gremlin Server提交查询任务;
队列添加单元120主要用于若接收到反馈的查询结果帧,将查询结果帧添加至预先引入的阻塞队列中;
处理唤醒单元130主要用于唤醒用户线程遍历阻塞队列中的查询结果帧进行数据处理。
可选地,Janusgraph客户端遍历装置还包括:触发判断单元;触发判断单元主要用于在唤醒用户线程遍历阻塞队列中的查询结果帧进行数据处理之前,判断阻塞队列中的帧数量是否达到触发值;若达到,触发处理唤醒单元;若未达到,触发队列添加单元。
可选地,Janusgraph客户端遍历装置还包括:结束判断单元,用于在接收到反馈的查询结果帧之后,判断查询结果帧是否为结束帧;若是,结束查询结果帧的接收线程。
可选地,Janusgraph客户端遍历装置还包括:提示单元,用于在查询结果帧为结束帧时,生成消息接收完成的提示信息。
本实施例提供一种Janusgraph客户端遍历设备,主要包括:存储器以及处理器。
其中,存储器用于存储程序;
处理器用于执行程序时实现如上述实施例介绍的Janusgraph客户端遍历方法的步骤,具体可参照上述Janusgraph客户端遍历方法的介绍。
请参考图5,为本实施例提供的Janusgraph客户端遍历设备的结构示意图,该Janusgraph客户端遍历设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(central processing units,CPU)322(例如,一个或一个以上处理器)和存储器332,存储器332存储有一个或一个以上的计算机应用程序342或数据344。其中,存储器332可以是短暂存储或持久存储。存储在存储器332的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对数据处理设备中的一系列指令操作。更进一步地,中央处理器322可以设置为与存储器332通信,在Janusgraph客户端遍历设备301上执行存储介质330中的一系列指令操作。
Janusgraph客户端遍历设备301还可以包括一个或一个以上电源326,一个或一个以上有线或无线网络接口350,一个或一个以上输入输出接口358,和/或,一个或一个以上操作***341,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
上面图1所描述的Janusgraph客户端遍历方法中的步骤可以由本实施例介绍的Janusgraph客户端遍历设备的结构实现。
本实施例公开一种可读存储介质,其上存储有程序,程序被处理器执行时实现如上述实施例介绍的Janusgraph客户端遍历方法的步骤,具体可参照上述实施例中对Janusgraph客户端遍历方法的介绍。
该可读存储介质具体可以为U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可存储程序代码的可读存储介质。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上对本申请所提供的Janusgraph客户端遍历方法、装置、设备及可读存储介质进行了详细介绍。本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

Claims (10)

1.一种Janusgraph客户端遍历方法,其特征在于,该方法包括:
Janusgraph客户端接收到图数据库查询请求后,生成RemoteStep异步任务,并向远程Janusgraph Gremlin Server提交查询任务;
若接收到反馈的查询结果帧,将所述查询结果帧添加至预先引入的阻塞队列中;
唤醒用户线程遍历所述阻塞队列中的查询结果帧进行数据处理;
其中,所述Janusgraph客户端接收到图数据库查询请求后,生成RemoteStep异步任务,并向远程Janusgraph Gremlin Server提交查询任务,包括:
Janusgraph客户端接收到图数据库查询请求后,将一个Gremlin Server查询抽象为一个RemoteStep单步,并在所述RemoteStep单步中新建一个异步任务1;
在所述异步任务1中建立用于将控制参数封装进消息的异步任务2;
在所述异步任务2中建立用于选择连接并进行消息写入的异步任务3;
在所述异步任务3中向远程Janusgraph Gremlin Server提交查询任务;
其中,所述若接收到反馈的查询结果帧,将所述查询结果帧添加至预先引入的阻塞队列中,包括:
每接收到一个反馈的查询结果帧,便将所述查询结果帧添加至预先引入的阻塞队列中。
2.如权利要求1所述的Janusgraph客户端遍历方法,其特征在于,在所述唤醒用户线程遍历所述阻塞队列中的查询结果帧进行数据处理之前,还包括:
判断所述阻塞队列中的帧数量是否达到触发值;
若达到,执行所述唤醒用户线程遍历所述阻塞队列中的查询结果帧进行数据处理的步骤;
若未达到,执行所述若接收到反馈的查询结果帧,将所述查询结果帧添加至预先引入的阻塞队列中的步骤。
3.如权利要求1所述的Janusgraph客户端遍历方法,其特征在于,在所述接收到反馈的查询结果帧之后,还包括:
判断所述查询结果帧是否为结束帧;
若是,结束查询结果帧的接收线程。
4.如权利要求3所述的Janusgraph客户端遍历方法,其特征在于,还包括:
若所述查询结果帧为结束帧,生成消息接收完成的提示信息。
5.一种Janusgraph客户端遍历装置,其特征在于,该装置包括:
任务提交单元,用于Janusgraph客户端接收到图数据库查询请求后,生成RemoteStep异步任务,并向远程Janusgraph Gremlin Server提交查询任务;
队列添加单元,用于若接收到反馈的查询结果帧,将所述查询结果帧添加至预先引入的阻塞队列中;
处理唤醒单元,用于唤醒用户线程遍历所述阻塞队列中的查询结果帧进行数据处理;
其中,所述任务提交单元,具体用于Janusgraph客户端接收到图数据库查询请求后,将一个Gremlin Server查询抽象为一个RemoteStep单步,并在所述RemoteStep单步中新建一个异步任务1;
在所述异步任务1中建立用于将控制参数封装进消息的异步任务2;
在所述异步任务2中建立用于选择连接并进行消息写入的异步任务3;
在所述异步任务3中向远程Janusgraph Gremlin Server提交查询任务;
其中,所述队列添加单元,具体用于每接收到一个反馈的查询结果帧,便将所述查询结果帧添加至预先引入的阻塞队列中。
6.如权利要求5所述的Janusgraph客户端遍历装置,其特征在于,还包括:触发判断单元;
所述触发判断单元,用于在所述唤醒用户线程遍历所述阻塞队列中的查询结果帧进行数据处理之前,判断所述阻塞队列中的帧数量是否达到触发值;若达到,触发所述处理唤醒单元;若未达到,触发所述队列添加单元。
7.如权利要求5所述的Janusgraph客户端遍历装置,其特征在于,还包括:结束判断单元,用于在所述接收到反馈的查询结果帧之后,判断所述查询结果帧是否为结束帧;若是,结束查询结果帧的接收线程。
8.如权利要求7所述的Janusgraph客户端遍历装置,其特征在于,还包括:提示单元,用于在所述查询结果帧为结束帧时,生成消息接收完成的提示信息。
9.一种Janusgraph客户端遍历设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至4任一项所述的Janusgraph客户端遍历方法的步骤。
10.一种可读存储介质,其特征在于,所述可读存储介质上存储有程序,所述程序被处理器执行时实现如权利要求1至4任一项所述的Janusgraph客户端遍历方法的步骤。
CN202011224815.XA 2020-11-05 2020-11-05 一种Janusgraph客户端遍历方法及相关组件 Active CN112433999B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011224815.XA CN112433999B (zh) 2020-11-05 2020-11-05 一种Janusgraph客户端遍历方法及相关组件

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011224815.XA CN112433999B (zh) 2020-11-05 2020-11-05 一种Janusgraph客户端遍历方法及相关组件

Publications (2)

Publication Number Publication Date
CN112433999A CN112433999A (zh) 2021-03-02
CN112433999B true CN112433999B (zh) 2023-12-22

Family

ID=74695493

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011224815.XA Active CN112433999B (zh) 2020-11-05 2020-11-05 一种Janusgraph客户端遍历方法及相关组件

Country Status (1)

Country Link
CN (1) CN112433999B (zh)

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018036149A1 (zh) * 2016-08-23 2018-03-01 深圳市鹰硕技术有限公司 一种多媒体交互教学***及方法
CN110955803A (zh) * 2019-11-15 2020-04-03 北京浪潮数据技术有限公司 基于图数据库的关系图谱的绘制方法、装置、设备及介质
CN111339334A (zh) * 2020-02-11 2020-06-26 支付宝(杭州)信息技术有限公司 异构图数据库的数据查询方法及其***
CN111523003A (zh) * 2020-04-27 2020-08-11 北京图特摩斯科技有限公司 一种以时序动态图谱为核心的数据应用方法及平台
CN111737012A (zh) * 2020-07-31 2020-10-02 腾讯科技(深圳)有限公司 数据包的同步方法、装置、设备及存储介质
CN111880934A (zh) * 2020-07-29 2020-11-03 北京浪潮数据技术有限公司 一种资源管理方法、装置、设备及可读存储介质

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018036149A1 (zh) * 2016-08-23 2018-03-01 深圳市鹰硕技术有限公司 一种多媒体交互教学***及方法
CN110955803A (zh) * 2019-11-15 2020-04-03 北京浪潮数据技术有限公司 基于图数据库的关系图谱的绘制方法、装置、设备及介质
CN111339334A (zh) * 2020-02-11 2020-06-26 支付宝(杭州)信息技术有限公司 异构图数据库的数据查询方法及其***
CN111523003A (zh) * 2020-04-27 2020-08-11 北京图特摩斯科技有限公司 一种以时序动态图谱为核心的数据应用方法及平台
CN111880934A (zh) * 2020-07-29 2020-11-03 北京浪潮数据技术有限公司 一种资源管理方法、装置、设备及可读存储介质
CN111737012A (zh) * 2020-07-31 2020-10-02 腾讯科技(深圳)有限公司 数据包的同步方法、装置、设备及存储介质

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
改进线程池的移动通信数据传输***优化;宋婷;荀亚玲;;计算机工程与应用(24);全文 *

Also Published As

Publication number Publication date
CN112433999A (zh) 2021-03-02

Similar Documents

Publication Publication Date Title
US8621031B2 (en) Method and apparatus using connection pools in communication networks
CN109936587B (zh) 控制方法、控制装置、电子设备及存储介质
US20090199210A1 (en) Transaction management in a web service messaging environment
CN105786603B (zh) 一种基于分布式的高并发业务处理***及方法
CN109413502B (zh) 多线程弹幕消息分发方法、装置、设备及存储介质
CN107479981B (zh) 一种基于异步调用实现同步调用的处理方法及装置
CN111026541B (zh) 渲染资源调度方法、装置、设备及存储介质
CN106603689B (zh) 基于分布式发布订阅消息***的数据处理方法及装置
CN108073414B (zh) 一种基于Jedis的将多线程并发请求合并批量提交并分发结果的实现方法
CN109660569B (zh) 一种多任务并发执行方法、存储介质、设备及***
US20090113440A1 (en) Multiple Queue Resource Manager
CN111104210A (zh) 一种任务处理方法、装置及计算机***
WO2016202201A1 (zh) 一种资源分配方法、装置和智能电视***
US20230275976A1 (en) Data processing method and apparatus, and computer-readable storage medium
CN109408216A (zh) 任务生成方法、装置、设备及存储介质
CN115562877A (zh) 分布式算力资源的编排方法、装置、设备及存储介质
JP4584935B2 (ja) 動作モデルベースマルチスレッドアーキテクチャ
CN112433999B (zh) 一种Janusgraph客户端遍历方法及相关组件
CN113436056B (zh) 渲染方法、装置、电子设备及存储介质
CN112448977A (zh) 分配任务的***、方法、设备和计算机可读介质
CN106453656B (zh) 一种集群主机选取方法及装置
US11886916B2 (en) System for adaptive multithreaded recalculation operations
CN109413489B (zh) 串行式的多线程弹幕分发方法、装置、设备和存储介质
CN113641515A (zh) 一种消息处理方法、装置、***、电子设备和存储介质
CN109246470B (zh) 多线程同步的弹幕分发方法、装置、设备及存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant