CN112749023A - 一种信息的处理方法、装置、设备及系统 - Google Patents

一种信息的处理方法、装置、设备及系统 Download PDF

Info

Publication number
CN112749023A
CN112749023A CN201911044293.2A CN201911044293A CN112749023A CN 112749023 A CN112749023 A CN 112749023A CN 201911044293 A CN201911044293 A CN 201911044293A CN 112749023 A CN112749023 A CN 112749023A
Authority
CN
China
Prior art keywords
service
eventfd
file descriptor
shared file
request
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
Application number
CN201911044293.2A
Other languages
English (en)
Other versions
CN112749023B (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.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding 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 Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201911044293.2A priority Critical patent/CN112749023B/zh
Publication of CN112749023A publication Critical patent/CN112749023A/zh
Application granted granted Critical
Publication of CN112749023B publication Critical patent/CN112749023B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/54Interprogram communication
    • G06F9/544Buffers; Shared memory; Pipes

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer And Data Communications (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例公开了一种信息的处理方法、装置、设备及系统,该系统包括客户端进程、共享Eventfd、共享内存和服务进程,其中:客户端进程,用于基于目标业务数据生成与服务进程进行交互的交互请求,交互请求中包括目标业务数据对应的服务业务标识和进行交互时的目标会话标识,将该交互请求放入共享内存中,并触发服务业务标识对应的服务线程的共享Eventfd执行该交互请求,并触发共享目标会话标识对应的目标会话控制的共享Eventfd;服务进程,用于在监听到该服务线程的共享Eventfd被触发时,从共享内存中获取该交互请求,并对该交互请求进行处理,触发目标会话控制的共享Eventfd执行;客户端进程,用于监听目标会话控制的共享Eventfd是否被触发。

Description

一种信息的处理方法、装置、设备及系统
技术领域
本说明书涉及计算机技术领域,尤其涉及一种信息的处理方法、装置、设备及系统。
背景技术
在多应用容器引擎Docker场景下,由于无法做到每个Docker独占一个设备,所以采用运行于宿主机上的Primary进程占用硬件(如FPGA设备等)。在Docker内运行Secondary进程,通过进程间通信跟Primary的交互来实现对硬件的访问,Secondary和Primary之间的交互效率是高QPS(Query Per Second,每秒查询率)的关键路径。
进程间交互存在多种方式,针对Linux操作系统,Linux操作系统可以支持多种IPC机制,其中,效率最高的当属共享内存方式,但是,共享内存方式缺少一种进程间触发的辅助机制,即在交互的数据准备完成后,无法触发服务进程响应并处理共享内存中的相关数据,因而就需要一个高效的触发机制来触发服务进程响应并处理共享内存中的相关数据。
发明内容
本说明书实施例的目的是提供一种信息的处理方法、装置、设备及系统,以提供一种高效的触发机制来触发服务进程响应并处理共享内存中的相关数据。
为了实现上述技术方案,本说明书实施例是这样实现的:
本说明书实施例提供的一种信息的处理系统,所述系统包括客户端进程、共享文件描述符Eventfd、共享内存和服务进程,其中:
所述客户端进程,用于基于目标业务数据生成与所述服务进程进行交互的交互请求,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
所述客户端进程,还用于将所述交互请求放入所述共享内存中,并触发所述服务业务标识对应的服务线程的共享文件描述符Eventfd,以使所述服务线程执行所述交互请求;
所述服务进程,用于在监听到所述服务线程的共享文件描述符Eventfd被触发时,从所述共享内存中获取所述交互请求,并对所述交互请求进行处理;
所述服务进程,还用于触发共享所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd;
所述客户端进程,用于监听所述目标会话控制的共享文件描述符Eventfd是否被触发,以确定所述交互请求是否处理完成。
本说明书实施例提供的一种信息的处理方法,所述方法包括:
基于目标业务数据生成与所述服务进程进行交互的交互请求,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
将所述交互请求放入所述共享内存中,并触发所述服务业务标识对应的服务线程的共享文件描述符Eventfd,以使所述服务线程执行所述交互请求;
监听所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd是否被所述服务进程触发,以确定所述交互请求是否处理完成。
本说明书实施例提供的一种信息的处理方法,所述方法包括:
在监听到服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,并对所述交互请求进行处理,其中,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
触发共享所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd,以使客户端进程监听所述目标会话控制的共享文件描述符Eventfd是否被触发,以确定所述交互请求是否处理完成。
本说明书实施例提供的一种信息的处理装置,所述装置包括:
文件描述符共享模块,用于与服务进程共享服务线程的共享文件描述符Eventfd和会话控制的共享文件描述符Eventfd;
请求生成模块,用于基于目标业务数据生成与所述服务进程进行交互的交互请求,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
请求共享模块,用于将所述交互请求放入所述共享内存中,并触发所述服务业务标识对应的服务线程的共享文件描述符Eventfd,以使所述服务线程执行所述交互请求;
监听模块,用于监听所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd是否被所述服务子进程触发,以确定所述交互请求是否处理完成。
本说明书实施例提供的一种信息的处理装置,所述装置包括:
文件描述符共享模块,用于与客户端进程共享服务线程的共享文件描述符Eventfd和会话控制的共享文件描述符Eventfd;
请求获取模块,用于在监听到服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,并对所述交互请求进行处理,其中,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
触发模块,用于触发共享所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd,以使客户端进程监听所述目标会话控制的共享文件描述符Eventfd是否被触发,以确定所述交互请求是否处理完成。
本说明书实施例提供的一种信息的处理设备,所述信息的处理设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
基于目标业务数据生成与所述服务进程进行交互的交互请求,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
将所述交互请求放入所述共享内存中,并触发所述服务业务标识对应的服务线程的共享文件描述符Eventfd,以使所述服务线程执行所述交互请求;
监听所述目标会话控制的共享文件描述符Eventfd是否被所述服务进程触发,以确定所述交互请求是否处理完成。
本说明书实施例提供的一种信息的处理设备,所述信息的处理设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
在监听到服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,并对所述交互请求进行处理,其中,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
触发共享所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd,以使客户端进程监听所述目标会话控制的共享文件描述符Eventfd是否被触发,以确定所述交互请求是否处理完成。
由以上本说明书实施例提供的技术方案可见,本说明书实施例提供一种信息的处理系统,该系统包括客户端进程、共享文件描述符Eventfd、共享内存和服务进程,其中:客户端进程,用于基于目标业务数据生成与服务进程进行交互的交互请求,交互请求中包括目标业务数据对应的服务业务标识和进行交互时的目标会话标识;将交互请求放入共享内存中,并触发服务业务标识对应的服务线程的共享文件描述符Eventfd执行交互请求,并触发服务进程共享目标会话标识对应的目标会话控制的共享文件描述符Eventfd;服务进程,用于在监听到服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取交互请求,并对交互请求进行处理;触发目标会话控制的共享文件描述符Eventfd执行;客户端进程,用于监听目标会话控制的共享文件描述符Eventfd是否被触发,以确定交互请求是否处理完成,这样,基于共享内存并结合共享文件描述符触发机制来实现进程间的高效数据交互,其中的共享文件描述符触发机制可以在进程间实现文件描述符的共享,而文件描述符的触发具备高效性,可用于线程间或内核态驱动和用户态进程间的高效触发,而且,由于可以通过Epoll的共享文件描述符Eventfd进行进程间的触发,并配合共享内存零拷贝机制能够达到非常好的进程间通信的效果。
附图说明
为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本说明书一种信息的处理方法实施例;
图2为本说明书一种信息的处理系统的实体设备的结构示意图;
图3为本说明书另一种信息的处理方法实施例;
图4为本说明书又一种信息的处理方法实施例;
图5为本说明书一种信息的处理系统交互的示意图;
图6为本说明书另一种信息的处理系统交互的示意图;
图7为本说明书一种信息的处理装置实施例;
图8为本说明书另一种信息的处理装置实施例;
图9为本说明书一种信息的处理设备实施例;
图10为本说明书另一种信息的处理设备实施例;
图11为本说明书另一种信息的处理系统的实施例。
具体实施方式
本说明书实施例提供一种信息的处理方法、装置、设备及系统。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
实施例一
如图1所示,本说明书实施例提供一种信息的处理方法,该方法的执行主体可以为客户端进程,其中,客户端进程可以是某服务器中安装的某应用程序的客户端对应的客户端进程等,其中的服务器可以是具备CS(Client-Server)架构的服务器,该服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,而且,该服务器可以是某项业务的后台服务器等。该方法具体可以包括以下步骤:
在步骤S102中,基于目标业务数据生成与服务进程进行交互的交互请求,该交互请求中包括目标业务数据对应的服务业务标识和进行交互时的目标会话标识。
其中,目标业务数据可以是任意服务业务的相关数据,例如用户需要通过客户端进程向服务进程传送的购物业务的数据等。服务进程可以是需要与客户端进程进行交互的服务器端的进程,服务进程可以是针对目标业务数据的服务进程,同一个服务进程可以同时被多个不同用户使用的客户端进程连接,一个客户端进程可以同时与多个不同的服务进程连接,此外,上述客户端进程和服务进程处于同一台服务器中(即具备CS(Client-Server)架构的一台服务器)。服务业务标识可以是目标业务数据所属的服务业务的标识,服务业务标识可以是服务业务的名称或编码等,一项服务业务可以对应有一个服务进程,在某些情况下,一项服务业务也可以对应有多个服务进程等,本说明书实施例对此不做限定。目标会话标识可以是相应的目标会话控制的标识,目标会话控制可以是服务进程与客户端进程在进行交互时建立,目标会话控制可以是Session。Session可以用于记录一次CS架构的服务器中的一次长连接,即Session将当前连接着的客户端进程的信息记录在主服务进程中。
在实施中,进程间交互存在多种方式,针对Linux操作系统,Linux操作系统可以支持多种IPC机制,例如Unix Socket,IPC等,其中,效率最高的当属共享内存方式,但是,共享内存方式缺少一种进程间触发的辅助机制,即在交互的数据准备完成后,无法触发服务进程响应并处理共享内存中的相关数据,因而就需要一个高效的触发机制来触发服务进程响应并处理共享内存中的相关数据。在多Docker场景下,当前的一些PCIE(PeripheralComponent Interconnect Express,高速串行计算机扩展总线标准)设备(如FPGA(FieldProgrammable Gate Array,现场可编程逻辑门阵列)等)不支持SRIOV(Single-root I/Ovirtualization,单根I/O虚拟化),无法做到每个Docker独占一个设备,所以采用运行于宿主机上的Primary进程占用硬件(如FPGA等)设备。在Docker内运行Secondary进程,通过进程间通信跟Primary的交互来实现对硬件(如FPGA等)的访问,Secondary和Primary之间的交互效率是高QPS(Query Per Second,每秒查询率)的关键路径。
在资源占用方面,因为全局性的要求,需要交互的进程都能够访问,所以要占用系统资源,Tcp/Udp Socket占用系统端口,Unix Socket使用系统内可访问的文件,而IPC则需要占用全局key。正常情况下,基于系统解耦的原则,各服务通道需相互解耦,一个服务占用一个相应资源,100个服务就需要占用100个资源。在混部场景下,有可能会产生冲突,在性能方面,以Unix Socket和共享Eventfd(即文件描述符)机制进行比较,Unix Socket在进程间性能在IPC中较好,占用的系统资源只是一个文件,相比其他IPC机制更轻量,经验证在同等压力下,进程间共享Eventfd的QPS比Unix Socket高1/3左右。进程间共享Eventfd机制中可以包括配置信息和数据两部分,通过Unix Socket的Sendmsg和Recvmsg机制共享进程间的Eventfd,共享完成后,进程间通过Epoll Eventfd完成进程间触发,配合共享内存零拷贝机制能达到非常好的效果。
基于上述内容,本说明书实施例提供一种相应的技术方案,具体可以包括以下内容:
由于共享内存方式缺少一种进程间触发的辅助机制,且共享内存方式是Linux操作系统支持的IPC机制中效率最高的方式,因此,可以考虑采用共享内存+共享文件描述符Eventfd触发机制来实现进程间的通信,具体地,如图2所示,当用户需要处理某项业务时,可以启动终端设备中安装的相应的客户端(即应用程序),客户端启动后会在该终端设备的后台生成客户端进程,客户端进程可以获取该业务的相关数据,例如,用户需要访问某一项数据的内容,则可以获取访问该数据的内容所需的数据(即目标业务数据,具体如访问请求信息等)等,在客户端连接到服务器时,服务器可以在本地为该终端设备的客户端创建客户端进程,此外,还可以为该客户端进程创建一个或多个服务进程。或者,服务器中安装有客户端,在该客户端启动时,服务器可以为该客户端创建客户端进程,此外,还可以为该客户端进程创建一个或多个服务进程。也即是上述客户端进程和服务进程处于同一台服务器中(即具备CS(Client-Server)架构的一台服务器),通过客户端进程和服务进程可以完成用户请求的各项业务。
另外,可以根据实际情况,预先建立客户端进程和服务进程之间的共享内存,以及共享文件描述符触发机制,其中,为了使得客户端进程与服务进程完成进程间通信,服务器可以构建会话控制(即Session,本说明书实施例可以记为目标会话控制),还可以创建一个用于与该客户端进程进行进程间通信的服务线程(即Server)。然后,还可以获取目标业务数据对应的服务业务标识和进行交互时的目标会话控制的标识(即目标会话标识),并可以使用该服务业务标识和目标会话标识,以及目标业务数据生成与服务进程进行交互的交互请求。
在步骤S104中,将上述交互请求放入共享内存中,并触发上述服务业务标识对应的服务线程的共享文件描述符Eventfd,以使服务线程执行该交互请求。
其中,共享内存可以使得多个不同的进程可以访问同一块内存空间,共享内存是最快的可用IPC(Inter-Process Communication,进程间通信)形式。共享内存是针对其他通信机制运行效率较低而设计的,往往可以与其它通信机制(如信号量等)结合使用,来达到进程间的同步及互斥。通常,进程均可以访问共享内存中的地址,如果一个进程向该共享内存写入数据,该共享内存中的数据的改动会即时被访问该共享内存的其他进程所知晓,共享内存的使用可以大大降低在大规模数据处理过程中内存的消耗。共享文件描述符Eventfd可以是一个可共享的用来通知事件的文件描述符,共享文件描述符Eventfd是内核向用户空间的客户端发送通知的机制,可以有效地被用来实现用户空间的事件或通知驱动的客户端或应用程序,在实际应用中,可以以共享Eventfd标识。
在实施中,客户端进程获取到上述交互请求后,可以将该交互请求发送到共享内存中,共享内存接收到该交互请求后,可以将该交互请求存储在预定的存储区域内,然后,客户端进程可以触发上述服务业务标识对应的服务线程(即Server)的共享文件描述符Eventfd执行该交互请求,具体如,客户端进程可以向该服务线程发送交互请求处理指令或交互请求处理通知或交互请求处理消息等,通过上述发送的指令、通知或消息,可以使得相应的服务线程从共享内存中获取相应的交互请求进行处理,或者,还可以设定标签等,当检测到客户端进程触发上述服务业务标识对应的服务线程的共享文件描述符Eventfd执行该交互请求时,可以在上述标签进行记录,同时,服务进程还可以实时、不定时或周期性的对上述标签进行检测,当检测到上述标签发生变化时,可以确定客户端进程向共享内存中放入交互请求。
此外,为了后续处理过程简单高效,该服务进程还可以触发共享目标会话标识对应的目标会话控制的共享文件描述符Eventfd,以便执行下述步骤S106的处理。
在步骤S106中,监听目标会话标识对应的目标会话控制的共享文件描述符Eventfd是否被该服务进程触发,以确定该交互请求是否处理完成。
在实施中,服务进程可以从共享内存中获取上述交互请求,并可以对该交互请求进行处理,具体如,交互请求中包括客户端进程向服务进程获取某页面的数据的请求,则服务进程可以根据该交互请求中的内容,获取该页面的数据,并可以将该页面的数据发送到共享内存中,然后,可以触发客户端进程的文件描述符提取该页面的数据等。此外,该服务进程处理该交互请求的过程中,还可以触发目标会话控制的共享文件描述符Eventfd,如果客户端进程检测到目标会话控制的共享文件描述符Eventfd被该服务进程触发,则可以确定该交互请求处理成功,否则,该交互请求处理失败,此时,可以重复执行上述处理过程,以完成客户端进程与服务进程之间的通信处理。
通过上述处理过程,由于可以通过Epoll的共享文件描述符Eventfd进行进程间的触发,并配合共享内存零拷贝机制,因此,可以达到非常好的进程间通信的效果。
如图3所示,本说明书实施例提供一种信息的处理方法,该方法的执行主体可以为服务进程,其中,服务进程可以是某服务器为用户提供某项服务的进程等,该服务进程可以是某项业务的服务进程,其中的服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,而且,该服务器可以是某项业务的后台服务器等。该方法具体可以包括以下步骤:
在步骤S302中,在监听到服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,并对该交互请求进行处理,其中,该交互请求中包括目标业务数据对应的服务业务标识和进行交互时的目标会话标识。
其中,上述客户端进程和服务进程处于同一台服务器中(即具备CS(Client-Server)架构的一台服务器)。
在实施中,为了完成用户请求的某项业务,可以在服务器中预先构建客户端进程和服务进程,具体可以参见上述相关内容,在此不再赘述。另外,可以根据实际情况,预先建立客户端进程和服务进程之间的共享内存,以及共享文件描述符Eventfd触发机制,其中,为了使得客户端进程与服务进程完成进程间通信,服务器中还可以包括主控服务进程,上述服务进程可以是业务服务的服务进程,其中,主控服务进程可以构建会话控制(即Session,本说明书实施例可以记为目标会话控制),还可以创建一个用于与该客户端进程进行进程间通信的服务线程。然后,服务进程可以获取目标业务数据对应的服务业务标识和进行交互时的目标会话标识,并可以使用该服务业务标识和目标会话标识,以及目标业务数据生成与服务进程进行交互的交互请求。
客户端进程可以将上述交互请求放入共享内存中,并触发上述服务业务标识对应的服务线程的共享文件描述符Eventfd执行该交互请求,同时,服务进程可以监听该服务线程的共享文件描述符Eventfd是否被触发,如果监听到该服务线程的共享文件描述符Eventfd被触发,则可以从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,并对该交互请求进行处理。
在步骤S304中,触发共享目标会话标识对应的目标会话控制的共享文件描述符Eventfd,以使客户端进程监听目标会话控制的共享文件描述符Eventfd是否被触发,以确定该交互请求是否处理完成。
本说明书实施例提供一种信息的处理方法,基于目标业务数据生成与服务进程进行交互的交互请求,交互请求中包括目标业务数据对应的服务业务标识和进行交互时的目标会话标识,将交互请求放入共享内存中,并触发服务业务标识对应的服务线程的共享文件描述符Eventfd执行交互请求,并触发服务进程共享目标会话标识对应的目标会话控制的共享文件描述符Eventfd,监听目标会话控制的共享文件描述符Eventfd是否被服务进程触发,以确定交互请求是否处理完成,这样,基于共享内存并结合共享文件描述符触发机制来实现进程间的高效数据交互,其中的共享文件描述符触发机制可以在进程间实现文件描述符的共享,而文件描述符的触发具备高效性,可用于线程间或内核态驱动和用户态进程间的高效触发,而且,由于可以通过Epoll的共享文件描述符Eventfd进行进程间的触发,并配合共享内存零拷贝机制能够达到非常好的进程间通信的效果。
实施例二
如图4所示,本说明书实施例提供一种信息的处理方法,该方法的执行主体可以为客户端进程和服务进程,其中,客户端进程可以是某服务器中安装的某应用程序的客户端对应的客户端进程等,该服务进程可以是该服务器为用户提供某项服务的进程等,该服务进程可以是某项业务的服务进程,其中的服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,而且,该服务器可以是某项业务的后台服务器等,上述客户端进程和服务进程处于同一台服务器中(即具备CS(Client-Server)架构的一台服务器)。本实施例中以Server表示服务线程,Eventfd表示文件描述符,该方法具体可以包括以下步骤:
在步骤S402中,主控服务进程创建服务线程,并为该服务线程创建属性信息,该属性信息中包括共享文件描述符Eventfd和Epollfd。
其中,Server可以是主控服务进程创建的服务线程等,可以由主控服务进程根据实际需要进行创建,如图5所示,一个主控服务进程可以创建多个Server,以对外提供相应的服务,一个Server可以与多个客户端连接。
在实施中,为了完成用户请求的某项业务,可以在服务器中预先构建客户端进程和服务进程,具体可以参见上述相关内容,在此不再赘述。当该客户端进程向服务进行请求数据时,客户端进程可以请求与主控服务进程建立连接。主控服务进程可以预先创建一个或多个Server,并为该Server创建属性信息,其中,该属性信息可以包括用于事件通知的可共享的文件描述符Eventfd,以及用于事件触发的Epollfd,在主控服务进程初始化的过程中,每个Server可以构建自身的数据通道,以便在客户端进程与主控服务进程建立连接后,客户端进程可以将相应的请求通过Server的数据通道提供给相应的Server进行处理,或者,可以便于Server能够反向触发客户端进程,并通知客户端进程任务的执行状态等。
需要说明的是,创建的Server可以包括多个数据,具体可以参见下述内容:
struct framework_server{const char*name;//名称
uint32_t server_id;//唯一ID
int status;//状态
int eventfd;//服务专属
eventfd;//每个服务有一个Eventfd
int epfd;//服务采用Epoll的IO多路异步复用机制
struct rte_ring*ring;//共享内存通道,以DPDK为例,此为DPDK基于共享大页的ring
pthread_t thread[MAX_SERVER_THREAD_NUM];//该服务可以有多个线程支持监听处理
int thread_running;//服务运行标识
ccdk_server_ection_t ection;//业务注册到服务的回调
void*arg;//也注册到服务的回调调用的参数}
在步骤S404中,客户端进程触发主控服务进程共享该主控服务进程创建的服务线程的共享文件描述符Eventfd。
在实施中,上述主控服务进程创建的Server和连接该Server的多个客户端进程共享同一个文件描述符Eventfd,也即是此Server和该多个客户端进程使用的是同一个Eventfd,任意一个进程向该Eventfd中写入数据时,其他进程均可以感应或检测到。可以通过Epollfd机制,实现客户端进程到Server的单向触发,并且主控服务进程负责创建ServerEventfd,客户端进程可以通过预定的处理机制(具体可以根据实际情况设定)从主控服务进程返回共享的Server Eventfd等。
上述步骤S404的具体处理方式可以多种多样,以下提供一种可选的处理方式,具体可以包括以下内容:通过Unix Socket的Sendmsg和Recvmsg机制触发主控服务进程共享该主控服务进程创建的服务线程的共享文件描述符Eventfd。
其中,Sendmsg和Recvmsg机制可以是用于发送和接收的机制。
在实施中,针对Linux操作系统,可以通过Unix Socket的Sendmsg和Recvmsg机制进行文件描述符的传递,具体地,当主控服务进程创建完成Server后,客户端进程可以基于Unix Socket的Sendmsg和Recvmsg机制触发主控服务进程共享该主控服务进程创建的Server的Eventfd,进而可以基于Sendmsg和Recvmsg机制完成共享该Server的Eventfd。同时,可以确定相应的服务业务标识。
在步骤S406中,客户端进程向主控服务进程发送会话控制的注册请求。
在步骤S408中,主控服务进程创建上述注册请求对应的目标会话控制,并为目标会话控制创建属性信息,该属性信息中包括目标会话控制的共享文件描述符Eventfd。
在实施中,如图6所示,一个客户端进程到一个服务线程的连接可以称为目标会话控制(即目标Session),一个客户端进程可以连接到多个Server。目标会话控制主要用于Server完成客户端进程发送的请求后的反向触发实现,即通过Server,同样由主控服务进程负责创建目标会话控制(即目标Session)的共享Eventfd。
需要说明的是,创建的目标会话控制可以包括多个数据,具体可以参见下述内容:
struct framework_server{const char*name;//名称
uint32_t server_id;//唯一ID
int status;//状态
int eventfd;//服务专属
eventfd;//每个服务有一个Eventfd
int epfd;//服务采用Epoll的IO多路异步复用机制
struct rte_ring*ring;//共享内存通道,以DPDK为例,此为DPDK基于共享大页的ring
pthread_t thread[MAX_SERVER_THREAD_NUM];//该服务可以有多个线程支持监听处理
int thread_running;//服务运行标识
ccdk_Server_action_t action;//业务注册到服务的回调
void*arg;//也注册到服务的回调调用的参数}。
在步骤S410中,客户端进程接收主控服务进程返回的目标会话标识和目标会话控制的共享文件描述符Eventfd的共享标识。
在步骤S412中,客户端进程基于目标业务数据生成与服务进程进行交互的交互请求,该交互请求中包括目标业务数据对应的服务业务标识和进行交互时的目标会话标识。
在步骤S414中,客户端进程将该交互请求放入共享内存中,并触发该服务业务标识对应的服务线程的共享文件描述符Eventfd,以使服务线程执行该交互请求。
此外,还可以通过其它方式实现服务线程的共享文件描述符Eventfd和/或目标会话控制的共享文件描述符Eventfd的共享,具体可以包括以下内容:通过套接字UnixSocket的发送信息Sendmsg和接收信息Recvmsg机制触发主控服务进程共享主控服务进程创建的服务线程的共享文件描述符Eventfd和/或共享所述目标会话控制的共享文件描述符Eventfd。
在实施中,可以通过Unix Socket的Sendmsg和Recvmsg机制触发主控服务进程共享主控服务进程创建的目标会话控制的Eventfd,具体地,针对Linux操作系统,可以通过Unix Socket的Sendmsg和Recvmsg机制进行文件描述符的传递,即当主控服务进程创建完成目标会话控制后,客户端进程可以基于Unix Socket的Sendmsg和Recvmsg机制触发主控服务进程共享主控服务进程创建的目标会话控制的Eventfd,进而可以基于Sendmsg和Recvmsg机制完成共享该目标会话控制的Eventfd。同样的,还可以通过Unix Socket的Sendmsg和Recvmsg机制触发主控服务进程共享主控服务进程创建的的服务线程的Eventfd。
在步骤S416中,在监听到该服务线程的共享文件描述符Eventfd被触发时,服务进程从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,并对该交互请求进行处理。
上述步骤S416的具体处理方式可以多种多样,以下提供一种可选的处理方式,具体可以包括以下内容:在监听到该服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,调用预先注册的Action进行回调处理,以对该交互请求进行处理。
基于上述处理,对于客户端进程,可以通过多种方式进行相应处理,以下提供一种可选的处理方式,具体可以包括以下内容:在监听到该服务线程触发目标会话控制的共享文件描述符Eventfd时,基于异步消息机制调用预先注册的Action进行回调处理。
在步骤S418中,服务进程触发目标会话标识对应的目标会话控制的共享文件描述符Eventfd。
在步骤S420中,客户端进程监听目标会话控制的共享文件描述符Eventfd是否被该服务业务标识对应的服务线程触发,以确定该交互请求是否处理完成。
基于上述处理过程,本说明书实施例可以基于共享内存并结合共享Eventfd触发机制来实现进程间的高效数据交互,其中的共享Eventfd触发机制可以是基于Unix Socket的Sendmsg和Recvmsg机制和Eventfd+Epoll IO多路异步复用机制,在进程间实现Eventfd文件描述符的共享,而Eventfd的触发具备高效性,可用于线程间或内核态驱动和用户态进程间的高效触发,在DPDK中可以使用Eventfd实现内核态驱动中断触发到用户态进程。
本说明书实施例提供一种信息的处理方法,客户端进程基于目标业务数据生成与服务进程进行交互的交互请求,交互请求中包括目标业务数据对应的服务业务标识和进行交互时的目标会话标识,将交互请求放入共享内存中,并触发服务业务标识对应的服务线程的共享文件描述符Eventfd执行交互请求,并触发服务进程共享目标会话标识对应的目标会话控制的共享文件描述符Eventfd,监听目标会话控制的共享文件描述符Eventfd是否被服务进程触发,以确定交互请求是否处理完成,这样,基于共享内存并结合共享文件描述符触发机制来实现进程间的高效数据交互,其中的共享文件描述符触发机制可以在进程间实现文件描述符的共享,而文件描述符的触发具备高效性,可用于线程间或内核态驱动和用户态进程间的高效触发,而且,由于可以通过Epoll的共享文件描述符Eventfd进行进程间的触发,并配合共享内存零拷贝机制能够达到非常好的进程间通信的效果。
实施例三
以上为本说明书实施例提供的信息的处理方法,基于同样的思路,本说明书实施例还提供一种信息的处理装置,如图7所示。
该信息的处理装置包括:请求生成模块701、请求共享模块702、监听模块703和文件描述符共享模块704,其中:
文件描述符共享模块704,用于与服务进程共享服务线程的共享文件描述符Eventfd和会话控制的共享文件描述符Eventfd;
请求生成模块701,用于基于目标业务数据生成与所述服务进程进行交互的交互请求,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
请求共享模块702,用于将所述交互请求放入所述共享内存中,并触发所述服务业务标识对应的服务线程的共享文件描述符Eventfd,以使所述服务线程执行所述交互请求;
监听模块703,用于监听所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd是否被所述服务进程触发,以确定所述交互请求是否处理完成。
本说明书实施例中,所述装置还包括:
请求发送模块,用于向主控服务进程发送所述服务线程的共享文件描述符Eventfd的共享请求;
共享标识接收模块,用于接收所述主控服务进程返回的所述服务线程的共享文件描述符Eventfd的共享标识,以共享所述服务线程的共享文件描述符Eventfd;
注册发送模块,用于向所述主控服务进程发送会话控制的注册请求,以使所述主控服务进程创建所述注册请求对应的目标会话控制,并为所述目标会话控制创建属性信息,所述属性信息中包括所述目标会话控制的共享文件描述符Eventfd;
标识接收模块,用于接收所述主控服务进程返回的所述目标会话标识和所述目标会话控制的共享文件描述符Eventfd的共享标识。
本说明书实施例中,所述装置还包括:
共享模块,用于通过套接字Unix Socket的发送信息Sendmsg和接收信息Recvmsg机制触发所述主控服务进程共享所述主控服务进程创建的服务线程的共享文件描述符Eventfd和/或共享所述目标会话控制的共享文件描述符Eventfd。
本说明书实施例中,所述装置还包括:
调用模块,用于在监听到所述服务进程触发所述目标会话控制的共享文件描述符Eventfd时,基于异步消息机制调用预先注册的Action进行回调处理。
本说明书实施例提供一种信息的处理装置,基于目标业务数据生成与服务进程进行交互的交互请求,交互请求中包括目标业务数据对应的服务业务标识和进行交互时的目标会话标识,将交互请求放入共享内存中,并触发服务业务标识对应的服务线程的共享文件描述符Eventfd执行交互请求,并触发服务进程共享目标会话标识对应的目标会话控制的共享文件描述符Eventfd,监听目标会话控制的共享文件描述符Eventfd是否被服务进程触发,以确定交互请求是否处理完成,这样,基于共享内存并结合共享文件描述符触发机制来实现进程间的高效数据交互,其中的共享文件描述符触发机制可以在进程间实现文件描述符的共享,而文件描述符的触发具备高效性,可用于线程间或内核态驱动和用户态进程间的高效触发,而且,由于可以通过Epoll的共享文件描述符Eventfd进行进程间的触发,并配合共享内存零拷贝机制能够达到非常好的进程间通信的效果。
实施例四
基于同样的思路,本说明书实施例还提供一种信息的处理装置,如图8所示。
该信息的处理装置包括:请求获取模块801和触发模块802,其中:
请求获取模块801,用于在监听到服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,并对所述交互请求进行处理,其中,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
触发模块802,用于触发共享所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd,以使客户端进程监听所述目标会话控制的共享文件描述符Eventfd是否被触发,以确定所述交互请求是否处理完成。
本说明书实施例中,所述请求获取模块801,用于在监听到所述服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,调用预先注册的Action进行回调处理,以对所述交互请求进行处理。
本说明书实施例提供一种信息的处理装置,在监听到服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,并对交互请求进行处理,其中,交互请求中包括目标业务数据对应的服务业务标识和进行交互时的目标会话标识,触发目标会话标识对应的目标会话控制的共享文件描述符Eventfd执行,以使客户端进程监听目标会话控制的共享文件描述符Eventfd是否被触发,以确定交互请求是否处理完成,这样,基于共享内存并结合共享文件描述符触发机制来实现进程间的高效数据交互,其中的共享文件描述符触发机制可以在进程间实现文件描述符的共享,而文件描述符的触发具备高效性,可用于线程间或内核态驱动和用户态进程间的高效触发,而且,由于可以通过Epoll的共享文件描述符Eventfd进行进程间的触发,并配合共享内存零拷贝机制能够达到非常好的进程间通信的效果。
实施例五
以上为本说明书实施例提供的信息的处理装置,基于同样的思路,本说明书实施例还提供一种信息的处理设备,如图9所示。
所述信息的处理设备可以为上述实施例提供的服务器,该服务器中可以安装有客户端,该客户端在运行过程中会生成客户端进程,或者,该服务器可以基于与远端客户端之间的连接,为该远端客户端在本地构建客户端进程。
信息的处理设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器901和存储器902,存储器902中可以存储有一个或一个以上存储应用程序或数据。其中,存储器902可以是短暂存储或持久存储。存储在存储器902的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对信息的处理设备中的一系列计算机可执行指令。更进一步地,处理器901可以设置为与存储器902通信,在信息的处理设备上执行存储器902中的一系列计算机可执行指令。信息的处理设备还可以包括一个或一个以上电源903,一个或一个以上有线或无线网络接口904,一个或一个以上输入输出接口905,一个或一个以上键盘906。
具体在本实施例中,信息的处理设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对信息的处理设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
基于目标业务数据生成与所述服务进程进行交互的交互请求,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
将所述交互请求放入所述共享内存中,并触发所述服务业务标识对应的服务线程的共享文件描述符Eventfd,以使所述服务线程执行所述交互请求;
监听所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd是否被所述服务进程触发,以确定所述交互请求是否处理完成。
本说明书实施例中,所述基于目标业务数据生成与所述服务进程进行交互的交互请求之前,还包括:
向主控服务进程发送所述服务线程的共享文件描述符Eventfd的共享请求;
接收所述主控服务进程返回的所述服务线程的共享文件描述符Eventfd的共享标识,以共享所述服务线程的共享文件描述符Eventfd;
向所述主控服务进程发送会话控制的注册请求,以使所述主控服务进程创建所述注册请求对应的目标会话控制,并为所述目标会话控制创建属性信息,所述属性信息中包括所述目标会话控制的共享文件描述符Eventfd;
接收所述主控服务进程返回的所述目标会话标识和所述目标会话控制的共享文件描述符Eventfd的共享标识。
本说明书实施例中,还包括:
通过套接字Unix Socket的发送信息Sendmsg和接收信息Recvmsg机制触发所述主控服务进程共享所述主控服务进程创建的服务线程的共享文件描述符Eventfd和/或共享所述目标会话控制的共享文件描述符Eventfd。
本说明书实施例中,还包括:
在监听到所述服务进程触发所述目标会话控制的共享文件描述符Eventfd时,基于异步消息机制调用预先注册的Action进行回调处理。
本说明书实施例提供一种信息的处理设备,基于目标业务数据生成与服务进程进行交互的交互请求,交互请求中包括目标业务数据对应的服务业务标识和进行交互时的目标会话标识,将交互请求放入共享内存中,并触发服务业务标识对应的服务线程的共享文件描述符Eventfd执行交互请求,并触发服务进程共享目标会话标识对应的目标会话控制的共享文件描述符Eventfd,监听目标会话控制的共享文件描述符Eventfd是否被服务进程触发,以确定交互请求是否处理完成,这样,基于共享内存并结合共享文件描述符触发机制来实现进程间的高效数据交互,其中的共享文件描述符触发机制可以在进程间实现文件描述符的共享,而文件描述符的触发具备高效性,可用于线程间或内核态驱动和用户态进程间的高效触发,而且,由于可以通过Epoll的共享文件描述符Eventfd进行进程间的触发,并配合共享内存零拷贝机制能够达到非常好的进程间通信的效果。
实施例六
基于同样的思路,本说明书实施例还提供一种信息的处理设备,如图10所示。
所述信息的处理设备可以为上述实施例提供的服务器等,该服务器中设置有服务进程。
信息的处理设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器1001和存储器1002,存储器1002中可以存储有一个或一个以上存储应用程序或数据。其中,存储器1002可以是短暂存储或持久存储。存储在存储器1002的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对信息的处理设备中的一系列计算机可执行指令。更进一步地,处理器1001可以设置为与存储器1002通信,在信息的处理设备上执行存储器1002中的一系列计算机可执行指令。信息的处理设备还可以包括一个或一个以上电源1003,一个或一个以上有线或无线网络接口1004,一个或一个以上输入输出接口1005,一个或一个以上键盘1006。
具体在本实施例中,信息的处理设备包括有存储器,以及一个或一个以上的程序,其中一个或者一个以上程序存储于存储器中,且一个或者一个以上程序可以包括一个或一个以上模块,且每个模块可以包括对信息的处理设备中的一系列计算机可执行指令,且经配置以由一个或者一个以上处理器执行该一个或者一个以上程序包含用于进行以下计算机可执行指令:
在监听到服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,并对所述交互请求进行处理,其中,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
触发共享所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd,以使客户端进程监听所述目标会话控制的共享文件描述符Eventfd是否被触发,以确定所述交互请求是否处理完成。
本说明书实施例中,所述在监听到服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,并对所述交互请求进行处理,包括:
在监听到所述服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,调用预先注册的Action进行回调处理,以对所述交互请求进行处理。
本说明书实施例提供一种信息的处理设备,在监听到服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,并对交互请求进行处理,其中,交互请求中包括目标业务数据对应的服务业务标识和进行交互时的目标会话标识,触发目标会话标识对应的目标会话控制的共享文件描述符Eventfd执行,以使客户端进程监听目标会话控制的共享文件描述符Eventfd是否被触发,以确定交互请求是否处理完成,这样,基于共享内存并结合共享文件描述符触发机制来实现进程间的高效数据交互,其中的共享文件描述符触发机制可以在进程间实现文件描述符的共享,而文件描述符的触发具备高效性,可用于线程间或内核态驱动和用户态进程间的高效触发,而且,由于可以通过Epoll的共享文件描述符Eventfd进行进程间的触发,并配合共享内存零拷贝机制能够达到非常好的进程间通信的效果。
实施例七
基于同样的思路,本说明书实施例还提供一种信息的处理系统,如图11所示。
该系统可以包括客户端进程1101、共享内存1102、服务进程1103和共享文件描述符Eventfd等,其中,客户端进程1101可以是某服务器中安装的某应用程序的客户端对应的客户端进程等。服务进程1103可以是该服务器为用户提供某项服务的进程等,该服务进程1103可以是某项业务的服务进程,其中的服务器可以是独立的服务器,也可以是由多个服务器组成的服务器集群,而且,该服务器可以是某项业务的后台服务器等,上述客户端进程和服务进程处于同一台服务器中(即具备CS(Client-Server)架构的一台服务器)。共享内存1102可以使得多个不同的进程可以访问同一块内存空间,共享内存1102是最快的可用IPC(Inter-Process Communication,进程间通信)形式。共享内存1102是针对其他通信机制运行效率较低而设计的,往往可以与其它通信机制(如信号量等)结合使用,来达到进程间的同步及互斥。通常,进程均可以访问共享内存1102中的地址,如果一个进程向该共享内存写入数据,该共享内存1102中的数据的改动会即时被访问该共享内存1102的其他进程所知晓,共享内存1102的使用可以大大降低在大规模数据处理过程中内存的消耗。
客户端进程1101,用于基于目标业务数据生成与所述服务进程进行交互的交互请求,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
客户端进程1101,还用于将所述交互请求放入所述共享内存中,并触发所述服务业务标识对应的服务线程的共享文件描述符Eventfd执行所述交互请求,并触发所述服务进程共享所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd;
所述服务进程1103,用于在监听到所述服务线程的共享文件描述符Eventfd被触发时,从所述共享内存1102中获取所述交互请求,并对所述交互请求进行处理;
所述服务进程1103,还用于触发所述目标会话控制的共享文件描述符Eventfd执行;
客户端进程1103,用于监听所述目标会话控制的共享文件描述符Eventfd是否被触发,以确定所述交互请求是否处理完成。
本说明书实施例中,所述系统还包括主控服务进程,所述主控服务进程,用于创建所述服务线程,并为所述服务线程创建属性信息,所述属性信息中包括所述服务线程的共享文件描述符Eventfd和Epollfd;
所述客户端进程1101,还用于获取所述服务业务标识;
所述客户端进程1101,还用于向所述主控服务进程发送会话控制的注册请求;
所述主控服务进程,还用于创建所述注册请求对应的目标会话控制,并为所述目标会话控制创建属性信息,所述属性信息中包括所述目标会话控制的共享文件描述符Eventfd;
所述客户端进程1101,还用于触发所述服务进程共享所述目标会话控制的共享文件描述符Eventfd,并获取所述目标会话标识。
本说明书实施例中,所述客户端进程1101,还用于通过套接字Unix Socket的发送消息Sendmsg机制和接收消息Recvmsg机制触发所述主控服务进程共享所述服务线程的共享文件描述符Eventfd。
本说明书实施例中,所述服务进程1103,还用于在监听到所述服务子进程的文件描述符被触发时,从所述共享内存中获取所述交互请求,调用预先注册的Action进行回调处理,以对所述交互请求进行处理。
本说明书实施例中,所述客户端进程1103,还用于在监听到所述服务进程触发所述目标会话控制的共享文件描述符Eventfd时,基于异步消息机制调用预先注册的Action进行回调处理。
本说明书实施例提供一种信息的处理系统,该系统包括客户端进程、共享文件描述符Eventfd、共享内存和服务进程,其中:客户端进程,用于基于目标业务数据生成与服务进程进行交互的交互请求,交互请求中包括目标业务数据对应的服务业务标识和进行交互时的目标会话标识;将交互请求放入共享内存中,并触发服务业务标识对应的服务线程的共享文件描述符Eventfd执行交互请求,并触发服务进程共享目标会话标识对应的目标会话控制的共享文件描述符Eventfd;服务进程,用于在监听到服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取交互请求,并对交互请求进行处理;触发目标会话控制的共享文件描述符Eventfd执行;客户端进程,用于监听目标会话控制的共享文件描述符Eventfd是否被触发,以确定交互请求是否处理完成,这样,基于共享内存并结合共享文件描述符触发机制来实现进程间的高效数据交互,其中的共享文件描述符触发机制可以在进程间实现文件描述符的共享,而文件描述符的触发具备高效性,可用于线程间或内核态驱动和用户态进程间的高效触发,而且,由于可以通过Epoll的共享文件描述符Eventfd进行进程间的触发,并配合共享内存零拷贝机制能够达到非常好的进程间通信的效果。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书一个或多个实施例时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书的实施例可提供为方法、系统、或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书的实施例是参照根据本说明书实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本说明书的实施例可提供为方法、系统或计算机程序产品。因此,本说明书一个或多个实施例可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本说明书一个或多个实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书一个或多个实施例可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书一个或多个实施例,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本说明书。对于本领域技术人员来说,本说明书可以有各种更改和变化。凡在本说明书的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本说明书的权利要求范围之内。

Claims (15)

1.一种信息的处理系统,所述系统包括客户端进程、共享文件描述符Eventfd、共享内存和服务进程,其中:
所述客户端进程,用于基于目标业务数据生成与所述服务进程进行交互的交互请求,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
所述客户端进程,还用于将所述交互请求放入所述共享内存中,并触发所述服务业务标识对应的服务线程的共享文件描述符Eventfd,以使所述服务线程执行所述交互请求;
所述服务进程,用于在监听到所述服务线程的共享文件描述符Eventfd被触发时,从所述共享内存中获取所述交互请求,并对所述交互请求进行处理;
所述服务进程,还用于触发共享所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd;
所述客户端进程,用于监听所述目标会话控制的共享文件描述符Eventfd是否被触发,以确定所述交互请求是否处理完成。
2.根据权利要求1所述的系统,所述系统还包括主控服务进程,
所述主控服务进程,用于创建所述服务线程,并为所述服务线程创建属性信息,所述属性信息中包括所述服务线程的共享文件描述符Eventfd和Epollfd;
所述客户端进程,还用于向主控服务进程发送所述服务线程的共享文件描述符Eventfd的共享请求,
所述主控服务进程,还用于根据所述共享请求,返回所述服务线程的共享文件描述符Eventfd的共享标识;
所述客户端进程,还用于接收所述主控服务进程返回的所述服务线程的共享文件描述符Eventfd的共享标识,以共享所述服务线程的共享文件描述符Eventfd;
所述客户端进程,还用于向主控服务进程发送会话控制的注册请求;
所述主控服务进程,还用于创建所述注册请求对应的目标会话控制,并为所述目标会话控制创建属性信息,所述属性信息中包括所述目标会话控制的共享文件描述符Eventfd;
所述客户端进程,还用于接收所述主控服务进程返回的所述目标会话标识和所述目标会话控制的共享文件描述符Eventfd的共享标识。
3.根据权利要求2所述的系统,所述客户端进程,还用于通过套接字Unix Socket的发送消息Sendmsg和接收消息Recvmsg机制触发所述主控服务进程共享所述服务线程的共享文件描述符Eventfd和/或共享所述目标会话控制的共享文件描述符Eventfd。
4.根据权利要求1所述的系统,所述服务进程,还用于在监听到所述服务线程的文件描述符被触发时,从所述共享内存中获取所述交互请求,调用预先注册的Action进行回调处理,以对所述交互请求进行处理。
5.根据权利要求4所述的系统,所述客户端进程,还用于在监听到所述服务进程触发所述目标会话控制的共享文件描述符Eventfd时,基于异步消息机制调用预先注册的Action进行回调处理。
6.一种信息的处理方法,所述方法包括:
基于目标业务数据生成与所述服务进程进行交互的交互请求,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
将所述交互请求放入所述共享内存中,并触发所述服务业务标识对应的服务线程的共享文件描述符Eventfd,以使所述服务线程执行所述交互请求;
监听所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd是否被所述服务进程触发,以确定所述交互请求是否处理完成。
7.根据权利要求6所述的方法,所述基于目标业务数据生成与所述服务进程进行交互的交互请求之前,所述方法还包括:
向主控服务进程发送所述服务线程的共享文件描述符Eventfd的共享请求;
接收所述主控服务进程返回的所述服务线程的共享文件描述符Eventfd的共享标识,以共享所述服务线程的共享文件描述符Eventfd;
向所述主控服务进程发送会话控制的注册请求,以使所述主控服务进程创建所述注册请求对应的目标会话控制,并为所述目标会话控制创建属性信息,所述属性信息中包括所述目标会话控制的共享文件描述符Eventfd;
接收所述主控服务进程返回的所述目标会话标识和所述目标会话控制的共享文件描述符Eventfd的共享标识。
8.根据权利要求6所述的方法,所述方法还包括:
通过套接字Unix Socket的发送信息Sendmsg和接收信息Recvmsg机制触发所述主控服务进程共享所述主控服务进程创建的服务线程的共享文件描述符Eventfd和/或共享所述目标会话控制的共享文件描述符Eventfd。
9.根据权利要求6所述的方法,所述方法还包括:
在监听到所述服务进程触发所述目标会话控制的共享文件描述符Eventfd时,基于异步消息机制调用预先注册的Action进行回调处理。
10.一种信息的处理方法,所述方法包括:
在监听到服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,并对所述交互请求进行处理,其中,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
触发共享所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd,以使客户端进程监听所述目标会话控制的共享文件描述符Eventfd是否被触发,以确定所述交互请求是否处理完成。
11.根据权利要求10所述的方法,所述在监听到服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,并对所述交互请求进行处理,包括:
在监听到所述服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,调用预先注册的Action进行回调处理,以对所述交互请求进行处理。
12.一种信息的处理装置,所述装置包括:
文件描述符共享模块,用于与服务进程共享服务线程的共享文件描述符Eventfd和会话控制的共享文件描述符Eventfd;
请求生成模块,用于基于目标业务数据生成与所述服务进程进行交互的交互请求,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
请求共享模块,用于将所述交互请求放入所述共享内存中,并触发所述服务业务标识对应的服务线程的共享文件描述符Eventfd,以使所述服务线程执行所述交互请求;
监听模块,用于监听所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd是否被所述服务进程触发,以确定所述交互请求是否处理完成。
13.一种信息的处理装置,所述装置包括:
文件描述符共享模块,用于与客户端进程共享服务线程的共享文件描述符Eventfd和会话控制的共享文件描述符Eventfd;
请求获取模块,用于在监听到服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,并对所述交互请求进行处理,其中,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
触发模块,用于触发共享所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd,以使客户端进程监听所述目标会话控制的共享文件描述符Eventfd是否被触发,以确定所述交互请求是否处理完成。
14.一种信息的处理设备,所述信息的处理设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
基于目标业务数据生成与所述服务进程进行交互的交互请求,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
将所述交互请求放入所述共享内存中,并触发所述服务业务标识对应的服务线程的共享文件描述符Eventfd,以使所述服务线程执行所述交互请求;
监听所述目标会话控制的共享文件描述符Eventfd是否被所述服务进程触发,以确定所述交互请求是否处理完成。
15.一种信息的处理设备,所述信息的处理设备包括:
处理器;以及
被安排成存储计算机可执行指令的存储器,所述可执行指令在被执行时使所述处理器:
在监听到服务线程的共享文件描述符Eventfd被触发时,从共享内存中获取客户端进程基于目标业务数据生成的用于交互的交互请求,并对所述交互请求进行处理,其中,所述交互请求中包括所述目标业务数据对应的服务业务标识和进行交互时的目标会话标识;
触发共享所述目标会话标识对应的目标会话控制的共享文件描述符Eventfd,以使客户端进程监听所述目标会话控制的共享文件描述符Eventfd是否被触发,以确定所述交互请求是否处理完成。
CN201911044293.2A 2019-10-30 2019-10-30 一种信息的处理方法、装置、设备及系统 Active CN112749023B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201911044293.2A CN112749023B (zh) 2019-10-30 2019-10-30 一种信息的处理方法、装置、设备及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201911044293.2A CN112749023B (zh) 2019-10-30 2019-10-30 一种信息的处理方法、装置、设备及系统

Publications (2)

Publication Number Publication Date
CN112749023A true CN112749023A (zh) 2021-05-04
CN112749023B CN112749023B (zh) 2024-06-11

Family

ID=75640551

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201911044293.2A Active CN112749023B (zh) 2019-10-30 2019-10-30 一种信息的处理方法、装置、设备及系统

Country Status (1)

Country Link
CN (1) CN112749023B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113342554A (zh) * 2021-08-02 2021-09-03 阿里云计算有限公司 Io多路复用方法、介质、设备和操作系统
CN113760578A (zh) * 2021-08-28 2021-12-07 特斯联科技集团有限公司 跨进程快速传输大数据的方法、装置、设备及计算机程序
CN114661492A (zh) * 2022-03-03 2022-06-24 深圳融安网络科技有限公司 进程通信方法、系统、终端设备及介质
CN115442477A (zh) * 2022-08-31 2022-12-06 联想(北京)有限公司 一种控制方法、装置及电子设备
WO2023160253A1 (zh) * 2022-02-25 2023-08-31 京东方科技集团股份有限公司 业务处理方法及装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1463268A2 (en) * 2003-03-27 2004-09-29 Microsoft Corporation Method and system for processing notifications of shared resources
US20100210265A1 (en) * 2009-02-17 2010-08-19 Nokia Corporation Method and apparatus for providing shared services
CN107491355A (zh) * 2017-08-17 2017-12-19 山东浪潮商用系统有限公司 一种基于共享内存的进程间功能调用方法及装置
CN108255674A (zh) * 2017-12-31 2018-07-06 广东欧珀移动通信有限公司 多进程浏览器进程日志收集方法、装置以及移动终端

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1463268A2 (en) * 2003-03-27 2004-09-29 Microsoft Corporation Method and system for processing notifications of shared resources
US20100210265A1 (en) * 2009-02-17 2010-08-19 Nokia Corporation Method and apparatus for providing shared services
CN107491355A (zh) * 2017-08-17 2017-12-19 山东浪潮商用系统有限公司 一种基于共享内存的进程间功能调用方法及装置
CN108255674A (zh) * 2017-12-31 2018-07-06 广东欧珀移动通信有限公司 多进程浏览器进程日志收集方法、装置以及移动终端

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
朱团结;艾丽蓉;: "基于共享内存的Xen虚拟机间通信的研究", 计算机技术与发展, no. 07 *
荀长庆;杨乾明;伍楠;文梅;张春元;: "共享存储可重构计算机软硬件通信的优化实现", 计算机研究与发展, no. 08 *

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113342554A (zh) * 2021-08-02 2021-09-03 阿里云计算有限公司 Io多路复用方法、介质、设备和操作系统
CN113342554B (zh) * 2021-08-02 2022-01-04 阿里云计算有限公司 Io多路复用方法、介质、设备和操作系统
CN113760578A (zh) * 2021-08-28 2021-12-07 特斯联科技集团有限公司 跨进程快速传输大数据的方法、装置、设备及计算机程序
CN113760578B (zh) * 2021-08-28 2022-04-19 特斯联科技集团有限公司 跨进程快速传输大数据的方法、装置、设备及计算机程序
WO2023160253A1 (zh) * 2022-02-25 2023-08-31 京东方科技集团股份有限公司 业务处理方法及装置
CN114661492A (zh) * 2022-03-03 2022-06-24 深圳融安网络科技有限公司 进程通信方法、系统、终端设备及介质
CN115442477A (zh) * 2022-08-31 2022-12-06 联想(北京)有限公司 一种控制方法、装置及电子设备

Also Published As

Publication number Publication date
CN112749023B (zh) 2024-06-11

Similar Documents

Publication Publication Date Title
CN112749023A (zh) 一种信息的处理方法、装置、设备及系统
CN107450981B (zh) 一种区块链共识方法及设备
CN108170503B (zh) 一种跨系统运行安卓应用的方法、终端及存储介质
US10686756B2 (en) Method and apparatus for managing MAC address generation for virtualized environments
WO2020177564A1 (zh) Vnf的生命周期管理方法及装置
WO2020177482A1 (zh) 一种桌面虚拟化方法、相关设备及计算机存储介质
CN110875935B (zh) 消息发布、处理、订阅方法、装置及系统
US11281388B2 (en) Method for managing a multi-system shared memory, electronic device and non-volatile computer-readable storage medium
CN106776067B (zh) 多容器系统中系统资源的管理方法及管理装置
US20200304580A1 (en) Network information processing
CN111552945B (zh) 一种资源处理方法、装置及设备
CN116243995B (zh) 通信方法、装置、计算机可读存储介质以及电子设备
CN113296926B (zh) 一种资源分配方法、计算设备及存储介质
CN111930530A (zh) 一种基于物联网的设备消息处理方法、装置及介质
CN114265713B (zh) Rdma事件管理方法、装置、计算机设备及存储介质
US20130031264A1 (en) Hardware Bus Redirection Switching
CN112596669A (zh) 一种基于分布式存储的数据处理方法及装置
CN110022351B (zh) 一种业务请求的处理方法和装置
WO2023179183A1 (zh) 子程序同步处理
CN110245027B (zh) 一种进程间通信的方法和设备
US20220261489A1 (en) Capability management method and computer device
CN115934656A (zh) 信息处理方法、业务处理方法及装置
CN110879748A (zh) 一种共享资源分配方法、装置和设备
CN115373869A (zh) 基于aar的进程处理方法、装置及电子设备
US20200225972A1 (en) Autonomously reproducing and destructing virtual machines

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