CN113608894A - 一种面向细颗粒度的算法组件运行方法 - Google Patents
一种面向细颗粒度的算法组件运行方法 Download PDFInfo
- Publication number
- CN113608894A CN113608894A CN202110890202.8A CN202110890202A CN113608894A CN 113608894 A CN113608894 A CN 113608894A CN 202110890202 A CN202110890202 A CN 202110890202A CN 113608894 A CN113608894 A CN 113608894A
- Authority
- CN
- China
- Prior art keywords
- channel
- thread
- algorithm
- data object
- branch
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Multimedia (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明公开了一种面向细颗粒度的算法组件运行方法,包括以下步骤:S1、创建一个为细颗粒度算法进行信息交换管理的通道线程;S2、在线程池中每一个细颗粒度算法的运行创建独立的分支线程,并监听通道;S3、由通道线程将业务算法定义信息写入通道中;S4、各细颗粒度算法的分支线程获得通道中信息,并由特有的优化算法判断是否由自己处理,将处理后结果写入通道线程中;S5、通道线程判断是否接收到结束运行逻辑信息;S6、算法逻辑运行结束,通道输出结果。本发明将各细颗粒度算法的参数信息与运行结果放入通道,提供信息交换的渠道,各算法在通道线程的控制下,按照特定逻辑完成整个算法的运行,极大的减少算法的配置时间,提高算法配置效率。
Description
技术领域
本发明属于算法运行领域或人事数据处理领域,特别涉及一种面向细颗粒度的算法组件运行方法。
背景技术
经过人事信息化管理系统在各企业中多年应用,已从结构化数据、非结构化数据方面形成了完整的数据集合,包括各类评价数据、报告文档、系统中的行为数据等。通过这些数据能从较多的方面得到人物的评价及特点。基于现有自然语言处理理论与技术,可以实现从文档到文本,从文本到标签的自动化抽取。通过特定算法的研制可以使机器对部分自然语句的性质进行分析。
但伴随应用场景的不同,各人事处理算法为了适应不同的结果需求,常常需要进行个性化的配置,这其中主要是参数修改与环境配置,以达到最优的适配效果。在算法进行配置优化的过程中,现行的技术一般是由人工去手动配置,根据运行结果动态的修改算法参数与运行环境,会造成不必要的人力与算力资源的浪费。
在实际的业务开发中,我们希望能有一套管理算法运行的框架,能够实现在不同的业务场景下,快速部署算法,运行算法。本算法运行框架的适用范围为算法平台的内部,算法平台主要是指数据处理平台中的算法库和提供的算法运行脚本,作为基础的算法运行框架,实现了算法组件的拆分与组合,各细颗粒度算法通过通道(Channel)交换处理信息,从而实现算法的逻辑化运行,达到快速适应不同业务需求的目的。
发明内容
本发明的目的在于克服现有技术的不足,提供一种使用通道信息交换技术,将各细颗粒度算法的参数信息与运行结果放入通道,提供信息交换的渠道,各算法在通道线程的控制下,按照特定逻辑完成整个算法的运行,极大的减少算法的配置时间,提高算法配置效率的面向细颗粒度的算法组件运行方法。
本发明的目的是通过以下技术方案来实现的:一种面向细颗粒度的算法组件运行方法,包括以下步骤:
S1、在线程池中创建一个为细颗粒度算法进行信息交换管理的通道线程;
S2、启动加载磁盘中的各细颗粒度算法代码文件,在线程池中每一个细颗粒度算法的运行创建独立的分支线程,并监听通道;
S3、由通道线程将业务算法定义信息写入通道中,作为启动参数信息;
S4、各细颗粒度算法的分支线程获得通道中信息,并由特有的优化算法判断是否由自己处理,将处理后结果写入通道线程中;
S5、通道线程判断是否接收到结束运行逻辑信息;
S6、算法逻辑运行结束,通道输出结果。
进一步地,所述步骤S1具体实现方法为:
S11、定义线程的属性变量,包括选择器Selector、服务通道ServerSocketChannel、服务端口port;
S12、线程初始化,给S11中的三个属性赋值:使用工具类方法得到选择器Selector与服务通道ServerSocketChannel,并给这两个属性赋值,将服务端口port赋值为整数值;
S13、编写通道线程对分支线程通道监听方法Function_1;
S14、编写通道线程读取通道消息方法Function_2;
S15、编写通道线程转发消息到分支线程通道的方法Function_3;
S16、编写主方法:创建通道线程对象,并开启分支线程通道监听方法Function_1。
进一步地,所述步骤S13中的方法Function_1的实现步骤为:
S131、进入循环处理,判断选择器Selector中是否有事件,若有则执行S132,否则结束;
S132、得到选择器Selector中的事件集合,并遍历事件集合,进入步骤S133与S134;
S133、若当前遍历的事件为连接事件,给服务通道ServerSocketChannel绑定服务端口port并设置为非阻塞运行模式,并将服务通道ServerSocketChannel注册到选择器Selector,同时将服务通道ServerSocketChannel设置为接受连接事件,表示该线程的监听已经建立,可以和其他通道进行连接操作;并在选择器Selector中将该事件设置为读就绪事件;
S134、若事件为读就绪事件,则调用方法Function_2,将该事件的描述符Selectionkey传入Function_2。
进一步地,所述方法Function_2的实现步骤为:
S141、根据传入事件得到该事件通道Channel1;
S142、读取该事件通道Channel1中数据,保存为数据对象T1;根据数据对象T1的消息头属性,判断数据对象T1是否可以在通道中传输,若数据对象可以在通道中传输,则进一步判断消息类型,否则向通道中返回错误信息;根据数据对象T1的消息类型属性,判断是算法结束消息类型或继续传输消息类型:若为算法结束消息类型,则调用工具类关闭所有通道线程,结束算法;若为继续传输消息类型,则将数据对象T1以及该事件通道Channel1传入方法Function_3,调用方法Function_3将数据对象T1转发给其他通道。
进一步地,所述方法Function_3的实现步骤为:
S151、得到选择器Selector中的通道集合,并开始遍历集合;
S152、判断事件通道Channel1是否为当前通道集合遍历出的通道,若否,则将数据对象T1写入该通道,若是则不操作。
进一步地,所述步骤S2包括以下子步骤:
S21、定义线程的属性变量,包括选择器Selector,通道线程服务器地址HOST、通道线程服务端口PORT、服务通道SocketChannel;
S22、线程初始化:给服务通道SocketChannel绑定通道线程服务器地址HOST和端口PORT并设置为非阻塞模式,并将服务通道SocketChannel注册到选择器Selector,同时设置为读就绪事件;
S23、编写分支线程读取通道信息方法Function_21,读取通道中的数据对象,进行对象解析操作;
S24、编写分支线程发送消息方法Function_22,将对象解析后的数据对象写入该分支线程的通道中;
S25、编写该分支线程启动方法Function_23。
进一步地,所述方法Function_21的实现步骤为:
S231、得到选择器Selector中的通道集合,判断集合是否为空,若否则开始遍历集合,若是则结束操作;
S232、得到当前遍历值的通道,并读取通道中数据,假设读取到数据对象T2,通过数据对象T2的算法名属性判断数据对象是否为该细颗粒度算法处理参数,若否则丢弃;否则进入步骤S233;
S233、调用细颗粒度算法模块,传入步骤S232中读取的数据对象,开始由该细颗粒度算法进行处理;
S234、获取步骤S233的处理结果,调用分支线程发送消息方法Function_22;
所述步骤S24中方法Function_22的实现方法为:得到步骤S234传入的细颗粒度算法处理后的结果,封装该处理结果为数据对象T3,将数据对象T3放入通道中;
所述步骤S25中方法Function_23的实现方法为:创建该线程对象,并为该对象创建分支线程,在分支线程中进入循环处理,启动分支线程读取通道信息方法Function_21。
进一步地,所述步骤S3包括以下子步骤:
S31、加载磁盘中的业务定义信息,解析信息,将解析后的信息封装为通道数据对象;
S32、将解析后的业务定义信息对象写入服务通道SocketChannel中,由通道线程进行对象判断操作与转发处理,等待各细颗粒度算法分支线程的处理结果。
进一步地,所述步骤S4包括以下子步骤:
S41、通道线程调用通道线程读取通道消息方法Function_2读取服务通道SocketChannel1中的数据对象T;
S42、调用通道线程转发消息到分支线程通道的方法Function_3将该数据对象T转发给各分支线程通道SocketChannel;
S43、各细颗粒度算法执行线程读取各自通道SocketChannel中的数据对象T,进行对象解析;具体方法为:获取数据对象T,读取T对象的算法名属性,判断该算法名是否与当前细颗粒度算法名一致;若不一致,则丢弃数据对象T,否则进入S44;
S44、等待步骤S43判断结果,得到数据对象T,进入本线程的细颗粒度算法处理,得到处理结果进行对象封装,封装为管道数据对象T;
S45、调用通道线程转发消息到分支线程通道的方法Function_3将步骤S42处理结果对象写入到该分支线程的SocketChannel中,通过通道线程的转发方法Function_3,由其负责转发给其他分支线程操作。
进一步地,所述步骤S5具体实现方法为:对步骤S142读取到的通道SocketChannel中的数据对象T1进行解析;具体包括以下分步骤:
S51、读取数据对象T1中的消息头属性,判断该数据对象是否符合管道数据对象格式;若否,则丢弃数据对象T1,否则进入下一步骤;
S52、读取数据对象T1中的消息类型属性,判断该消息类型是结束消息类型还是继续传输消息类型:若为结束消息类型,则使用工具类结束本算法的所有线程,否则进入下一步骤;
S53、得到数据对象T1,将数据对象T1通过方法Function_3,发送给其他通道。
本发明的有益效果是:
1、本发明通过对细颗粒度算法的运行提供一个高效的运行框架,使用通道信息交换技术,将各细颗粒度算法的参数信息与运行结果放入通道,提供信息交换的渠道,各算法在通道线程的控制下,按照特定逻辑完成整个算法的运行,得出结果。在业务场景变换的条件下,极大的减少算法的配置时间,提高算法配置效率。
2、提出了细颗粒算法的组合运行方法,使用通道技术监控各算法的运行信息,配合整体算法完成一个完整的逻辑运行周期。使得通道中的信息交换效率得到了提升,能够很好的解决开发人员对于算法配置运行速度慢的缺点,实现不同业务场景下快速部署的目标。
附图说明
图1为本发明的面向细颗粒度的算法组件运行方法的流程图;
图2为本发明各细颗粒度算法的分支线程获得通道中信息,并由特有的优化算法判断是否由自己处理,将处理后结果写入通道线程中的流程图。
具体实施方式
本文以选择器模型为基础模型,作如下概念介绍:
事件events:通道Channel的状态描述,表示该通道当前的状态,以便进行相应的操作。
通道Channel:信息交换的媒介,通道中的数据交换可以同时实现读写功能,也可以实现异步读写。本发明中所使用的通道ServerSocketChannel和通道SocketChannel,ServerSocketChannel用于在通道线程中监听新的算法分支线程连接,SocketChannel用于通道的读写操作。
选择器Selector:多个通道Channel以事件的方式可以注册到一个Selector上,Selector能够检测多个注册的通道Channel上是否有事件发生。若有事件发生,便获取事件然后针对各事件进行相应的处理。这样便实现单线程管理多个通道。
非阻塞模式:是指利用socket事件的消息机制,通道线程与各分支线程之间的数据交换处于异步状态。
通道中数据对象的属性:消息头(messageHead),消息类型(messageType),请求id,算法名(algName),参数对象集合(paramters),参数类型集合(paramTypes)。
下面结合附图进一步说明本发明的技术方案。
如图1所示,本发明的一种面向细颗粒度的算法组件运行方法,包括以下步骤:
S1、在线程池中创建一个为细颗粒度算法进行信息交换管理的通道线程;
具体实现方法为:
S11、定义线程的属性变量,包括选择器Selector、服务通道ServerSocketChannel、服务端口port;
S12、线程初始化,给S11中的三个属性赋值:使用工具类方法得到选择器Selector与服务通道ServerSocketChannel,并给这两个属性赋值,将服务端口port赋值为整数值;
S13、编写通道线程对分支线程通道监听方法Function_1;方法Function_1的实现步骤为:
S131、进入循环处理,调用java.nio包下的select()方法判断选择器Selector中是否有事件,若有则执行S132,否则结束;
S132、调用java.nio包下的selectedKeys()方法得到选择器Selector中的事件集合,并遍历事件集合,进入步骤S133与S134;
S133、若当前遍历的事件为连接事件,给服务通道ServerSocketChannel绑定服务端口port并设置为非阻塞运行模式,并调用java.nio包下的register()方法将服务通道ServerSocketChannel注册到选择器Selector,同时将服务通道ServerSocketChannel设置为接受连接事件,表示该线程的监听已经建立,可以和其他通道进行连接操作;并在选择器Selector中将该事件设置为读就绪事件SelectionKey.OP_READ,表示该事件中通道可以进行读操作;
S134、若事件为读就绪事件SelectionKey.OP_READ,即此时通道中有信息或对象,可以进行读操作,则调用方法Function_2,将该事件的描述符Selectionkey(该属性由java.nio包下的Selector类定义)传入Function_2。
S14、编写通道线程读取通道消息方法Function_2;方法Function_2的实现步骤为:
S141、根据传入事件得到该事件通道Channel1;
S142、读取该事件通道Channel1中数据,保存为数据对象T1;根据数据对象T1的消息头属性,判断数据对象T1是否可以在通道中传输,若数据对象可以在通道中传输,则进一步判断消息类型,否则向通道中返回错误信息;根据数据对象T1的消息类型属性,判断是算法结束消息类型或继续传输消息类型:若为算法结束消息类型,则调用工具类关闭所有通道线程,结束算法;若为继续传输消息类型,则将数据对象T1以及该事件通道Channel1传入方法Function_3,调用方法Function_3将数据对象T1转发给其他通道。方法Function_3需要该参数做判断,因为要排除该通道,所以将其作为参数放入到方法Function_3中。方法Function_3中先获取到所有的通道,转发时依次判断遍历到的通道是否为该参数通道,不是才给遍历到的通道转发该对象,因此只转发数据对象T1。
S15、编写通道线程转发消息到分支线程通道的方法Function_3;方法Function_3的实现步骤为:
S151、根据选择器中java.nio包下的的keys()方法得到选择器Selector中的通道集合,并开始遍历集合;
S152、判断事件通道Channel1是否为当前通道集合遍历出的通道,若否,则将数据对象T1写入该通道,若是则不操;此步骤即将通道Channel1中的数据发送给了其他分支通道,实现了各线程之间的数据交换。
S16、编写主方法:创建通道线程对象,并开启分支线程通道监听方法Function_1。
S2、启动加载磁盘中的各细颗粒度算法代码文件,在线程池中每一个细颗粒度算法的运行创建独立的分支线程,并监听通道;
包括以下子步骤:
S21、定义线程的属性变量,包括选择器Selector,通道线程服务器地址HOST、通道线程服务端口PORT、服务通道SocketChannel;
S22、线程初始化:使用java.nio包下的open()方法给服务通道SocketChannel绑定通道线程服务器地址HOST和端口PORT并设置为非阻塞模式,并将服务通道SocketChannel注册到选择器Selector,同时设置为读就绪事件SelectionKey.OP_READ;这一步骤的主要作用是为该分支线程配置属性,实现和通道线程的信息交换。
S23、编写分支线程读取通道信息方法Function_21,读取通道中的数据对象,进行对象解析操作;方法Function_21的实现步骤为:
S231、使用java.nio包下的selectedKeys()方法得到选择器Selector中的通道集合,判断集合是否为空,若否则开始遍历集合,若是则结束操作;
S232、使用java.nio包下的channel()方法得到当前遍历值的通道,并读取通道中数据,假设读取到数据对象T2,通过数据对象T2的算法名属性判断数据对象是否为该细颗粒度算法处理参数,若否则丢弃;否则进入步骤S233;
S233、经过以上步骤之后,表明该数据对象需要该分支线程处理,加载细颗粒度算法进入该线程,调用细颗粒度算法模块,传入步骤S232中读取的数据对象,开始由该细颗粒度算法进行处理;
S234、获取步骤S233的处理结果,调用分支线程发送消息方法Function_22,将该细颗粒度算法的处理结果写入该通道SocketChannel中;
S24、编写分支线程发送消息方法Function_22,将对象解析后的数据对象写入该分支线程的通道中;方法Function_22的实现方法为:得到步骤S234传入的细颗粒度算法处理后的结果,封装该处理结果为数据对象T3,调用java.nio包下的write()方法将数据对象T3放入通道中;
S25、编写该分支线程启动方法Function_23;方法Function_23的实现方法为:创建该线程对象,并为该对象创建分支线程,在分支线程中进入循环处理,启动分支线程读取通道信息方法Function_21,并运行该线程。该步骤主要实现分支线程对通道线程通道ServerSocketChannel的监听,随时准备读取通道SocketChannel中的数据进行判断处理。
S3、由通道线程将业务算法定义信息写入通道中,作为启动参数信息;包括以下子步骤:
S31、加载磁盘中的业务定义信息,解析信息,将解析后的信息封装为通道数据对象;具体包括以下分步骤:
S311、该业务定义信息的格式可以是xml文件格式、properties文件格式或json文件格式等等。获取磁盘中的业务定义信息文件位置。
S312、根据定义信息文件位置,加载该定义信息文件。读取该文件中的属性变量与对应的属性值。
S313、将读取的业务定义信息封装成通道中传输的数据对象格式,并填充好消息头(messageHead),消息类型(messageType),请求id,算法名(algName),参数对象集合(paramters),参数类型集合(paramTypes)。
S32、将解析后的业务定义信息对象写入服务通道SocketChannel中,由通道线程进行对象判断操作(主要判断该数据对象的消息头与消息类型)与转发处理,等待各细颗粒度算法分支线程的处理结果。
S4、各细颗粒度算法的分支线程获得通道中信息,并由特有的优化算法判断是否由自己处理,将处理后结果写入通道线程中;如图2所示,具体包括以下子步骤:
S41、通道线程调用通道线程读取通道消息方法Function_2读取服务通道SocketChannel1中的数据对象T;
S42、调用通道线程转发消息到分支线程通道的方法Function_3将该数据对象T转发给各分支线程通道SocketChannel;
S43、各细颗粒度算法执行线程读取各自通道SocketChannel中的数据对象T,进行对象解析;具体方法为:获取数据对象T,读取T对象的算法名(algName)属性,判断该算法名是否与当前细颗粒度算法名一致;若不一致,则丢弃数据对象T,否则进入S44;
S44、等待步骤S43判断结果,得到数据对象T,进入本线程的细颗粒度算法处理,得到处理结果进行对象封装,封装为管道数据对象T;封装方法为:得到该细颗粒度算法处理结果,将处理结果封装为数据对象的参数对象集合,继续填充数据对象的消息头、消息类型、请求id、算法名属性,主要目的是作为下一算法的处理对象。
S45、调用通道线程转发消息到分支线程通道的方法Function_3将步骤S42处理结果对象写入到该分支线程的SocketChannel中,通过通道线程的转发方法Function_3,由其负责转发给其他分支线程操作。通道线程等待各分支线程的处理结果将结果写入其他分支线程通道SocketChannel中。
为了实现通道中的数据的交换,步骤S41、S42、S43、S44、S45应进入循环,实现各分支线程的处理数据在各分支线程间进行快速的交换操作。
S5、通道线程判断是否接收到结束运行逻辑信息;步骤S5与S4步骤并行处理,具体实现方法为:对步骤S142读取到的通道SocketChannel中的数据对象T1进行解析;具体包括以下分步骤:
S51、读取数据对象T1中的消息头属性,判断该数据对象是否符合管道数据对象格式;若否,则丢弃数据对象T1,否则进入下一步骤;
S52、读取数据对象T1中的消息类型属性,判断该消息类型是结束消息类型还是继续传输消息类型:若为结束消息类型,则使用工具类结束本算法的所有线程,否则进入下一步骤;
S53、得到数据对象T1,将数据对象T1通过方法Function_3,发送给其他通道。
S6、算法逻辑运行结束,通道输出结果:由步骤S512调用结束线程工具类,管道输出最终的处理结果,并结束通道线程和各分支线程;各分支线程收到消息之后作结束线程操作,并输出最终的处理结果。
本领域的普通技术人员将会意识到,这里所述的实施例是为了帮助读者理解本发明的原理,应被理解为本发明的保护范围并不局限于这样的特别陈述和实施例。本领域的普通技术人员可以根据本发明公开的这些技术启示做出各种不脱离本发明实质的其它各种具体变形和组合,这些变形和组合仍然在本发明的保护范围内。
Claims (10)
1.一种面向细颗粒度的算法组件运行方法,其特征在于,包括以下步骤:
S1、在线程池中创建一个为细颗粒度算法进行信息交换管理的通道线程;
S2、启动加载磁盘中的各细颗粒度算法代码文件,在线程池中每一个细颗粒度算法的运行创建独立的分支线程,并监听通道;
S3、由通道线程将业务算法定义信息写入通道中,作为启动参数信息;
S4、各细颗粒度算法的分支线程获得通道中信息,并由特有的优化算法判断是否由自己处理,将处理后结果写入通道线程中;
S5、通道线程判断是否接收到结束运行逻辑信息;
S6、算法逻辑运行结束,通道输出结果。
2.根据权利要求1所述的一种面向细颗粒度的算法组件运行方法,其特征在于,所述步骤S1具体实现方法为:
S11、定义线程的属性变量,包括选择器Selector、服务通道ServerSocketChannel、服务端口port;
S12、线程初始化,给S11中的三个属性赋值:使用工具类方法得到选择器Selector与服务通道ServerSocketChannel,并给这两个属性赋值,将服务端口port赋值为整数值;
S13、编写通道线程对分支线程通道监听方法Function_1;
S14、编写通道线程读取通道消息方法Function_2;
S15、编写通道线程转发消息到分支线程通道的方法Function_3;
S16、编写主方法:创建通道线程对象,并开启分支线程通道监听方法Function_1。
3.根据权利要求2所述的一种面向细颗粒度的算法组件运行方法,其特征在于,所述步骤S13中的方法Function_1的实现步骤为:
S131、进入循环处理,判断选择器Selector中是否有事件,若有则执行S132,否则结束;
S132、得到选择器Selector中的事件集合,并遍历事件集合,进入步骤S133与S134;
S133、若当前遍历的事件为连接事件,给服务通道ServerSocketChannel绑定服务端口port并设置为非阻塞运行模式,并将服务通道ServerSocketChannel注册到选择器Selector,同时将服务通道ServerSocketChannel设置为接受连接事件,表示该线程的监听已经建立,可以和其他通道进行连接操作;并在选择器Selector中将该事件设置为读就绪事件;
S134、若事件为读就绪事件,则调用方法Function_2,将该事件的描述符Selectionkey传入Function_2。
4.根据权利要求2所述的一种面向细颗粒度的算法组件运行方法,其特征在于,所述步骤S14中的方法Function_2的实现步骤为:
S141、根据传入事件得到该事件通道Channel1;
S142、读取该事件通道Channel1中数据,保存为数据对象T1;根据数据对象T1的消息头属性,判断数据对象T1是否可以在通道中传输,若数据对象可以在通道中传输,则进一步判断消息类型,否则向通道中返回错误信息;根据数据对象T1的消息类型属性,判断是算法结束消息类型或继续传输消息类型:若为算法结束消息类型,则调用工具类关闭所有通道线程,结束算法;若为继续传输消息类型,则将数据对象T1以及该事件通道Channel1传入方法Function_3,调用方法Function_3将数据对象T1转发给其他通道。
5.根据权利要求2所述的一种面向细颗粒度的算法组件运行方法,其特征在于,步骤S15中的方法Function_3的实现步骤为:
S151、得到选择器Selector中的通道集合,并开始遍历集合;
S152、判断事件通道Channel1是否为当前通道集合遍历出的通道,若否,则将数据对象T1写入该通道,若是则不操作。
6.根据权利要求1所述的一种面向细颗粒度的算法组件运行方法,其特征在于,所述步骤S2包括以下子步骤:
S21、定义线程的属性变量,包括选择器Selector,通道线程服务器地址HOST、通道线程服务端口PORT、服务通道SocketChannel;
S22、线程初始化:给服务通道SocketChannel绑定通道线程服务器地址HOST和端口PORT并设置为非阻塞模式,并将服务通道SocketChannel注册到选择器Selector,同时设置为读就绪事件;
S23、编写分支线程读取通道信息方法Function_21,读取通道中的数据对象,进行对象解析操作;
S24、编写分支线程发送消息方法Function_22,将对象解析后的数据对象写入该分支线程的通道中;
S25、编写该分支线程启动方法Function_23。
7.根据权利要求6所述的一种面向细颗粒度的算法组件运行方法,其特征在于,所述步骤S23中方法Function_21的实现步骤为:
S231、得到选择器Selector中的通道集合,判断集合是否为空,若否则开始遍历集合,若是则结束操作;
S232、得到当前遍历值的通道,并读取通道中数据,假设读取到数据对象T2,通过数据对象T2的算法名属性判断数据对象是否为该细颗粒度算法处理参数,若否则丢弃;否则进入步骤S233;
S233、调用细颗粒度算法模块,传入步骤S232中读取的数据对象,开始由该细颗粒度算法进行处理;
S234、获取步骤S233的处理结果,调用分支线程发送消息方法Function_22;
所述步骤S24中方法Function_22的实现方法为:得到步骤S234传入的细颗粒度算法处理后的结果,封装该处理结果为数据对象T3,将数据对象T3放入通道中;
所述步骤S25中方法Function_23的实现方法为:创建该线程对象,并为该对象创建分支线程,在分支线程中进入循环处理,启动分支线程读取通道信息方法Function_21。
8.根据权利要求6所述的一种面向细颗粒度的算法组件运行方法,其特征在于,所述步骤S3包括以下子步骤:
S31、加载磁盘中的业务定义信息,解析信息,将解析后的信息封装为通道数据对象;
S32、将解析后的业务定义信息对象写入服务通道SocketChannel中,由通道线程进行对象判断操作与转发处理,等待各细颗粒度算法分支线程的处理结果。
9.根据权利要求1所述的一种面向细颗粒度的算法组件运行方法,其特征在于,所述步骤S4包括以下子步骤:
S41、通道线程调用通道线程读取通道消息方法Function_2读取服务通道SocketChannel1中的数据对象T;
S42、调用通道线程转发消息到分支线程通道的方法Function_3将该数据对象T转发给各分支线程通道SocketChannel;
S43、各细颗粒度算法执行线程读取各自通道SocketChannel中的数据对象T,进行对象解析;具体方法为:获取数据对象T,读取T对象的算法名属性,判断该算法名是否与当前细颗粒度算法名一致;若不一致,则丢弃数据对象T,否则进入S44;
S44、等待步骤S43判断结果,得到数据对象T,进入本线程的细颗粒度算法处理,得到处理结果进行对象封装,封装为管道数据对象T;
S45、调用通道线程转发消息到分支线程通道的方法Function_3将步骤S42处理结果对象写入到该分支线程的SocketChannel中,通过通道线程的转发方法Function_3,由其负责转发给其他分支线程操作。
10.根据权利要求4所述的一种面向细颗粒度的算法组件运行方法,其特征在于,所述步骤S5具体实现方法为:对步骤S142读取到的通道SocketChannel中的数据对象T1进行解析;具体包括以下分步骤:
S51、读取数据对象T1中的消息头属性,判断该数据对象是否符合管道数据对象格式;若否,则丢弃数据对象T1,否则进入下一步骤;
S52、读取数据对象T1中的消息类型属性,判断该消息类型是结束消息类型还是继续传输消息类型:若为结束消息类型,则使用工具类结束本算法的所有线程,否则进入下一步骤;
S53、得到数据对象T1,将数据对象T1通过方法Function_3,发送给其他通道。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110890202.8A CN113608894B (zh) | 2021-08-04 | 2021-08-04 | 一种面向细颗粒度的算法组件运行方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110890202.8A CN113608894B (zh) | 2021-08-04 | 2021-08-04 | 一种面向细颗粒度的算法组件运行方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113608894A true CN113608894A (zh) | 2021-11-05 |
CN113608894B CN113608894B (zh) | 2023-03-14 |
Family
ID=78306744
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110890202.8A Active CN113608894B (zh) | 2021-08-04 | 2021-08-04 | 一种面向细颗粒度的算法组件运行方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113608894B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294347A1 (en) * | 2003-02-19 | 2006-12-28 | Xiang Zou | Programmable event driven yield mechanism which may activate service threads |
US20120089812A1 (en) * | 2009-06-12 | 2012-04-12 | Graeme Roy Smith | Shared resource multi-thread processor array |
US20160162406A1 (en) * | 2008-11-24 | 2016-06-09 | Fernando Latorre | Systems, Methods, and Apparatuses to Decompose a Sequential Program Into Multiple Threads, Execute Said Threads, and Reconstruct the Sequential Execution |
US20160179865A1 (en) * | 2014-12-17 | 2016-06-23 | Yahoo! Inc. | Method and system for concurrency control in log-structured merge data stores |
CN106850829A (zh) * | 2017-02-28 | 2017-06-13 | 苏州星熙数据科技有限公司 | 一种基于非阻塞通信的微服务系统设计方法 |
CN107015861A (zh) * | 2016-11-07 | 2017-08-04 | 珠江水利委员会珠江水利科学研究院 | 一种基于Fork/Join框架的梯级水库群优化调度多核并行计算设计方法 |
CN107016295A (zh) * | 2017-03-01 | 2017-08-04 | 武汉斗鱼网络科技有限公司 | 一种实现数据加解密的方法及系统 |
CN109656861A (zh) * | 2018-10-22 | 2019-04-19 | 上海无线电设备研究所 | 一种基于srio总线的多核并行信号处理系统及方法 |
CN111722944A (zh) * | 2020-06-15 | 2020-09-29 | 哈工大机器人(合肥)国际创新研究院 | 一种基于nio的airt-ros通信方法及系统 |
CN112306678A (zh) * | 2020-10-22 | 2021-02-02 | 中国海洋大学 | 一种基于异构众核处理器的算法并行处理方法及系统 |
US20210120024A1 (en) * | 2018-11-30 | 2021-04-22 | Raytheon Company | Bus monitoring system for detecting anomalies indicative of malfunctions or cyber-attacks |
-
2021
- 2021-08-04 CN CN202110890202.8A patent/CN113608894B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060294347A1 (en) * | 2003-02-19 | 2006-12-28 | Xiang Zou | Programmable event driven yield mechanism which may activate service threads |
US20160162406A1 (en) * | 2008-11-24 | 2016-06-09 | Fernando Latorre | Systems, Methods, and Apparatuses to Decompose a Sequential Program Into Multiple Threads, Execute Said Threads, and Reconstruct the Sequential Execution |
US20120089812A1 (en) * | 2009-06-12 | 2012-04-12 | Graeme Roy Smith | Shared resource multi-thread processor array |
US20160179865A1 (en) * | 2014-12-17 | 2016-06-23 | Yahoo! Inc. | Method and system for concurrency control in log-structured merge data stores |
CN107015861A (zh) * | 2016-11-07 | 2017-08-04 | 珠江水利委员会珠江水利科学研究院 | 一种基于Fork/Join框架的梯级水库群优化调度多核并行计算设计方法 |
CN106850829A (zh) * | 2017-02-28 | 2017-06-13 | 苏州星熙数据科技有限公司 | 一种基于非阻塞通信的微服务系统设计方法 |
CN107016295A (zh) * | 2017-03-01 | 2017-08-04 | 武汉斗鱼网络科技有限公司 | 一种实现数据加解密的方法及系统 |
CN109656861A (zh) * | 2018-10-22 | 2019-04-19 | 上海无线电设备研究所 | 一种基于srio总线的多核并行信号处理系统及方法 |
US20210120024A1 (en) * | 2018-11-30 | 2021-04-22 | Raytheon Company | Bus monitoring system for detecting anomalies indicative of malfunctions or cyber-attacks |
CN111722944A (zh) * | 2020-06-15 | 2020-09-29 | 哈工大机器人(合肥)国际创新研究院 | 一种基于nio的airt-ros通信方法及系统 |
CN112306678A (zh) * | 2020-10-22 | 2021-02-02 | 中国海洋大学 | 一种基于异构众核处理器的算法并行处理方法及系统 |
Non-Patent Citations (3)
Title |
---|
PAVAN BALAJI 等: "Fine-Grained Multithreading Support for Hybrid Threaded MPI Programming" * |
刘弢 等: "数据流Java并行程序设计模型的设计、实现及运行时优化" * |
方兴 等: "支持细粒度并行性开发的多核DSP快速核间通信机制" * |
Also Published As
Publication number | Publication date |
---|---|
CN113608894B (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2023071075A1 (zh) | 机器学习模型自动化生产线构建方法及系统 | |
CN106250199B (zh) | 一种多语言云编译的动态微服务调用方法及装置 | |
US8010844B2 (en) | File mutation method and system using file section information and mutation rules | |
CN105912455A (zh) | 业务执行方法及服务器 | |
US20060265469A1 (en) | XML based scripting framework, and methods of providing automated interactions with remote systems | |
WO2024032781A1 (zh) | 一种算法测试方法、装置和存储介质 | |
CN114896038A (zh) | 管理和调度数据分析算法的方法及系统 | |
CN103927244B (zh) | 一种基于动态代理实现的插件调度过程监控的方法 | |
CN110989549B (zh) | 用于列车控制系统的软件测试通用自动化控制方法及装置 | |
CN113608894B (zh) | 一种面向细颗粒度的算法组件运行方法 | |
CN112988597B (zh) | 一种基于状态迁移的自动测试可视化方法及系统 | |
CN117252559B (zh) | 业务流程的处理方法、装置、计算机设备、存储介质 | |
CN111258940A (zh) | 配置方法、业务审核方法及系统、设备、存储介质 | |
CN118227316A (zh) | 数据处理方法、装置和分布式数据处理系统 | |
CN111736844A (zh) | 一种数据库云服务标准接口及实现方法 | |
CN117874037A (zh) | 基于DataX框架支持Kafka读写方法和系统 | |
CN112291254B (zh) | 一种用于可靠交易的消息处理方法及装置 | |
CN115426300A (zh) | 一种基于数据包自动化测试np芯片api接口的方法 | |
CN116319245B (zh) | 面向5g协议的分布式测试系统 | |
CN111966573A (zh) | 一种自动巡检方法、装置、存储介质及终端 | |
CN114428747A (zh) | 一种用户界面测试方法、装置、服务器及存储介质 | |
CN109086200B (zh) | 一种基于安卓虚拟机修改的有效测试框架 | |
CN113031574B (zh) | 一种设备运行过程复现方法及系统 | |
CN115168316A (zh) | 一种批量文本的处理方法、装置及设备 | |
US20240220394A1 (en) | Method and apparatus for outputting running data of effect |
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 |