CN115686875A - 用于在多个进程之间传输数据的方法、设备和程序产品 - Google Patents
用于在多个进程之间传输数据的方法、设备和程序产品 Download PDFInfo
- Publication number
- CN115686875A CN115686875A CN202110833108.9A CN202110833108A CN115686875A CN 115686875 A CN115686875 A CN 115686875A CN 202110833108 A CN202110833108 A CN 202110833108A CN 115686875 A CN115686875 A CN 115686875A
- Authority
- CN
- China
- Prior art keywords
- shared memory
- communication connection
- client
- server process
- memory block
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/14—Session management
- H04L67/141—Setup of application sessions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本公开涉及用于在多个进程之间传输数据的方法、设备和程序产品。在一种方法中,响应于接收到在计算设备中的客户端进程和服务器进程之间传输数据的请求,在所述客户端进程和所述服务器进程之间建立通信连接。响应于确定所述计算设备中存在可用共享存储区块,向所述通信连接分配共享存储区块。利用所述共享存储区块在所述客户端进程与所述服务器进程之间传输数据。进一步,提供了相应的设备和程序产品。利用本公开的示例性实现方式,共享存储区块可以为进程间的数据传输提供更高的带宽,进而提高数据传输的性能。
Description
技术领域
本公开的各实现方式涉及进程管理,更具体地,涉及管理在计算设备中的多个进程之间传输数据的方法、设备和计算机程序产品。
背景技术
随着计算机技术的发展,可以在单一的计算设备上运行多个进程,多个进程可以协同操作以便实现更为复杂的功能。目前已经提出了多种进程间通信方式。然而,已有的通信方式性能较低并且在传输大量数据时可能会出现难以接受的延迟。此时,如何以更高的效率来在多个进程之间传输数据,成为一个技术难题。
发明内容
因而,期望能够开发并实现一种以更为有效的方式来多个进程之间传输数据的技术方案。期望该技术方案能够与现有的进程管理技术相兼容,并且通过改造现有进程的各种配置,来以更为有效的方式管理进程间通信。
根据本公开的第一方面,提供了一种用于在多个进程之间传输数据的方法。在该方法中,响应于接收到在计算设备中的客户端进程和服务器进程之间传输数据的请求,在客户端进程和服务器进程之间建立通信连接。响应于确定计算设备中存在可用共享存储区块,向通信连接分配共享存储区块。利用共享存储区块在客户端进程与服务器进程之间传输数据。
根据本公开的第二方面,提供了一种电子设备,包括:至少一个处理器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行根据本公开的第一方面的方法。
根据本公开的第三方面,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的第一方面的方法。
附图说明
结合附图并参考以下详细说明,本公开各实现方式的特征、优点及其他方面将变得更加明显,在此以示例性而非限制性的方式示出了本公开的若干实现方式。在附图中:
图1示意性示出了根据一个技术方案的进程间通信的框图;
图2示意性示出了根据本公开的示例性实现方式的用于在多个进程之间传输数据的框图;
图3示意性示出了根据本公开的示例性实现方式的用于在多个进程之间传输数据的方法的流程图;
图4示意性示出了根据本公开的示例性实现方式的在客户端进程和服务器进程之间建立通信连接的框图;
图5示意性示出了根据本公开的示例性实现方式的由服务器进程的IO线程来管理各个通信连接的框图;
图6示意性示出了根据本公开的示例性实现方式的基于轮询方式来由服务器进程的多个IO线程管理各个通信连接的框图;
图7示意性示出了根据本公开的示例性实现方式的客户端进程和服务器进程之间的交互的框图;
图8示意性示出了根据本公开的示例性实现方式的客户端进程和服务器进程之间的交互的框图;
图9示意性示出了根据本公开的示例性实现方式的计算设备的物理区块与标识符之间的地址映射的框图;以及
图10示意性示出了根据本公开的示例性实现的用于在多个进程之间传输数据的设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的优选实现。虽然附图中显示了本公开的优选实现,然而应该理解,可以以各种形式实现本公开而不应被这里阐述的实现所限制。相反,提供这些实现是为了使本公开更加透彻和完整,并且能够将本公开的范围完整地传达给本领域的技术人员。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实现”和“一个实现”表示“至少一个示例实现”。术语“另一实现”表示“至少一个另外的实现”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
可以在计算设备上运行多个进程,并且多个进程可以协同操作以便实现更为复杂的功能。目前已经提出了基于共享内存来在在多个进程之间通信的技术方案。然而,出于多进程、多线程、存储器大小限制、线程负载均衡、竞争条件、错误处理、编程语言差异、大页面等方面的限制,这些技术方案难以在复杂环境中实现。
例如,该图1示意性示出了根据一个技术方案的进程间通信的框图100,该图示出了基于Unix域套接字(Unix Domain Socket,UDS)的通信方案。该通信方案需要在用户空间和内核空间之间交互。例如,可以按照常规缓存的大小,对套接字缓存120执行常规缓存读操作122。此时,大页面缓存124中的待传输数据需要经由至一个或多个常规缓存读操作122来处理。NVMe引擎110可以担任两个套接字缓存120和128之间的传输中介,并且可以经由大页面缓存写操作126来向套接字缓存128中写入数据。
将会理解,已有的进程间通信方式过程复杂,并且当需要在多个进程之间同步数据时,将会导致更加复杂的过程。当进程包括多个线程时,需要进一步考虑多个线程之间的冲突问题和负载平衡问题。又例如,当多个进程是使用不同编程语言(例如,Java和C++,等等)编写时,各种编程语言访问计算设备中的物理存储空间的方式有所不同,这导致需要提供额外的地址转换服务。因而,已有的进程间通信方式工作效率低下并且难以为多种进程提供统一的通信服务。
为了解决已有技术方案中的缺陷,本公开的示例性实现方式提出了一种用于在计算设备中的多个进程之间传输数据的方法。在下文中,将参见图2描述根据本公开的一个示例性实现方式的概要,该图2示意性示出了根据本公开的示例性实现方式的用于在多个进程之间传输数据的框图200。如图2所示,可以将进程划分为客户端进程210和服务器进程220两种类型。客户端进程210可以请求与服务器进程220建立通信连接230。继而,服务器进程220可以向通信连接230分配250一个或多个共享存储区块240,以便使得客户端进程210和服务器进程220可以经由该共享存储区块240来传输数据。
利用本公开的示例性实现方式,客户端进程210和服务器进程220可以经由共享存储区块240来传输数据,而不是经由通信连接230本身传输数据。以此方式,可以大大提高数据传输效率,并且避免将较大的待传输区块拆分为通信连接230支持的多个较小传输区块。
在下文中,将参见图3描述根据本公开的一个示例性实现方式的更多细节。图3示意性示出了根据本公开的示例性实现方式的用于在多个进程之间传输数据的方法300的流程图。如图3所示,在框310处,响应于接收到在客户端进程210和服务器进程220之间传输数据的请求,在客户端进程210和服务器进程220之间建立通信连接230。根据本公开的一个示例性实现方式,可以将发起请求的进程称为客户端进程210,并且将另一进程称为服务器进程220。可以在服务器进程220处运行根据本公开的一个示例性实现方式的方法300。具体地,可以在客户端进程210中启动管理线程用于监视来气客户端进程210的连接请求。
在接收到来自客户端进程210的请求之后,可以在客户端进程210和服务器进程220之间建立通信连接230。在此,通信连接230可以是基于UDS的连接,并且可以为建立的通信连接230指定唯一的连接标识符。根据本公开的一个示例性实现方式,可以在客户端进程210和服务器进程220之间建立一个或多个通信连接,此时,每个通信连接都具有相应的连接标识符。
将会理解,客户端进程210可以包括一个或多个线程,并且每个线程可以具有自己的通信连接。在下文中,将参见图4描述有关通信连接的更多细节。图4示意性示出了根据本公开的示例性实现方式的在客户端进程210和服务器进程220之间建立通信连接的框图400。在图4中,客户端进程210包括多个线程410、…、412。此时,每个线程可以向服务器进程220发送连接请求。服务器进程220中的服务线程440可以监听来自客户端进程210的请求,如果接收到来自客户端进程210中的客户端线程的请求,可以在客户端线程和服务器进程220之间建立通信连接。具体地,可以为线程410建立通信连接420,可以为线程412建立通信连接422,等等。
根据本公开的一个示例性实现方式,服务器进程220可以包括多个IO线程420、…、422。具体地,IO线程420可以管理通信连接430,IO线程422可以管理通信连接432。将会理解,尽管图4示出了一个IO线程管理一个通信连接的情况,根据本公开的一个示例性实现方式,每个IO线程可以管理一个或多个通信连接。尽管图4仅示出了在一个客户端进程210和一个服务器进程220之间建立通信连接的示例。根据本公开的一个示例性实现方式,一个客户端进程210可以与一个或多个其他服务器进程建立通信连接,并且一个服务器进程220可以与其他的一个或多个客户端进程建立通信连接。
将根据本公开的一个示例性实现方式,客户端进程和服务器进程的角色是相对的,并且当某个进程与多个其他进程进行通信时,该进程可以承担多个角色的功能。例如,当服务器进程220发起与另一进程的通信时,相对于该另一进程而言,服务器进程220可以进一步以客户端角色操作。将会理解,尽管图4仅示出了多个IO线程420、…、422管理来自同一客户端进程210的情况,根据本公开的一个示例性实现方式,当多个客户端进程连接至服务器进程220时,这些IO线程420、…、422可以分别管理与多个客户端进程中的多个线程的多个通信连接。
根据本公开的一个示例性实现方式,IO线程的数量可以是基于计算设备中的处理器核的数量来确定的。以此方式,每个处理器核可以调度一个IO线程,进而可以提高IO线程的性能并且提高整个服务器进程220的性能。将会理解,IO线程的数量不能无限制地提高,当存在大量通信连接时,一个IO线程可以管理多个通信连接。具体地,图5示意性示出了根据本公开的示例性实现方式的用于由服务器进程220的IO线程来管理各个通信连接的框图500。在图5中,IO线程420可以管理来自一个或多个客户端进程的通信连接430、510、…、512,IO线程422可以管理来自一个或多个客户端进程的通信连接432、514、…、516,等等。
进一步,参见图6描述如何调度多个通信连接,图6示意性示出了根据本公开的示例性实现方式的基于轮询方式来由服务器进程的多个IO线程管理各个通信连接的框图600。如图6所示,服务器进程220的服务线程可以不断地监控是否出现新的通信连接。如果确定出现新的通信连接610,则可以向该通信连接610分配区块620。进一步,可以基于负载均衡的原则来在多个IO线程420、…、422中选择工作负载较低的IO线程。例如,可以基于轮询方式630来在多个IO线程中按顺序选择一个IO线程来控制新创建的通信连接610。
上文已经描述了有关建立通信连接和管理通信连接的具体过程,在下文中,返回图3描述向通信连接分配共享存储区块的更多细节。在图3的框320处,响应于确定计算设备中存在可用共享存储区块,向通信连接230分配共享存储区块240。计算设备可以包括共享区块池,并且可以从该共享区块池中寻找可用共享存储区块。在此,共享区块池具有预定大小,并且区块可以被定义为例如2M、4M或者其他大小。继续参见图6,可以向每个通信连接分配共享存储区块。例如,可以向通信连接430分配区块520,可以向通信连接510分配区块522,可以向通信连接512分配区块524,可以向通信连接434分配区块530,可以向通信连接514分配区块532,可以向通信连接516分配区块534,等等。
根据本公开的一个示例性实现方式,如果已经向通信连接230分配了共享存储区块240,则可以将该通信连接230的属性设置为“共享存储模式”,以指示客户端进程210与服务器进程220经由共享存储区块240传输数据。此时,共享存储区块240可以作为客户端进程210和服务器进程220之间的中介,从而实现传输数据的目的。
返回图3,在框330处,利用共享存储区块240在客户端进程210与服务器进程220之间传输数据。具体地,客户端进程210可以将IO请求写入共享存储区块240,以便服务器进程220做出响应的相应。在下文中,将参见图7描述有关客户端进程210和服务器进程220之间的数据传输的更多细节。图7示意性示出了根据本公开的示例性实现方式的客户端进程和服务器进程之间的交互的框图700。如图7所示,客户端进程210可以向服务器进程220发送710连接请求,以便在客户端进程210和220之间建立通信连接。服务器进程220可以检查712在共享区块池中是否存在可用区块。如果存在,则客户端进程210可以向建立的通信连接分配共享存储区块。
此时,共享存储区块已经被分配用于在客户端进程210和服务器进程220之间传输数据。继而,客户端进程210可以经由共享存储区块来向服务器进程220发送716IO请求。IO请求可以包括发送请求和接收请求,首先描述发送请求的示例。此时,在“共享存储模式”下,客户端进程210可以在共享存储区块中写入用于发送数据的IO请求。例如,可以向共享存储区块写入发送请求以及待发送的数据,以便由服务器进程读取。
服务器进程可以从共享存储区块获取并且执行718IO请求。服务器进程220可以确定IO请求的类型,对于发送请求,服务器进程220可以从共享存储区块读取所发送的数据。在已经执行IO请求之后,服务器进程220可以向客户端进程210发送720应答,以便通知客户端进程210来获取执行IO的结果。对于发送请求的应答可以表示:服务器进程220已经接收到所发送的数据,以便客户端进程210可以基于共享存储区块来处理722应答。
对于接收请求而言,客户端进程210可以在共享存储区块中写入用于接收数据的IO请求。例如,可以向共享存储区块写入接收请求,并且等待服务器进程220向共享存储区块中写入数据。服务器进程220可以向共享存储区块写入待接收的数据,并且此时应答可以通知客户端进程210从共享存储区块中取出由服务器进程220写入的数据。
将会理解,随着服务器进程220的运行,共享区块池中的可用区块可能会被耗尽。当服务器进程220中的服务线程440检测到新的通信连接时,共享区块池中可能已经不再存在可分配的区块。此时,可以将通信连接的属性设置为“非共享存储模式”,以指示客户端进程210与服务器进程220经由通信连接来传输数据。
当通信连接的属性为“非共享存储模式”时,客户端进程210和服务器进程220可以按照已有技术方案的UDS连接方式传输数据。例如,客户端进程210可以经由该UDS通信连接来向服务器进程220传输数据。尽管此时的基于UDS通信连接的传输速度可能会低于利用共享存储区块传输数据的速度,UDS通信连接可以在存储区块被耗尽时仍然支持两个进程之间的数据传输。
在下文中,将参见图8描述使用UDS通信连接的进程间通信过程。图8示意性示出了根据本公开的示例性实现方式的客户端进程和服务器进程之间的交互的框图800。如图8所示,客户端进程210可以向服务器进程220发送810连接请求以便建立通信连接。服务器进程220可以检查是否存在可用存储区块,如果确定812不存在可用存储区块,则可以通知814未分配共享存储区块。此时,客户端进程210可以基于已有的UDS连接方式,经由建立的通信连接来发送816IO请求。
服务器进程220可以从UDS通信连接获取818IO请求并且执行该IO请求。在已经执行了IO请求之后,可以向客户端进程210发送810应答,以便通知客户端进程210执行后续步骤。继而,客户端进程210可以基于UDS通信连接,取回来自服务器进程220的数据或者表示服务器进程220已经接收到数据的确认。在此,图8中的步骤822的具体操作与图7中的步骤722的具体操作类似,不同之处在于步骤822是经由UDS通信连接来执行的,并且步骤722是基于被分配给该UDS的共享存储区块来执行的。
根据本公开的一个示例性实现方式,可以不断地检查在存储资源池中是否存在可用区块,如果存在,则可以为已经建立的通信连接分配共享存储区块。在后续的通信过程中,客户端进程210可以进一步基于共享存储区块来执行进程间通信。根据本公开的一个示例性实现方式,可以随时调整用于辅助进程间通信的方式:在存储空间不足时利用UDS通信连接传输数据,并且在存储空间充足时利用共享存储空间传输数据。以此方式,可以尽量充分地利用计算设备中的可用存储空间,从而提高进程间通信的性能。
将会理解,随着计算设备的运行,如果进程间数据传输的要求已经完成,则可以断开两个进程之间的通信连接。此时,已经不再需要使用被分配给该通信连接的共享存储区块,因而可以释放这些区块。此时,共享资源池中的可用区块的数量将会增加,并且被释放的区块可以被分配给其他通信连接。根据本公开的一个示例性实现方式,可以将这些区块分配给已经建立的尚未被分配共享存储区块的通信连接。备选地和/或附加地,可以将这些区块分配给新建立的通信连接。
在实际运行环境中,客户端进程210和服务器进程220可以使用相同或者不同的编程语言来编写。由于不同编程语言可访问的地址空间的格式和访问方式都有所不同,这导致使用不同语言编写的进程不能直接访问所分配的共享存储区块。根据本公开的一个示例性实现方式,可以建立地址映射,以便于向通信连接分配由不同类型的进程均可访问的共享存储区块。
在下文中,将参见图9描述有关地址映射的更多细节。图9示意性示出了根据本公开的示例性实现方式的计算设备的物理区块与标识符之间的地址映射的框图900。如图所示,可以获取各个共享存储区块在计算设备中的地址(也即物理区块920、…、930的地址)。进一步,可以建立上述地址与共享存储区块的标识符之间的映射关系。换言之,如地址映射910所示,可以利用标识符来表示每个物理区块。例如,可以使用标识符922来表示物理区块920,可以使用标识符932来表示物理区块930,等等。此时,可以指示客户端进程经由标识符来访问共享存储区块。
如箭头924所示,可以利用标识符922来表示分配给通信连接230的共享存储区块240;如箭头934所示,可以利用标识符932来表示分配给通信连接510的共享存储区块522。下文表1示意性示出了根据本公开的一个示例性实现方式的地址映射。
表1地址映射的示例
开始地址 | 结束地址 | 属性 | 节点 | 文件名称 |
0x02…00 | 0x04…00 | rw-s | 1582040 | /dev/hugepages/spdk_map0 |
0x04…00 | 0x06…00 | rw-s | 1878272 | /dev/hugepages/spdk_map1 |
… | ||||
0x14…00 | 0x16…00 | rw-s | 1701715 | /dev/hugepages/spdk_map9 |
在表1中,第一列表示物理区块在计算设备中的物理地址的开始地址,第二列表示物理区块在计算设备中的物理地址的结束地址(在此示例中,区块大小为2M),第三列表示物理区块的读写属性,第四列表示物理区块的唯一节点标识符,并且第五列表示与物理区块所对应的文件名称,也即标识符。此时,客户端进程210可以通过文件名称来直接访问被分配的共享存储区块内的数据。将会理解,尽管表1示出了各个区块具有2M大小的示例,根据本公开的一个示例性实现方式,各个区块还可以具有其他大小。
根据本公开的一个示例性实现方式,可以按照将要在进程之间传输的数据量,来为通信连接分配不同大小的共享存储空间。例如,在区块大小为2M的情况下,可以为一个通信连接分配1个区块,并且为另一通信连接分配2个或者更多区块。利用本公开的示例性实现方式,可以不必关心使用何种编程语言来编写各个进程,而是各个进程可以直接使用标识符来访问被分配的共享存储区块中的数据。以此方式,可以向各个进程提供统一的共享存储区块的访问入口,并且消除不同编程语言的影响。
相对于仅使用UDS通信连接来传输数据的已有技术方案而言,通过为UDS通信连接分配共享存储区块,可以按照数据传输的需求来为两个进程分配更多的共享存储空间。以此方式,可以提高进程间数据传输的带宽并且降低传输延迟。
在上文中已经参见图2至图9详细描述了根据本公开的方法的示例,在下文中将描述相应的装置的实现。根据本公开的示例性实现,提供了
根据本公开的示例性实现方式,该装置进一步包括用于执行上文描述的方法300中的其他步骤的模块。
图10示意性示出了根据本公开的示例性实现的用于在多个进程之间传输数据的设备1000的框图。如图所示,设备1000包括中央处理单元(CPU)1001,其可以根据存储在只读存储器(ROM)1002中的计算机程序指令或者从存储单元1008加载到随机访问存储器(RAM)1003中的计算机程序指令,来执行各种适当的动作和处理。在RAM 1003中,还可存储设备1000操作所需的各种程序和数据。CPU 1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
设备1000中的多个部件连接至I/O接口1005,包括:输入单元1006,例如键盘、鼠标等;输出单元1007,例如各种类型的显示器、扬声器等;存储单元1008,例如磁盘、光盘等;以及通信单元1009,例如网卡、调制解调器、无线通信收发机等。通信单元1009允许设备1000通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法300,可由处理单元1001执行。例如,在一些实现中,方法300可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元1008。在一些实现中,计算机程序的部分或者全部可以经由ROM 1002和/或通信单元1009而被载入和/或安装到设备1000上。当计算机程序被加载到RAM 1003并由CPU 1001执行时,可以执行上文描述的方法300的一个或多个步骤。备选地,在其他实现中,CPU 1001也可以以其他任何适当的方式被配置以实现上述过程/方法。
根据本公开的示例性实现,提供了一种电子设备,包括:至少一个处理器;易失性存储器;以及与至少一个处理器耦合的存储器,存储器具有存储于其中的指令,指令在被至少一个处理器执行时使得设备执行用于在多个进程之间传输数据的动作。该动作包括:响应于接收到在计算设备中的客户端进程和服务器进程之间传输数据的请求,在客户端进程和服务器进程之间建立通信连接;响应于确定计算设备中存在可用共享存储区块,向通信连接分配共享存储区块;以及利用共享存储区块在客户端进程与服务器进程之间传输数据。
根据本公开的一个示例性实现方式,向通信连接分配共享存储区块包括:将通信连接的属性设置为“共享存储模式”,以指示客户端进程与服务器进程经由共享存储区块传输数据。
根据本公开的一个示例性实现方式,响应于确定计算设备中不存在可用共享存储区块,将通信连接的属性设置为“非共享存储模式”,以指示客户端进程与服务器进程经由通信连接来传输数据。
根据本公开的一个示例性实现方式,在客户端进程和服务器进程之间建立通信连接包括:接收来自客户端进程中的客户端线程的请求,在客户端线程和服务器进程之间建立通信连接;以及动作进一步包括:响应于接收到来自客户端进程中的另一客户端线程的另一请求,在客户端线程和服务器进程之间建立另一通信连接。
根据本公开的一个示例性实现方式,响应于确定客户端进程与服务器进程之间存在多个通信连接,分别利用服务器进程的多个服务器线程来管理多个通信连接。
根据本公开的一个示例性实现方式,多个服务器线程分别由计算设备的多个处理器核来运行。
根据本公开的一个示例性实现方式,客户端进程和服务器进程使用不同的编程语言来编写,以及其中向通信连接分配共享存储区块包括:获取共享存储区块在计算设备中的地址;建立地址与共享存储区块的标识符之间的映射关系;以及指示客户端进程经由标识符来访问共享存储区块。
根据本公开的一个示例性实现方式,利用共享存储区块在客户端进程与服务器进程之间传输数据包括以下至少任一项:指示客户端进程经由共享存储区块向服务器进程发送数据;以及指示客户端进程经由共享存储区块从服务器进程接收数据。
根据本公开的一个示例性实现方式,该动作进一步包括:响应于接收到用于停止数据传输的请求,断开通信连接;以及释放被分配给通信连接的共享存储区块。
根据本公开的一个示例性实现方式,该动作在服务器进程处被执行。
根据本公开的示例性实现,提供了一种计算机程序产品,计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,机器可执行指令用于执行根据本公开的方法。
根据本公开的示例性实现,提供了一种计算机可读介质。计算机可读介质上存储有机器可执行指令,当机器可执行指令在被至少一个处理器执行时,使得至少一个处理器实现根据本公开方法。
本公开可以是方法、设备、系统和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实现中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实现的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其他可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其他可编程数据处理装置、或其他设备上,使得在计算机、其他可编程数据处理装置或其他设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其他可编程数据处理装置、或其他设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实现的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实现,上述说明是示例性的,并非穷尽性的,并且也不限于所公开的各实现。在不偏离所说明的各实现的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实现的原理、实际应用或对市场中的技术的改进,或者使本技术领域的其他普通技术人员能理解本文公开的各实现。
Claims (20)
1.一种用于在多个进程之间传输数据的方法,包括:
响应于接收到在计算设备中的客户端进程和服务器进程之间传输数据的请求,在所述客户端进程和所述服务器进程之间建立通信连接;
响应于确定所述计算设备中存在可用共享存储区块,向所述通信连接分配共享存储区块;以及
利用所述共享存储区块在所述客户端进程与所述服务器进程之间传输数据。
2.根据权利要求1所述的方法,其中向所述通信连接分配所述共享存储区块包括:将所述通信连接的属性设置为“共享存储模式”,以指示所述客户端进程与所述服务器进程经由所述共享存储区块传输数据。
3.根据权利要求1所述的方法,进一步包括:响应于确定所述计算设备中不存在可用共享存储区块,将所述通信连接的属性设置为“非共享存储模式”,以指示所述客户端进程与所述服务器进程经由所述通信连接来传输所述数据。
4.根据权利要求1所述的方法,其中在所述客户端进程和所述服务器进程之间建立所述通信连接包括:接收来自所述客户端进程中的客户端线程的所述请求,在所述客户端线程和所述服务器进程之间建立所述通信连接;以及
所述方法进一步包括:响应于接收到来自所述客户端进程中的另一客户端线程的另一请求,在所述客户端线程和所述服务器进程之间建立另一通信连接。
5.根据权利要求4所述的方法,进一步包括:响应于确定所述客户端进程与所述服务器进程之间存在多个通信连接,分别利用所述服务器进程的多个服务器线程来管理所述多个通信连接。
6.根据权利要求5所述的方法,其中所述多个服务器线程分别由所述计算设备的多个处理器核来运行。
7.根据权利要求1所述的方法,其中所述客户端进程和所述服务器进程使用不同的编程语言来编写,以及其中向所述通信连接分配所述共享存储区块包括:
获取所述共享存储区块在所述计算设备中的地址;
建立所述地址与所述共享存储区块的标识符之间的映射关系;以及
指示所述客户端进程经由所述标识符来访问所述共享存储区块。
8.根据权利要求1所述的方法,其中利用所述共享存储区块在所述客户端进程与所述服务器进程之间传输数据包括以下至少任一项:
指示所述客户端进程经由所述共享存储区块向所述服务器进程发送数据;以及
指示所述客户端进程经由所述共享存储区块从所述服务器进程接收数据。
9.根据权利要求1所述的方法,进一步包括:响应于接收到用于停止所述数据传输的请求,
断开所述通信连接;以及
释放被分配给所述通信连接的所述共享存储区块。
10.根据权利要求1所述的方法,其中所述方法在所述服务器进程处被执行。
11.一种电子设备,包括:
至少一个处理器;
易失性存储器;以及
与所述至少一个处理器耦合的存储器,所述存储器具有存储于其中的指令,所述指令在被所述至少一个处理器执行时使得所述设备执行用于在多个进程之间传输数据的动作,所述动作包括:
响应于接收到在计算设备中的客户端进程和服务器进程之间传输数据的请求,在所述客户端进程和所述服务器进程之间建立通信连接;
响应于确定所述计算设备中存在可用共享存储区块,向所述通信连接分配共享存储区块;以及
利用所述共享存储区块在所述客户端进程与所述服务器进程之间传输数据。
12.根据权利要求11所述的设备,其中向所述通信连接分配所述共享存储区块包括:将所述通信连接的属性设置为“共享存储模式”,以指示所述客户端进程与所述服务器进程经由所述共享存储区块传输数据。
13.根据权利要求11所述的设备,进一步包括:响应于确定所述计算设备中不存在可用共享存储区块,将所述通信连接的属性设置为“非共享存储模式”,以指示所述客户端进程与所述服务器进程经由所述通信连接来传输所述数据。
14.根据权利要求11所述的设备,其中在所述客户端进程和所述服务器进程之间建立所述通信连接包括:接收来自所述客户端进程中的客户端线程的所述请求,在所述客户端线程和所述服务器进程之间建立所述通信连接;以及
所述动作进一步包括:响应于接收到来自所述客户端进程中的另一客户端线程的另一请求,在所述客户端线程和所述服务器进程之间建立另一通信连接。
15.根据权利要求14所述的设备,进一步包括:响应于确定所述客户端进程与所述服务器进程之间存在多个通信连接,分别利用所述服务器进程的多个服务器线程来管理所述多个通信连接。
16.根据权利要求15所述的设备,其中所述多个服务器线程分别由所述计算设备的多个处理器核来运行,并且所述动作在所述服务器进程处被执行。
17.根据权利要求11所述的设备,其中所述客户端进程和所述服务器进程使用不同的编程语言来编写,以及其中向所述通信连接分配所述共享存储区块包括:
获取所述共享存储区块在所述计算设备中的地址;
建立所述地址与所述共享存储区块的标识符之间的映射关系;以及
指示所述客户端进程经由所述标识符来访问所述共享存储区块。
18.根据权利要求11所述的设备,其中利用所述共享存储区块在所述客户端进程与所述服务器进程之间传输数据包括以下至少任一项:
指示所述客户端进程经由所述共享存储区块向所述服务器进程发送数据;以及
指示所述客户端进程经由所述共享存储区块从所述服务器进程接收数据。
19.根据权利要求11所述的设备,所述动作进一步包括:响应于接收到用于停止所述数据传输的请求,
断开所述通信连接;以及
释放被分配给所述通信连接的所述共享存储区块。
20.一种计算机程序产品,所述计算机程序产品被有形地存储在非瞬态计算机可读介质上并且包括机器可执行指令,所述机器可执行指令用于执行根据权利要求1至10中的任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110833108.9A CN115686875A (zh) | 2021-07-22 | 2021-07-22 | 用于在多个进程之间传输数据的方法、设备和程序产品 |
US17/491,323 US11438423B1 (en) | 2021-07-22 | 2021-09-30 | Method, device, and program product for transmitting data between multiple processes |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110833108.9A CN115686875A (zh) | 2021-07-22 | 2021-07-22 | 用于在多个进程之间传输数据的方法、设备和程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115686875A true CN115686875A (zh) | 2023-02-03 |
Family
ID=83149998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110833108.9A Pending CN115686875A (zh) | 2021-07-22 | 2021-07-22 | 用于在多个进程之间传输数据的方法、设备和程序产品 |
Country Status (2)
Country | Link |
---|---|
US (1) | US11438423B1 (zh) |
CN (1) | CN115686875A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116450055A (zh) * | 2023-06-15 | 2023-07-18 | 支付宝(杭州)信息技术有限公司 | 一种多处理卡间的存储区域分配方法和系统 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR102605953B1 (ko) * | 2022-02-17 | 2023-11-24 | 주식회사 마인드웨어웍스 | 컨택센터 서비스 연계 제공 시스템 |
CN115827526B (zh) * | 2022-11-07 | 2023-10-27 | 北京百度网讯科技有限公司 | 数据处理方法、装置、设备以及存储介质 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9519581B2 (en) * | 2013-09-16 | 2016-12-13 | Vmware, Inc. | Storage integration for host-based write-back caching |
US20150312366A1 (en) * | 2014-04-24 | 2015-10-29 | Strato Scale Ltd. | Unified caching of storage blocks and memory pages in a compute-node cluster |
EP3673404A4 (en) * | 2019-08-20 | 2020-10-14 | Alibaba Group Holding Limited | BLOCKCHAIN DATA STORAGE BASED ON SHARED N UDS AND ERROR CORRECTION CODE |
US11656891B2 (en) * | 2019-09-27 | 2023-05-23 | Red Hat, Inc. | Copy-on-write for virtual machines with encrypted storage |
JP2021128699A (ja) * | 2020-02-17 | 2021-09-02 | 株式会社日立製作所 | 分散ストレージ装置および分散ストレージ装置のデータ管理方法 |
-
2021
- 2021-07-22 CN CN202110833108.9A patent/CN115686875A/zh active Pending
- 2021-09-30 US US17/491,323 patent/US11438423B1/en active Active
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116450055A (zh) * | 2023-06-15 | 2023-07-18 | 支付宝(杭州)信息技术有限公司 | 一种多处理卡间的存储区域分配方法和系统 |
CN116450055B (zh) * | 2023-06-15 | 2023-10-27 | 支付宝(杭州)信息技术有限公司 | 一种多处理卡间的存储区域分配方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
US11438423B1 (en) | 2022-09-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107590001B (zh) | 负载均衡方法及装置、存储介质、电子设备 | |
CN115686875A (zh) | 用于在多个进程之间传输数据的方法、设备和程序产品 | |
CN103607428B (zh) | 一种访问共享内存的方法和装置 | |
US11201836B2 (en) | Method and device for managing stateful application on server | |
CN111787126B (zh) | 容器创建方法、服务器及存储介质 | |
WO2022111313A1 (zh) | 一种请求处理方法及微服务系统 | |
KR102204670B1 (ko) | 프록시 기반 멀티스레딩 메시지 전달 통신을 위한 기술 | |
CN109857545B (zh) | 一种数据传输方法及装置 | |
WO2020253407A1 (zh) | 一种执行写操作、读操作的方法及装置 | |
CN111459650B (zh) | 管理专用处理资源的存储器的方法、设备和介质 | |
CN111478781B (zh) | 一种消息广播的方法和装置 | |
CN111857539A (zh) | 用于管理存储系统的方法、设备和计算机程序产品 | |
CN111831503B (zh) | 一种基于监控代理的监控方法和监控代理装置 | |
CN113535319A (zh) | 一种实现多rdma网卡虚拟化的方法、设备及存储介质 | |
CN113411363A (zh) | 一种镜像文件的上传方法、相关设备及计算机存储介质 | |
US20190324817A1 (en) | Method, apparatus, and computer program product for optimization in distributed system | |
CN112822299B (zh) | 基于rdma的数据传输方法、装置及电子设备 | |
CN117041147B (zh) | 智能网卡设备、主机设备和方法及系统 | |
US10176144B2 (en) | Piggybacking target buffer address for next RDMA operation in current acknowledgement message | |
CN111294220B (zh) | 基于nginx的网络隔离配置方法和装置 | |
CN114726657B (zh) | 中断管理和数据收发管理的方法、装置及智能网卡 | |
CN110798358A (zh) | 分布式服务标识方法、装置、计算机可读介质及电子设备 | |
CN109309583B (zh) | 基于分布式系统的信息获取方法、装置、电子设备和介质 | |
CN114518833B (zh) | 用于存储管理的方法、电子设备和计算机程序产品 | |
CN114615273B (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 |