CN111597061A - 一种客户端或服务端进行远程过程调用方法及装置 - Google Patents
一种客户端或服务端进行远程过程调用方法及装置 Download PDFInfo
- Publication number
- CN111597061A CN111597061A CN202010448873.4A CN202010448873A CN111597061A CN 111597061 A CN111597061 A CN 111597061A CN 202010448873 A CN202010448873 A CN 202010448873A CN 111597061 A CN111597061 A CN 111597061A
- Authority
- CN
- China
- Prior art keywords
- rpc interface
- interface service
- client
- server
- call
- 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
- 238000000034 method Methods 0.000 title claims abstract description 256
- 230000008569 process Effects 0.000 claims abstract description 132
- 230000006870 function Effects 0.000 claims description 173
- 230000003068 static effect Effects 0.000 claims description 83
- 238000012544 monitoring process Methods 0.000 claims description 50
- OHKOGUYZJXTSFX-KZFFXBSXSA-N ticarcillin Chemical compound C=1([C@@H](C(O)=O)C(=O)N[C@H]2[C@H]3SC([C@@H](N3C2=O)C(O)=O)(C)C)C=CSC=1 OHKOGUYZJXTSFX-KZFFXBSXSA-N 0.000 claims description 18
- 230000004044 response Effects 0.000 claims description 12
- 238000004590 computer program Methods 0.000 claims description 11
- 230000000977 initiatory effect Effects 0.000 claims description 9
- 238000004891 communication Methods 0.000 abstract description 24
- 230000007246 mechanism Effects 0.000 abstract description 20
- 238000012545 processing Methods 0.000 abstract description 11
- 238000011161 development Methods 0.000 abstract description 4
- 238000010586 diagram Methods 0.000 description 15
- 230000001360 synchronised effect Effects 0.000 description 5
- 230000004048 modification Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 4
- 230000008901 benefit Effects 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 230000010365 information processing Effects 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000005259 measurement Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000002035 prolonged effect Effects 0.000 description 1
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/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
-
- 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
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/541—Client-server
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/549—Remote execution
-
- 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)
- Telephonic Communication Services (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供一种客户端或服务端进行远程过程调用方法及装置,所述方法包括:确定待调用的服务端的RPC接口服务和动态调用号;确定服务端节点号与客户端节点号相同,且进程编号标识的进程与客户端所在进程相同时,通过直接调用的方式,调用对应的回调函数,使服务端为客户端提供RPC接口服务;否则,通过创建SOCKET连接的方式,调用对应的回调函数,使服务端为客户端提供RPC接口服务。利用本发明提供的方法通过客户端与服务端RPC接口服务的位置关系,选择适合的通信方式,通信机制可靠,高效,且RPC接口函数原型统一,与通用机制下的复杂的参数处理流程相比,减少了通信耗时和资源损耗,适用于各类嵌入式应用开发场景。
Description
技术领域
本发明涉及分布式远程过程调用领域,特别涉及一种客户端或服务端进行远程过程调用方法及装置。
背景技术
在交换机、路由器等嵌入式设备之上,业务方一般选择基于RPC机制的多进程软件架构构建设备,RPC(Remote Procedure Call,远程过程调用),是一种常用的同步通信机制,使用此种机制能方便业务进程使用函数调用的方式来调用其他进程的服务,服务端和业务端的交互示意图如图1所示,选择此类架构的优势在于多进程架构可以满足软件的健壮性、可维护性、故障定位的需求,使用RPC机制可以满足机框式设备跨节点、跨进程通信的需求。
由于分布式嵌入式设备上的CPU、内存、磁盘等由于硬件资源有限,在所述分布式嵌入式设备上的使用RPC机制需要进一步减少占用的硬件资源并提高部署与使用的简易度,但现有的C语言同步通信框架,如Doors、Sun RPC等,普遍存在着框架复杂的问题,例如,Doors机制是基于文件描述符的,具体通过读取本地节点中的文件来进行同步通讯,实际上为IPC(Inter-Process CommunicationIPC,进程间通信)机制,只适用于Solaris***(特殊UNIX***),且仅能在跨进程而非跨节点运行;而Sun RPC是基于IP的重量级框架,定义RPC接口时流程复杂,且因Sun RPC的通用性较高,多种嵌入式的语言均可以在Sun RPC框架下进行同步通信,使得框架内部的异常处理与通用化处理流程和处理文件很多,导致该机制占用大量的内存和磁盘资源,最终使得通信时长变长,此种RPC机制使用复杂,且占用CPU资源多,并不适合嵌入式设备的远程分布式通信场景,因此目前C语言同步通信框架在远程分布式场景下,进行RPC机制的多进程软件架构构建设备的易用性、资源占用、通信高效性等方面还需要进一步提升。
发明内容
本发明提供一种客户端或服务端进行远程过程调用方法、及装置,用于解决:现有的RPC机制使用复杂,占用CPU资源多,不适用于嵌入式设备的远程分布式通信场景的问题。
本发明第一方面提供一种客户端进行远程过程调用RPC的方法,所述方法包括:
确定待调用的服务端提供的RPC接口服务和对应的动态调用号,所述动态调用号包括静态调用号和服务端所在节点号,所述静态调用号包括所述RPC接口服务对应的进程编号和回调函数编号;
确定所述服务端所在节点号与客户端所在节点号相同,且所述进程编号标识的进程与客户端所在进程相同时,通过直接调用的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务;
否则,通过创建套接字SOCKET连接的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务。
本发明第二方面提供一种服务端进行远程过程调用RPC的方法,所述方法包括:
接收客户端所发起的对服务端提供的RPC接口服务的调用;
响应所述调用,为客户端提供所述RPC接口服务;
其中,在服务端所在节点号与客户端所在节点号相同,且服务端提供的RPC接口服务对应的进程与客户端所在进程相同时,发起的调用为直接调用的方式,否则为创建套接字SOCKET连接的方式。
本发明第三方面提供一种客户端进行远程过程调用RPC的装置,所述装置包括:
存储器,用于存储指令;
处理器,用于读取所述存储器中的指令,执行下列过程:
确定待调用的服务端提供的RPC接口服务和对应的动态调用号,所述动态调用号包括静态调用号和服务端所在节点号,所述静态调用号包括所述RPC接口服务对应的进程编号和回调函数编号;
确定所述服务端所在节点号与客户端所在节点号相同,且所述进程编号标识的进程与客户端所在进程相同时,通过直接调用的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务;
否则,通过创建套接字SOCKET连接的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务。
本发明第四方面提供一种服务端进行远程过程调用RPC的装置,所述装置包括:
存储器,用于存储指令;
处理器,用于读取所述存储器中的指令,执行下列过程:
接收客户端所发起的对服务端提供的RPC接口服务的调用;
响应所述调用,为客户端提供所述RPC接口服务;
其中,在服务端所在节点号与客户端所在节点号相同,且服务端提供的RPC接口服务对应的进程与客户端所在进程相同时,发起的调用为直接调用的方式,否则为创建套接字SOCKET连接的方式。
本发明第五方面提供一种客户端进行远程过程调用RPC的装置,所述装置包括如下模块:
比对模块,用于确定待调用的服务端提供的RPC接口服务和对应的动态调用号,所述动态调用号包括静态调用号和服务端所在节点号,所述静态调用号包括所述RPC接口服务对应的进程编号和回调函数编号;
连接方式确定模块,用于确定所述服务端所在节点号与客户端所在节点号相同,且所述进程编号标识的进程与客户端所在进程相同时,通过直接调用的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务;
否则,通过创建套接字SOCKET连接的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供调用所述RPC接口服务。
本发明第六方面提供一种服务端进行远程过程调用RPC的装置,所述装置包括如下模块:
接收指示模块,用于接收客户端所发起的对服务端提供的RPC接口服务的调用;
建立连接模块,用于响应所述调用,为客户端提供所述RPC接口服务;
其中,在服务端所在节点号与客户端所在节点号相同,且服务端提供的RPC接口服务对应的进程与客户端所在进程相同时,发起的调用为直接调用的方式,否则为创建套接字SOCKET连接的方式。
本发明第七方面提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本发明第一方面提供的方法,或者执行实现本发明第二方面提供的方法。
利用本发明提供的一种客户端进行远程过程调用RPC的方法,可以使客户端根据自身与服务端RPC接口服务的相对位置关系,选择适合该位置关系的通信方式,通信机制可靠,高效,且RPC接口服务回调函数形式统一,与通用机制下的复杂的参数处理流程相比,减少了通信耗时和资源损耗,适用于各类嵌入式应用开发场景。
附图说明
图1为服务端和业务端的交互示意图;
图2为一种进行远程过程调用RPC的***;
图3为一种客户端进行远程过程调用RPC的方法的流程图;
图4为一种完整的客户端进行远程过程调用RPC的方法的完整流程图;
图5为一种服务端进行远程过程调用RPC的方法的流程图;
图6为一种客户端进行远程过程调用RPC的装置的结构示意图;
图7为一种服务端进行远程过程调用RPC的装置的结构示意图;
图8为一种客户端进行远程过程调用RPC的装置的模块示意图;
图9为一种服务端进行远程过程调用RPC的装置的模块示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
下面结合说明书附图对申请实施例作进一步详细描述。应当理解,此处所描述的实施例仅用于说明和解释本申请,并不用于限定本申请。
为了方便理解,下面对本发明实施例中涉及的名词进行解释:
1)RPC,(Remote Procedure Call,远程过程调用)是一种同步通信机制,方便业务进程使用函数调用的方式调用其他进程的服务。
2)SOCKET,(套接字)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O***到网络中,并与网络中的其他应用程序进行通信。
本发明实施例提供一种进行远程过程调用RPC的***,如图2所示,所述***包括:客户端201及服务端202,客户端201通过比对待调用的服务端202提供的RPC接口服务对应的动态调用号及客户端201所在的节点号及进程编号来确定建立连接的具体方式。其中,节点可以为一台通信设备,不同的节点为不同的通信设备;或者,节点为机框设备中的一个板卡,不同的板卡插在机框设备的不同槽位。在每个节点上部署有多个进程,其中每个进程又包含有多个线程。客户端201和服务端202可以分布在相同节点相同进程的两个独立的线程上(跨线程)、也可以分布在同一个节点上的两个不同的进程上(跨进程)、也能分布在不同节点上(跨节点)。上述跨线程情况下,一个进程中即可以有客户端201又可以存在服务端202,该进程中的一个线程作为客户端201运行有客户端201业务,另一个线程作为服务端202提供RPC接口服务。其中,RPC接口服务可以通过回调函数实现。
所述客户端201确定的动态调用号包含:待调用的服务端202提供的RPC接口服务的回调函数编号,及其所在的进程编号和节点号。客户端201调用确定的动态调用号提供RPC接口服务时,如果动态调用号中包含的节点号、进程号与客户端201所在进程的节点号、进程号相同,则说明客户端201与服务端202在同一进程中,服务端202使用函数直接调用的方式为客户端201提供RPC接口服务。否则,通过创建套接字SOCKET连接的方式,调用所述回调函数编号对应的回调函数,调用所述RPC接口服务,服务端202接收到调用请求指示后,向客户端201返回待调用的服务端202的RPC接口服务的应答指示。
其中,客户端201具有存储SOCKET连接的缓存能力,避免每次调用都要执行SOCKET连接建立和释放缓存。
下面实施例提供的技术方案适用于包含有上述至少一个节点的***架构下,通过客户端调用服务端提供的RPC接口服务为客户端业务服务的场景。
实施例1
本发明实施例提供一种客户端进行远程过程调用RPC的方法,如图3所示,包括如下步骤:
步骤S301,确定待调用的服务端提供的RPC接口服务及对应的动态调用号,所述动态调用号包括静态调用号和服务端所在节点号,所述静态调用号包括所述RPC接口服务对应的进程编号和回调函数编号;
客户端首先确定待调用的服务端提供的RPC接口服务,所述RPC接口服务在***架构的某个节点的某个进程中,进一步确定所述RPC接口服务对应的动态调用号,所述动态调用号包括静态调用号和所述服务端所在节点号,所述静态调用号包括所述RPC接口服务对应的进程编号和回调函数编号。其中,RPC接口服务对应的进程编号即为提供该接口服务的服务端所在的进程的编号。
具体的,待调用的服务端RPC接口服务的静态调用号可以在预先创建的***架构的全部节点所共享的全局文件中读取得到,其中,在全局文件中由开发人员定义了提供各服务端RPC接口服务的回调函数名称和所在的进程,通常的,静态调用号包括2字节的标识RPC接口服务所在的进程对应的进程编号和2字节的标识RPC接口服务对应回调函数的回调函数编号。
因一种RPC接口服务对应一个服务线程,在不同节点上部署相同功能的RPC接口服务时,会导致多个进程具有相同的静态调用号,此时客户端会不知道向哪个服务端进程发起连接从而无法完成RPC接口调用,因此,本发明实施例采用“静态调用号+节点号”的组合方式来唯一标识一个用于实际通信的服务端提供的RPC接口服务,通过所述静态调用号及待调用的服务端提供的RPC接口服务所在的节点号确定4字节的动态调用号,因静态调用号中进程编号,在实际使用中只占用了1字节,故剩下的1字节就可以用于填写节点号,最终得到所述RPC接口服务对应的动态调用号。
步骤S302,确定服务端所在节点号与客户端所在节点号相同,且所述进程编号标识的进程与客户端所在进程相同时,通过直接调用的方式,调用所述回调函数编号调用对应的回调函数,使所述服务端为客户端提供所述RPC接口服务;
否则,通过创建套接字SOCKET连接的方式,调用回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务。
在获取到待调用的服务端提供的RPC接口服务对应的动态调用号后,确定服务端所在节点号与客户端所在节点号是否相同,并确定动态调用号中的静态调用号标识的进程与客户端所在的进程是否相同,当确定上述两者都相同时,说明客户端与服务端处于同一节点的同一进程中,故可以使用直接调用方式,调用服务端RPC接口对应的回调函数,使所述服务端为客户端提供RPC接口服务。
否则,当确定客户端与服务端不是处于同一节点的同一进程中时,通过创建套接字SOCKET连接的方式调用所述RPC接口服务。
作为一种可选的实施方式,当确定所述服务端所在节点号与客户端所在节点号不同,或确定所述服务端所在节点号与客户端所在节点号相同,所述静态调用号标识的进程与客户端所在进程不同,查询所述动态调用号对应的SOCKET连接。
具体的,确定服务端所在节点号与客户端所在的节点不同,或确定进程编号标识的进程与客户端所在的进程不同时,以所述动态调用号作为key查询SOCKET连接哈希表,判断是否存在对应的已创建的对应的SOCKET连接。
若查询到对应的SOCKET连接,通过所述SOCKET连接,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务,否则,创建对应的SOCKET连接,通过创建的SOCKET连接调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务。
示例性的,以动态调用号为key查询SOCKET连接哈希表,若查找到SOCKET连接,则使用该连接完成RPC接口服务调用,否则,创建SOCKET连接,使用新创建的SOCKET连接完成RPC接口服务调用,并将该SOCKET连接以动态调用号为key***到SOCKET连接哈希表中,以备下次查询。
作为一种可选的实施方式,创建对应的SOCKET连接,包括如下连接创建方式:
若所述服务端所在节点号与客户端所在节点号不同,创建对应的预设的适用于跨节点的TIPC SOCKET连接;
若所述服务端节点号与客户端的节点号相同,根据所述动态调用号创建对应的预设的适用于跨进程的UNIX SOCKET连接。
在本实施例中,客户端根据自己与服务端RPC接口的相对位置关系,选择适合该位置关系的通信方式,具体的:
客户端和服务端在相同进程(跨线程),则不使用SOCKET方式,利用本地的回调函数直接完成对待调用的服务端RPC接口服务的调用,简化调用流程;
客户端和服务端在相同节点(跨进程),使用UNIX SOCKET连接,具有高效和可靠的优势;
客户端和服务端在不同节点(跨节点),使用TIPC SOCKET连接,具有感知服务端槽位变更,自动上线的能力。
作为一种可选的实施方式,所述创建对应的SOCKET连接,包括:将所述动态调用号作为SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接。在该实施方式中,服务端提供的一个RPC接口服务独占一个线程,每个RPC接口服务都将自己的动态调用号作为SOCKET监听端口号创建SOCKET,等待客户端连接。
作为另一种可选的实施方式,创建对应的SOCKET连接,包括:
将所述动态调用号作为SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接;
若创建SOCKET连接失败,则利用所述服务端的公用SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接。
在上述另一种可选实施方式中,服务端在线程分配紧张时,会对RPC接口服务的线程分配作进一步优化,使服务端的部分RPC接口服务共用一个线程,部分RPC接口服务独占一个线程,以在资源受限的情况下,有效降低线程栈使用,并能满足RPC接口服务被并行处理的需求。也即,每个RPC接口服务的线程分配结果为独占一个线程(即独占线程),或者与服务端提供的其它RPC接口服务共享一个线程(即共用线程)。在客户端选择的动态调用号对应的RPC接口服务被服务端划分为独占线程时,服务端使用独占线程的独占SOCKET监听端口为客户端提供RPC接口服务连接;在客户端选择的动态调用号对应的RPC接口服务被服务端划分为共用线程时,服务端使用共用线程的公用监听端口为客户端提供RPC接口服务连接。相应的,客户端可探测性地尝试创建与服务端相应的RPC接口服务的SOCKET连接,先默认以动态调用号作为SOCKET监听端口号创建连接,失败时再使用公用SOCKET监听端口号创建连接。
作为再一种可选的实施方式,本实施例提供的方法还包括:获取服务端以RPC接口服务的服务质量等级的方式所通知的RPC接口服务的线程分配结果,其中所述线程分配结果为独占线程分配或共用线程分配。如此,服务端上各RPC接口服务的线程分配情况,于客户端而言,是已知的,所以客户端可以据此选择相匹配的SOCKET监听端口号,定向创建连接。具体的,创建对应的SOCKET连接,可包括:
当RPC接口服务的服务质量等级为独占线程分配对应的第一服务质量等级时,将所述动态调用号作为SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接;
当RPC接口服务的服务质量等级为共用线程分配对应的第二服务质量等级时,利用所述服务端的公用SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接。
在上述再一种可选的实施方式中,服务端以RPC接口服务的服务质量等级的方式向***中各节点的各客户端告知线程分配结果,使各客户端获知该服务端的各RPC接口服务的线程分配结果,并能使服务端直接采用适合的SOCKET监听端口号创建与待调用的服务端RPC接口服务的UNIX SOCKET连接或TIPC SOCKET连接。
作为一种可选的实施方式,所述获取服务端以RPC接口服务的服务质量等级的方式所通知的RPC接口服务的线程分配结果,包括:
接收服务端发送的RPC接口服务的服务质量等级;其中,所述服务质量等级作为RPC接口服务的线程分配结果的标识信息,由服务端根据RPC接口服务的历史调用情况统计信息确定得到。
所述历史调用情况统计信息包括RPC接口服务的如下至少一种信息:调用崩溃次数、平均调用耗时时长、调用栈深度及调用次数。
具体的,所述服务端在初始化完成时或者以周期性地,获取所述服务端各RPC接口服务的历史调用情况统计信息,该统计信息包括:调用崩溃次数、平均调用耗时时长、调用栈深度及调用次数。
其中:调用崩溃次数:RPC接口服务触发程序错误、内存越界等RPC接口服务所在进程退出错误的次数,用于表示稳定度,该调用崩溃次数可以由异常监控模块在RPC接口服务所在进程退出时,完成记录。
平均调用耗时时长:记录RPC接口服务的回调函数每次调用的耗时时长,通过计算取得的平均值,该参数的意义在于判断该RPC接口服务对其它RPC接口服务使用的影响,具体的,在多个RPC接口服务共用一个服务线程时,对RPC接口请求的处理是顺序完成的,若某个RPC接口服务请求的处理平均耗时较长,会推迟后续其它RPC接口服务请求的响应。
调用栈深度:对于RPC接口服务的回调函数调用会形成栈结构,调用层次越深,调用栈深度越高,用于表示复杂度,调用栈深度越深,复杂度也就越高。
调用次数:该RPC接口服务提供服务或被调用的次数,用于表示服务频度,RPC接口服务提供服务次数越多,说明调用越频繁。
获取历史调用情况统计信息之后,所述服务端根据按照预设的度量算法,采用所述历史调用情况统计信息计算所述服务端各RPC接口服务的服务质量值,例如预设的度量算法可以为:将历史调用情况统计信息中各种信息归一化后得到相应的参数,之后对各参数进行加权求和。典型的,RPC接口服务的服务质量值=崩溃参数*0.5+耗时参数*0.3+调用栈参数*0.1+调用次数参数*0.1。其中,可以将上述调用崩溃次数、平均调用耗时时长、调用栈深度和调用次数这4类统计信息分别划分多个区间,不同区间对应不同的该类统计信息的归一化参数值。示例性的,崩溃参数:若调用崩溃次数>1次时,崩溃参数为1,否则崩溃参数为0;耗时参数:若平均调用耗时时长>500ms时,耗时参数为1,否则耗时参数为0;调用栈参数:若调用栈深度>10层时,调用栈参数为1,否则调用栈参数0;调用次数参数:若调用次数>500次时,调用次数参数为1,否则调用次数参数为0。还可以针对4类不同的统计信息划分两个以上的区间,区间的划分可以由本领域技术人员结合实际应用场景根据经验确定。
之后,按照服务质量值的大小,确定其所属的服务质量等级,其中,不同服务质量等级对应不同的RPC接口服务的线程分配结果。例如,对于服务质量值属于第一服务质量等级的RPC接口服务,对应的线程分配结果为独占一个线程即独占线程分配;对于服务质量值属于第二服务质量等级的RPC接口服务,对应的线程分配结果为共用一个线程即共用线程分配。
作为一种可选的实施方式,通过RPC接口服务的服务质量值,来决定RPC接口服务是共用公用线程还是独占一个线程,服务质量值越大,优先级越高,表明该情况下越需要为RPC接口服务单独分配一个独占线程。具体的,所述服务端可以对计算得到的服务端的各RPC接口服务的服务质量值按大小进行排序,其中排在前N的服务质量值满足预设条件,对应为第一服务质量等级,其RPC接口服务独占一个线程,其它的服务质量值不满足预设条件,对应为第二服务质量等级,其RPC接口服务共用公用线程。所述N为大于或等于1的正整数,可以由本领域技术人员结合实际的应用场景确定。优选的,预设条件取值为本服务端的各RPC接口服务总个数的50%。预设条件作为决定RPC接口服务是否独占线程的参考依据,还可以为其它形式,为服务质量值高于预设服务质量值阈值的RPC接口服务单独分配一个独占线程,其他的RPC接口服务分配共用线程,本实施例对此不作具体限定。
作为另一种可选方式,获取服务端根据RPC接口服务的预先设定的服务质量等级通知的RPC接口服务的线程分配结果。
在预先创建的为***架构中全部节点所共享的全局文件中,开发人员在静态指定提供各RPC接口服务的各服务端RPC接口服务的回调函数和静态调用号的同时,还预先设定了RPC接口服务的服务质量等级,在服务端的进程初始化完成时,针对服务端的属于第一服务质量等级的各RPC接口服务创建自己的独立线程,属于第二服务质量等级的所有RPC接口服务创建一个共用线程,所有的独立线程和共用线程组成RPC接口服务的线程池。
更优选的,结合上述两种方式,服务端根据计算的服务质量值是否满足预设条件,适应性修改上述全局文件中相应服务端RPC接口服务的服务质量等级,并在全局文件开放开发人员修改权限时,也可由开发人员进行修改服务质量等级,针对服务端的属于第一服务质量等级的各RPC接口服务创建自己的独立线程,属于第二服务质量等级的所有RPC接口服务创建一个共用线程,所有的独立线程和共用线程组成RPC接口服务的线程池。
具体实施时,在服务端的进程初始化完成后,针对服务端的各RPC接口服务分别创建各自的独立线程,组成服务端的RPC接口服务线程池,即有多个RPC接口服务就有多少个独立线程,后续实时根据确定的所述服务质量值将RPC接口服务线程池中服务质量值不满足预设条件的全部RPC接口服务的独立线程全部删除,创建一个共用线程,提供不满足预设条件的全部RPC接口服务。当然,也可以为,在服务端的进程初始化完成后,针对服务端的各RPC接口服务创建一个公用线程,组成服务端的RPC接口服务线程池,即有全部RPC接口服务共用一个线程,后续实时根据确定的服务质量值将RPC接口服务线程池中服务质量值满足预设条件的全部RPC接口服务分别建立独立线程。
上述具体实施方式中,RPC服务线程池在服务端初始化后就全部创建,后续根据服务质量等级作局部的动态调整,根据实际的历史调用情况统计信息,可以调整RPC接口服务运行的服务质量等级,相较于服务端在收到客户端的连接请求后才实时创建线程相比,能够克服其创建进程耗时长、资源消耗大且资源受影响的弊端,也能克服大量在多个RPC接口服务的线程在同时被调用时导致的进程资源意外耗尽的问题。
作为一种可选的实施方式,所述确定待调用的服务端提供的RPC接口服务步骤之前,还包括:
根据提供RPC接口服务的各服务端组播的消息,确定服务端提供的RPC接口服务的在线/离线状态;
其中,确定需要调用服务端提供的RPC接口服务时,选择调用处于在线状态的RPC接口服务。
具体的,服务端向客户端通知RPC接口服务的上线、离线事件。示例性的,通过创建TIPC协议的组播的消息,使每个节点都加入组播,节点通过心跳报文组播各自的RPC接口服务的在线、离线状态。以使客户端只调用在线的RPC接口服务。
作为一种可选的实施方式,所述服务端考虑到当动态调用号作为RPC接口服务的监听端口号使用时,可能存在监听端口冲突(与其他应用监听的端口相同,会造成服务不可用)问题,且当RPC调用号为32比特位,而TCP监听的端口为16比特位时,会不满足需求,因此可采用TIPC协议创建32位的且与操作***独立的监听端口空间,避免端口间发生冲突。
作为一种可选的实施方式,在***框架为分布式嵌入***框架(例如机框设备)的应用场景下,采用C语言实现本发明实施例提供的技术方案,以解决现有RPC接口服务在嵌入式设备重载问题。
相应的,客户端确定待调用的服务端提供的RPC接口服务,并确定所述RPC接口服务对应的动态调用号,包括:
利用C语言头文件,确定待调用的服务端提供的RPC接口服务的静态调用号,所述C语言头文件中预先定义了各RPC接口服务的静态调用号及静态调用号中的回调函数编号对应的回调函数名称;
根据所述RPC接口服务的静态调用号及所述RPC接口服务所在节点确定所述RPC接口服务对应的动态调用号。
具体的,将预先创建的***架构的全部节点所共享的全局文件在C语言的头文件中定义,所述C语言的头文件可以为rpc.h。全局文件中声明有***架构的全部节点上的各RPC接口服务,每个声明的RPC接口服务包括服务的静态调用号和回调函数相关信息。其中,优选的,RPC接口服务的回调函数使用弱符号进行声明。此种方式可以保证无论C文件中是否存在同名函数定义,都可以顺利编译通过并运行完成RPC接口服务,使用C语言弱符号机制,也能解决RPC接口服务在编译过程中可能遇到的链接错误,通过弱符号的机制,将传统的RPC接口服务的函数注册流程简化,使RPC接口服务无需用户显示注册,避免了RPC接口服务注册流程和解注册流程引入的错误。
在客户端进程编译链接时,头文件中的RPC接口服务的声明,可用于RPC接口服务的回调函数定义参考,可用于查询RPC接口服务的回调函数及其静态调用号。
在服务端进程编译链接时,头文件中的RPC接口服务的声明,可看作RPC接口服务的回调函数定义。在链接过程中,链接器如果发现C文件中有同名函数定义,则将静态调用号与实际的回调函数地址进行绑定,否则链接器将静态调用号与弱符号的地址进行绑定。此操作可以保证无论RPC接口服务的回调函数是否实现,都可以顺利编译通过并运行。
示例性的,RPC接口服务在C语言的头文件中定义可由下述数据结构表示,
typedef int(*rpccallback)(char*buf,int buflen,int*datalen,int*node)/*RPC接口服务回调函数头文件*/
其中,callno:RPC静态调用号,该RPC静态调用号指代已给RPC接口服务,在客户端使用该RPC静态调用号得到动态调用号来完成远程过程调用;
func:RPC接口服务回调函数名称。
如图4所示提供一种完整的客户端进行远程过程调用RPC的方法对应的流程图;
步骤S401,获取服务端提供的RPC接口服务的各服务端组播的消息,并获取服务端根据RPC接口服务的服务质量等级通知的RPC接口服务的线程分配结果,根据获取结果确定处于在线状态的RPC接口服务;
步骤S402,确定处于在线状态的待调用的服务端提供的RPC接口服务及对应的动态调用号;
步骤S403,判断所述服务端所在节点号与客户端所在节点号、进程编号是否都相同,确定都相同时,执行步骤S404,否则,执行步骤S405;
步骤S404,通过直接调用的方式,调用与所述RPC接口服务对应的回调函数,使服务端为客户端提供所述RPC接口服务;
步骤S405,判断是否查询到所述动态调用号对应的SOCKET连接,确定查询到时,执行步骤S406,否则执行步骤S407;
步骤S406,通过所述SOCKET连接,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务;
步骤S407,判断所述服务端所在节点号与客户端所在节点号是否不同,若不同时,执行步骤S408,否则执行步骤S409;
步骤S408,创建对应的TIPC SOCKET连接,基于该连接调用所述RPC接口服务;
步骤S409,创建对应的UNIX SOCKET连接,基于该连接调用所述RPC接口服务。
在上述S404、S405、S408、S409步骤中的过程都可以概括为客户端向服务端发送对待调用的服务端提供的RPC接口服务的请求数据,客户端接收待调用的服务端提供的RPC接口服务的应答数据,当采用所述通过所述SOCKET连接方式时,所述请求数据需要至少包括待调用的服务端提供的RPC接口服务对应的动态调用号。并且,在上述S408、S409步骤中,如果创建对应的SOCKET连接成功,则将其成功连接信息以确定的动态调用号为KEY值存储在哈希表中,供下次查询使用。
利用本发明提供的方法,可以使客户端根据自身与服务端RPC接口服务的相对位置关系,选择适合该位置关系的通信方式,通信机制可靠,高效,且RPC接口服务回调函数形式统一,与通用机制下的复杂的参数处理流程相比,减少了通信耗时和资源损耗,适用于各类嵌入式应用开发场景。
实施例2
本发明实施例提供一种服务端进行远程过程调用RPC的方法,该方法可以与上述实施例一中的客户端配合使用,完成RPC接口服务的远程过程调用。如图5所示,所述方法包括如下步骤:
步骤S501,接收客户端所发起的对服务端提供的RPC接口服务的调用;
由客户端首先确定待调用的服务端提供的RPC接口服务,所述RPC接口服务在***架构的某个节点的某个进程中,进一步确定所述RPC接口服务对应的动态调用号,所述动态调用号包括静态调用号和所述服务端所在节点号,所述静态调用号包括所述RPC接口服务对应的进程编号和回调函数编号。
步骤S502,响应所述调用,为客户端提供所述RPC接口服务。
其中,在服务端所在节点号与客户端所在节点号相同,且服务端提供的RPC接口服务对应的进程与客户端所在进程相同时,发起的调用为直接调用的方式,否则为创建套接字SOCKET连接的方式。
由客户端确定待调用的服务端提供的RPC接口服务对应的动态调用号后,确定动态调用号中的所述节点号与客户端所在的节点是否相同,并确定动态调用号中的静态调用号标识的进程与客户端所在的进程是否相同,当确定上述两者都相同时,说明客户端与服务端处于同一节点的同一进程中,故客户端可以以直接调用的方式,调用服务端RPC接口对应的回调函数,为客户端提供RPC接口服务完成调用。否则,当确定客户端与服务端不是处于同一节点的同一进程中时,通过创建套接字SOCKET连接的方式,调用所述回调函数编号对应的回调函数,为客户端调用所述RPC接口服务完成调用。
作为一种可选的实施方式,在接收客户端所发起的对服务端提供的RPC接口服务的调用之前,本实施例提供的方法还包括:
获取服务端提供的RPC接口服务的静态调用号和用于唯一标识服务端所在节点的节点号,其中所述静态调用号包括RPC接口服务对应的进程编号和回调函数编号;
将获取得到的RPC接口服务的静态调用号和节点号组合生成RPC接口服务的动态调用号;
确定RPC接口服务的SOCKET监听端口号,创建该监听端口号下的预设的适应于跨节点的TIPC SOCKET以及适应于跨进程的UNIX SOCKET,等待客户端连接。
相应的,接收客户端通过创建SOCKET连接的方式所发起的所述调用,响应所述调用,为客户端提供RPC接口服务,包括:
接收客户端发起的SOCKET监听端口号下的TIPC SOCKET或者UNIX SOCKET连接请求;
与客户端建立与所述连接请求对应的SOCKET连接,基于该SOCKET连接为客户端提供RPC接口服务。
其中,为客户端提供RPC接口服务包括:接收客户端发送的对待调用的服务端提供的RPC接口服务的包含有所述动态调用号的调用请求数据;向客户端反馈根据所述调用请求数据调用所述RPC接口服务的回调函数得到的应答数据。
作为一种可选的实施方式,确定所述RPC接口服务的SOCKET监听端口号,包括:
当所述RPC接口服务的线程分配结果为独占线程时,将所述RPC接口服务的动态调用号作为所述RPC接口服务的SOCKET监听端口号;
当所述RPC接口服务的线程分配结果为共用线程时,将所述服务端的预设的SOCKET公用监听端口号,作为所述RPC接口服务的SOCKET监听端口号。
作为一种可选的实施方式,所述方法还包括:
依据RPC接口服务的服务质量,为服务端提供的所有RPC接口服务进行线程分配;
具体的,根据所述RPC接口服务的静态调用号和所述服务端所在节点号确定动态调用号,并利用所述动态调用号向客户端提供所述RPC接口服务的独占线程的独占监听端口,或提供所述RPC接口服务的共用线程的公用监听端口,所述由服务端确定所述RPC接口服务的独占线程或共用线程的方式参见实施例1中的描述,这里不再赘述。
作为一种可选的实施方式,依据RPC接口服务的服务质量,为服务端提供的所有RPC接口服务进行线程分配,包括:
根据RPC接口服务的历史调用情况统计信息,计算RPC接口服务的服务质量值;
确定服务质量值所属的服务质量等级;
为RPC接口服务分配与服务质量等级相对应的线程分配结果;
其中,所述历史调用情况统计信息包括如下至少一种信息:调用崩溃次数、平均调用耗时时长、调用栈深度和调用次数。
具体的,根据RPC接口服务的历史调用情况统计信息确定服务质量值,并根据所述服务质量值的大小确定其所属的服务质量等级,根据所述服务质量等级确定RPC接口服务的线程分配结果,所述历史调用情况统计信息包括调用崩溃次数、平均调用耗时时长、调用栈深度和调用次数,具体服务质量值的计算方式与上述实施例提供的方式基于同一构思,这里不再赘述;或
根据RPC接口服务的预先设定的服务质量等级确定RPC接口服务的线程分配结果。
作为一种可选的实施方式,所述接收客户端所发起的对服务端提供的RPC接口服务的调用步骤之前,还包括:
将不同RPC接口服务的在线/离线状态通过组播消息进行组播,以使客户端确定RPC接口服务的在线/离线状态。
作为一种可选的实施方式,服务端考虑到当动态调用号作为RPC接口服务的监听端口号使用时,可能存在监听端口冲突(与其他应用监听的端口相同,会造成服务不可用)问题,且当RPC调用号为32比特位,而TCP监听的端口为16比特位时,会不满足需求,因此可采用TIPC协议创建32位的且与操作***独立的监听端口空间,避免端口间发生冲突。
作为一种可选的实施方式,获取服务端提供的RPC接口服务的静态调用号,包括:
利用C语言头文件,确定服务端提供的RPC接口服务的静态调用号,所述C语言头文件中预先定义了各RPC接口服务的静态调用号和静态调用号的回调函数编号对应的回调函数名称;
其中,回调函数名称采用弱符号描述。
作为一种可选的实施方式,响应所述调用,为客户端提供所述RPC接口服务,包括:
根据所述RPC接口服务的静态调用号和回调函数名称,在C语言文件中查询对应的回调函数;
若查询到对应的回调函数时,根据所述回调函数为客户端提供RPC接口服务,否则,向客户端提供所述回调函数为空的应答指示信息。
上述的服务端进行远程过程调用RPC的方法与实施例1提供的客户端基于进行远程过程调用RPC的方法同一构思,这里不再赘述。
利用本发明提供的方法,可以使客户端根据自身与服务端RPC接口服务的相对位置关系,选择适合该位置关系的通信方式,通信机制可靠,高效,且RPC接口函数原型统一,与通用机制下的复杂的参数处理流程相比,减少了通信耗时和资源损耗,适用于各类嵌入式应用开发场景。
本发明实施例提供一种客户端进行远程过程调用RPC的装置,所述装置如图6所示,该装置600可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(英文全称:central processing units,英文简称:CPU)601(例如,一个或一个以上处理器)和存储器602,一个或一个以上存储应用程序604或数据606的存储介质603(例如一个或一个以上海量存储设备)。其中,存储器602和存储介质603可以是短暂存储或持久存储。存储在存储介质603的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对信息处理装置中的一系列指令操作。更进一步地,处理器601可以设置为与存储介质603通信,在装置600上执行存储介质603中的一系列指令操作。
装置600还可以包括一个或一个以上电源609,一个或一个以上有线或无线网络接口607,一个或一个以上输入输出接口608,和/或,一个或一个以上操作***605,例如Windows Server,Mac OS X,Unix,Linux,FreeBSD等。
其中,处理器用于读取所述存储器中的指令,执行下列过程:
确定待调用的服务端提供的RPC接口服务和对应的动态调用号,所述动态调用号包括静态调用号和服务端所在节点号,所述静态调用号包括所述RPC接口服务对应的进程编号和回调函数编号;
确定所述服务端所在节点号与客户端所在节点号相同,且所述进程编号标识的进程与客户端所在进程相同时,通过直接调用的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务;
否则,通过创建套接字SOCKET连接的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供调用所述RPC接口服务。
可选地,所述处理器还用于通过创建SOCKET连接的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务,包括:
确定所述服务端所在节点号与客户端所在节点号不同,或确定所述服务端所在节点号与客户端所在节点号相同,所述进程编号标识的进程与客户端所在进程不同,查询所述动态调用号对应的SOCKET连接;
若查询到对应的SOCKET连接,通过所述SOCKET连接,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务,否则,创建对应的SOCKET连接,通过创建的SOCKET连接调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务。
可选地,所述处理器还用于创建对应的SOCKET连接,包括:
若所述服务端所在节点号与客户端所在节点号不同,创建对应的预设的适用于跨节点的TIPC SOCKET连接;
若所述服务端所在节点号与客户端所在节点号相同,创建对应的预设的适用于跨进程的UNIX SOCKET连接。
可选地,所述处理器还用于创建对应的SOCKET连接,包括:
将所述动态调用号作为SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接。
可选地,所述处理器还用于:
根据所述动态调用号创建对应的SOCKET连接失败后,利用所述服务端的公用SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接。
可选地,所述处理器还用于:获取服务端以RPC接口服务的服务质量等级的方式所通知的RPC接口服务的线程分配结果,其中所述线程分配结果为独占线程分配或共用线程分配,创建对应的SOCKET连接,包括:
当RPC接口服务的服务质量等级为独占线程分配对应的第一服务质量等级时,将所述动态调用号作为SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接;
当RPC接口服务的服务质量等级为共用线程分配对应的第二服务质量等级时,利用所述服务端的公用SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接。
可选地,所述处理器还用于确定待调用的服务端提供的RPC接口服务步骤之前,还包括:
根据提供RPC接口服务的各服务端组播的消息,确定服务端提供的RPC接口服务的在线/离线状态;
其中,确定需要调用服务端提供的RPC接口服务时,选择调用处于在线状态的RPC接口服务。
可选地,所述处理器还用于确定待调用的服务端提供的RPC接口服务,并确定所述RPC接口服务对应的动态调用号,包括:
利用C语言头文件,确定待调用的服务端提供的RPC接口服务的静态调用号,所述C语言头文件中预先定义了各RPC接口服务的静态调用号和静态调用号中的回调函数编号对应的回调函数名称;
根据所述RPC接口服务的静态调用号和所述服务端所在节点确定所述RPC接口服务对应的动态调用号。
可选地,所述处理器还用于根据所述回调函数编号调用对应的回调函数提供所述RPC接口服务或通过创建套接字SOCKET连接的方式调用所述RPC接口服务,包括:
向服务端发送调用请求,接收所述服务端根据所述RPC接口服务的静态调用号和所述服务端的服务端节点号确定动态调用号,并利用所述动态调用号在C语言文件中根据所述回调函数名称查询对应的回调函数;
确定查询到对应的回调函数时,接收服务端调用所述回调函数提供的RPC接口服务,否则重新确定待调用的服务端提供的RPC接口服务。
本发明实施例提供一种服务端进行远程过程调用RPC的装置,所述装置如图7所示:
该装置700可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(英文全称:central processing units,英文简称:CPU)701(例如,一个或一个以上处理器)和存储器702,一个或一个以上存储应用程序704或数据706的存储介质703(例如一个或一个以上海量存储设备)。其中,存储器702和存储介质703可以是短暂存储或持久存储。存储在存储介质703的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对信息处理装置中的一系列指令操作。更进一步地,处理器701可以设置为与存储介质703通信,在装置700上执行存储介质703中的一系列指令操作。
装置700还可以包括一个或一个以上电源709,一个或一个以上有线或无线网络接口707,一个或一个以上输入输出接口708,和/或,一个或一个以上操作***705,例如Windows Server,Mac OS X,Unix,Linux,FreeBSD等。
所述处理器,用于读取所述存储器中的指令,执行下列过程:
接收客户端所发起的对服务端提供的RPC接口服务的调用;
响应所述调用,为客户端提供所述RPC接口服务;
其中,在服务端所在节点号与客户端所在节点号相同,且服务端提供的RPC接口服务对应的进程与客户端所在进程相同时,发起的调用为直接调用的方式,否则为创建套接字SOCKET连接的方式。
可选地,所述处理器用于在接收客户端所发起的对服务端提供的RPC接口服务的调用之前,还包括:
获取服务端提供的RPC接口服务的静态调用号和用于唯一标识服务端所在节点的节点号,其中所述静态调用号包括所述RPC接口服务对应的进程编号和回调函数编号;
将获取得到的RPC接口服务的静态调用号和节点号组合生成RPC接口服务的动态调用号;
确定所述RPC接口服务的SOCKET监听端口号,创建该监听端口号下的预设的适应于跨节点的TIPC SOCKET以及适应于跨进程的UNIX SOCKET,等待客户端连接;
所述接收客户端通过创建SOCKET连接的方式所发起的所述调用,响应所述调用,为客户端提供RPC接口服务,包括:
接收客户端发起的所述SOCKET监听端口号下的TIPC SOCKET或者UNIX SOCKET连接请求;
与客户端建立与所述连接请求对应的SOCKET连接,基于该SOCKET连接为客户端提供RPC接口服务;
其中,为客户端提供RPC接口服务包括:接收客户端发送的对待调用的服务端提供的RPC接口服务的包含有所述动态调用号的调用请求数据;向客户端反馈根据所述调用请求数据调用所述RPC接口服务的回调函数得到的应答数据。
可选地,所述处理器用于确定所述RPC接口服务的SOCKET监听端口号,包括:
当所述RPC接口服务的线程分配结果为独占线程时,将所述RPC接口服务的动态调用号作为所述RPC接口服务的SOCKET监听端口号;
当所述RPC接口服务的线程分配结果为共用线程时,将所述服务端的预设的SOCKET公用监听端口号,作为所述RPC接口服务的SOCKET监听端口号。
可选地,所述处理器还用于:
依据RPC接口服务的服务质量,为服务端提供的所有RPC接口服务进行线程分配。
可选地,所述处理器用于依据RPC接口服务的服务质量,为服务端提供的所有RPC接口服务进行线程分配,包括:
根据RPC接口服务的历史调用情况统计信息,计算RPC接口服务的服务质量值;
确定服务质量值所属的服务质量等级;
为RPC接口服务分配与服务质量等级相对应的线程分配结果;
其中,所述历史调用情况统计信息包括如下至少一种信息:调用崩溃次数、平均调用耗时时长、调用栈深度和调用次数。
可选的,所述处理器用于获取服务端提供的RPC接口服务的静态调用号,包括:
利用C语言头文件,确定服务端提供的RPC接口服务的静态调用号,所述C语言头文件中预先定义了各RPC接口服务的静态调用号和静态调用号的回调函数编号对应的回调函数名称;
其中,回调函数名称采用弱符号描述。可选地,所述处理器用于响应所述调用,为客户端提供所述RPC接口服务,包括:
根据所述RPC接口服务的动态调用号和回调函数名称,在C语言文件中查询对应的回调函数;
若查询到对应的回调函数时,根据所述回调函数为客户端提供RPC接口服务,否则,向客户端提供所述回调函数为空的应答指示信息。
可选地,所述处理器用于接收客户端所发起的对服务端提供的RPC接口服务的调用步骤之前,还包括:
将不同RPC接口服务的在线/离线状态通过组播消息进行组播,以使客户端确定RPC接口服务的在线/离线状态。
本发明实施例提供一种客户端进行远程过程调用RPC的装置,所述装置示意图如图8所示,所述装置包括如下模块:
比对模块801,用于确定待调用的服务端提供的RPC接口服务和对应的动态调用号,所述动态调用号包括静态调用号和服务端所在节点号,所述静态调用号包括所述RPC接口服务对应的进程编号和回调函数编号;
连接方式确定模块802,用于确定所述服务端所在节点号与客户端所在节点号相同,且所述进程编号标识的进程与客户端所在进程相同时,通过直接调用的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务;
否则,通过创建套接字SOCKET连接的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供调用所述RPC接口服务。
连接方式确定模块802,还用于通过创建SOCKET连接的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务,包括:
确定所述服务端所在节点号与客户端所在节点号不同,或确定所述服务端所在节点号与客户端所在节点号相同,所述进程编号标识的进程与客户端所在进程不同,查询所述动态调用号对应的SOCKET连接;
若查询到对应的SOCKET连接,通过所述SOCKET连接,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务,否则,创建对应的SOCKET连接,通过创建的SOCKET连接调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务。
连接方式确定模块802,还用于创建对应的SOCKET连接,包括:
若所述服务端所在节点号与客户端所在节点号不同,创建对应的预设的适用于跨节点的TIPC SOCKET连接;
若所述服务端所在节点号与客户端所在节点号相同,创建对应的预设的适用于跨进程的UNIX SOCKET连接。
连接方式确定模块802,还用于创建对应的SOCKET连接,包括:
将所述动态调用号作为SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接。
连接方式确定模块802,还用于:
根据所述动态调用号创建对应的SOCKET连接失败后,利用所述服务端的公用SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接。
线程分配结果确定模块804,还用于:获取服务端以RPC接口服务的服务质量等级的方式所通知的RPC接口服务的线程分配结果,其中所述线程分配结果为独占线程分配或共用线程分配,创建对应的SOCKET连接,包括:
当RPC接口服务的服务质量等级为独占线程分配对应的第一服务质量等级时,将所述动态调用号作为SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接;
当RPC接口服务的服务质量等级为共用线程分配对应的第二服务质量等级时,利用所述服务端的公用SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接。
组播消息模块803,还用于确定待调用的服务端提供的RPC接口服务步骤之前,还包括:
根据提供RPC接口服务的各服务端组播的消息,确定服务端提供的RPC接口服务的在线/离线状态;
其中,确定需要调用服务端提供的RPC接口服务时,选择调用处于在线状态的RPC接口服务。
线程分配结果确定模块804,还用于确定待调用的服务端提供的RPC接口服务,并确定所述RPC接口服务对应的动态调用号,包括:
利用C语言头文件,确定待调用的服务端提供的RPC接口服务的静态调用号,所述C语言头文件中预先定义了各RPC接口服务的静态调用号和静态调用号中的回调函数编号对应的回调函数名称;
根据所述RPC接口服务的静态调用号和所述服务端所在节点确定所述RPC接口服务对应的动态调用号。
连接方式确定模块802,还用于根据所述回调函数编号调用对应的回调函数提供所述RPC接口服务或通过创建套接字SOCKET连接的方式调用所述RPC接口服务,包括:
向服务端发送调用请求,接收所述服务端根据所述RPC接口服务的静态调用号和所述服务端的服务端节点号确定动态调用号,并利用所述动态调用号在C语言文件中根据所述回调函数名称查询对应的回调函数;
确定查询到对应的回调函数时,接收服务端调用所述回调函数提供的RPC接口服务,否则重新确定待调用的服务端提供的RPC接口服务。
本发明实施例提供一种服务端进行远程过程调用RPC的装置,如图9所示,所述装置包括如下模块:
接收指示模块901,用于接收客户端所发起的对服务端提供的RPC接口服务的调用;
建立连接模块902,用于响应所述调用,为客户端提供所述RPC接口服务;
其中,在服务端所在节点号与客户端所在节点号相同,且服务端提供的RPC接口服务对应的进程与客户端所在进程相同时,发起的调用为直接调用的方式,否则为创建套接字SOCKET连接的方式。
建立连接模块902,用于在接收客户端所发起的对服务端提供的RPC接口服务的调用之前,还包括:
获取服务端提供的RPC接口服务的静态调用号和用于唯一标识服务端所在节点的节点号,其中所述静态调用号包括所述RPC接口服务对应的进程编号和回调函数编号;
将获取得到的RPC接口服务的静态调用号和节点号组合生成RPC接口服务的动态调用号;
确定所述RPC接口服务的SOCKET监听端口号,创建该监听端口号下的预设的适应于跨节点的TIPC SOCKET以及适应于跨进程的UNIX SOCKET,等待客户端连接;
所述接收客户端通过创建SOCKET连接的方式所发起的所述调用,响应所述调用,为客户端提供RPC接口服务,包括:
接收客户端发起的所述SOCKET监听端口号下的TIPC SOCKET或者UNIX SOCKET连接请求;
与客户端建立与所述连接请求对应的SOCKET连接,基于该SOCKET连接为客户端提供RPC接口服务;
其中,为客户端提供RPC接口服务包括:接收客户端发送的对待调用的服务端提供的RPC接口服务的包含有所述动态调用号的调用请求数据;向客户端反馈根据所述调用请求数据调用所述RPC接口服务的回调函数得到的应答数据。
建立连接模块902,确定所述RPC接口服务的SOCKET监听端口号,包括:
当所述RPC接口服务的线程分配结果为独占线程时,将所述RPC接口服务的动态调用号作为所述RPC接口服务的SOCKET监听端口号;
当所述RPC接口服务的线程分配结果为共用线程时,将所述服务端的预设的SOCKET公用监听端口号,作为所述RPC接口服务的SOCKET监听端口号。
线程分配结果确定模块904,还用于:
依据RPC接口服务的服务质量,为服务端提供的所有RPC接口服务进行线程分配。
线程分配结果确定模块904,还用于依据RPC接口服务的服务质量,为服务端提供的所有RPC接口服务进行线程分配,包括:
根据RPC接口服务的历史调用情况统计信息,计算RPC接口服务的服务质量值;
确定服务质量值所属的服务质量等级;
为RPC接口服务分配与服务质量等级相对应的线程分配结果;
其中,所述历史调用情况统计信息包括如下至少一种信息:调用崩溃次数、平均调用耗时时长、调用栈深度和调用次数。
建立连接模块902,用于获取服务端提供的RPC接口服务的静态调用号,包括:
利用C语言头文件,确定服务端提供的RPC接口服务的静态调用号,所述C语言头文件中预先定义了各RPC接口服务的静态调用号和静态调用号的回调函数编号对应的回调函数名称;
其中,回调函数名称采用弱符号描述。
建立连接模块902用于响应所述调用,为客户端提供所述RPC接口服务,包括:
根据所述RPC接口服务的动态调用号和回调函数名称,在C语言文件中查询对应的回调函数;
若查询到对应的回调函数时,根据所述回调函数为客户端提供RPC接口服务,否则,向客户端提供所述回调函数为空的应答指示信息。
组播消息模块903,用于接收客户端所发起的对服务端提供的RPC接口服务的调用步骤之前,还包括:
将不同RPC接口服务的在线/离线状态通过组播消息进行组播,以使客户端确定RPC接口服务的在线/离线状态。
本发明第七方面实施例提供一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现本发明实施例1提供的任一所述的方法,或者执行实现本发明实施例2提供的任一所述的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (21)
1.一种客户端进行远程过程调用RPC的方法,其特征在于,所述方法包括:
确定待调用的服务端提供的RPC接口服务和对应的动态调用号,所述动态调用号包括静态调用号和服务端所在节点号,所述静态调用号包括所述RPC接口服务对应的进程编号和回调函数编号;
确定所述服务端所在节点号与客户端所在节点号相同,且所述进程编号标识的进程与客户端所在进程相同时,通过直接调用的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务;
否则,通过创建套接字SOCKET连接的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务。
2.根据权利要求1所述的方法,其特征在于,所述通过创建SOCKET连接的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务,包括:
确定所述服务端所在节点号与客户端所在节点号不同,或确定所述服务端所在节点号与客户端所在节点号相同,所述进程编号标识的进程与客户端所在进程不同,查询所述动态调用号对应的SOCKET连接;
若查询到对应的SOCKET连接,通过所述SOCKET连接,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务,否则,创建对应的SOCKET连接,通过创建的SOCKET连接调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务。
3.根据权利要求2所述的方法,其特征在于,所述创建对应的SOCKET连接,包括:
若所述服务端所在节点号与客户端所在节点号不同,创建对应的预设的适用于跨节点的TIPC SOCKET连接;
若所述服务端所在节点号与客户端所在节点号相同,创建对应的预设的适用于跨进程的UNIX SOCKET连接。
4.根据权利要求2所述的方法,其特征在于,所述创建对应的SOCKET连接,包括:
将所述动态调用号作为SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
根据所述动态调用号创建对应的SOCKET连接失败后,利用所述服务端的公用SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接。
6.根据权利要求2所述的方法,其特征在于,所述方法还包括:获取服务端以RPC接口服务的服务质量等级的方式所通知的RPC接口服务的线程分配结果,其中所述线程分配结果为独占线程分配或共用线程分配,创建对应的SOCKET连接,包括:
当RPC接口服务的服务质量等级为独占线程分配对应的第一服务质量等级时,将所述动态调用号作为SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接;
当RPC接口服务的服务质量等级为共用线程分配对应的第二服务质量等级时,利用所述服务端的公用SOCKET监听端口号,创建与待调用的服务端提供的RPC接口服务的SOCKET连接。
7.根据权利要求1所述的方法,其特征在于,所述确定待调用的服务端提供的RPC接口服务步骤之前,还包括:
根据提供RPC接口服务的各服务端组播的消息,确定服务端提供的RPC接口服务的在线/离线状态;
其中,确定需要调用服务端提供的RPC接口服务时,选择调用处于在线状态的RPC接口服务。
8.根据权利要求1所述的方法,其特征在于,所述确定待调用的服务端提供的RPC接口服务,并确定所述RPC接口服务对应的动态调用号,包括:
利用C语言头文件,确定待调用的服务端提供的RPC接口服务的静态调用号,所述C语言头文件中预先定义了各RPC接口服务的静态调用号和静态调用号中的回调函数编号对应的回调函数名称;
根据所述RPC接口服务的静态调用号和所述服务端所在节点确定所述RPC接口服务对应的动态调用号。
9.一种服务端进行远程过程调用RPC的方法,其特征在于,所述方法包括:
接收客户端所发起的对服务端提供的RPC接口服务的调用;
响应所述调用,为客户端提供所述RPC接口服务;
其中,在服务端所在节点号与客户端所在节点号相同,且服务端提供的RPC接口服务对应的进程与客户端所在进程相同时,发起的调用为直接调用的方式,否则为创建套接字SOCKET连接的方式。
10.根据权利要求9所述的方法,其特征在于,在接收客户端所发起的对服务端提供的RPC接口服务的调用之前,还包括:
获取服务端提供的RPC接口服务的静态调用号和用于唯一标识服务端所在节点的节点号,其中所述静态调用号包括所述RPC接口服务对应的进程编号和回调函数编号;
将获取得到的RPC接口服务的静态调用号和节点号组合生成RPC接口服务的动态调用号;
确定所述RPC接口服务的SOCKET监听端口号,创建该监听端口号下的预设的适应于跨节点的TIPC SOCKET以及适应于跨进程的UNIX SOCKET,等待客户端连接;
所述接收客户端通过创建SOCKET连接的方式所发起的所述调用,响应所述调用,为客户端提供RPC接口服务,包括:
接收客户端发起的所述SOCKET监听端口号下的TIPC SOCKET或者UNIX SOCKET连接请求;
与客户端建立与所述连接请求对应的SOCKET连接,基于该SOCKET连接为客户端提供RPC接口服务;
其中,为客户端提供RPC接口服务包括:接收客户端发送的对待调用的服务端提供的RPC接口服务的包含有所述动态调用号的调用请求数据;向客户端反馈根据所述调用请求数据调用所述RPC接口服务的回调函数得到的应答数据。
11.根据权利要求10所述的方法,其特征在于,确定所述RPC接口服务的SOCKET监听端口号,包括:
当所述RPC接口服务的线程分配结果为独占线程时,将所述RPC接口服务的动态调用号作为所述RPC接口服务的SOCKET监听端口号;
当所述RPC接口服务的线程分配结果为共用线程时,将所述服务端的预设的SOCKET公用监听端口号,作为所述RPC接口服务的SOCKET监听端口号。
12.根据权利要求11所述的方法,其特征在于,所述方法还包括:
依据RPC接口服务的服务质量,为服务端提供的所有RPC接口服务进行线程分配。
13.根据权利要求12所述的方法,其特征在于,依据RPC接口服务的服务质量,为服务端提供的所有RPC接口服务进行线程分配,包括:
根据RPC接口服务的历史调用情况统计信息,计算RPC接口服务的服务质量值;
确定服务质量值所属的服务质量等级;
为RPC接口服务分配与服务质量等级相对应的线程分配结果;
其中,所述历史调用情况统计信息包括如下至少一种信息:调用崩溃次数、平均调用耗时时长、调用栈深度和调用次数。
14.根据权利要求10所述的方法,其特征在于,获取服务端提供的RPC接口服务的静态调用号,包括:
利用C语言头文件,确定服务端提供的RPC接口服务的静态调用号,所述C语言头文件中预先定义了各RPC接口服务的静态调用号和静态调用号的回调函数编号对应的回调函数名称;
其中,回调函数名称采用弱符号描述。
15.根据权利要求14所述的方法,其特征在于,响应所述调用,为客户端提供所述RPC接口服务,包括:
根据所述RPC接口服务的动态调用号和回调函数名称,在C语言文件中查询对应的回调函数;
若查询到对应的回调函数时,根据所述回调函数为客户端提供RPC接口服务,否则,向客户端提供所述回调函数为空的应答指示信息。
16.根据权利要求9所述的方法,其特征在于,所述接收客户端所发起的对服务端提供的RPC接口服务的调用步骤之前,还包括:
将不同RPC接口服务的在线/离线状态通过组播消息进行组播,以使客户端确定RPC接口服务的在线/离线状态。
17.一种客户端进行远程过程调用RPC的装置,其特征在于,所述装置包括:
存储器,用于存储指令;
处理器,用于读取所述存储器中的指令,执行下列过程:
确定待调用的服务端提供的RPC接口服务和对应的动态调用号,所述动态调用号包括静态调用号和服务端所在节点号,所述静态调用号包括所述RPC接口服务对应的进程编号和回调函数编号;
确定所述服务端所在节点号与客户端所在节点号相同,且所述进程编号标识的进程与客户端所在进程相同时,通过直接调用的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务;
否则,通过创建套接字SOCKET连接的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务。
18.一种服务端进行远程过程调用RPC的装置,其特征在于,所述装置包括:
存储器,用于存储指令;
处理器,用于读取所述存储器中的指令,执行下列过程:
接收客户端所发起的对服务端提供的RPC接口服务的调用;
响应所述调用,为客户端提供所述RPC接口服务;
其中,在服务端所在节点号与客户端所在节点号相同,且服务端提供的RPC接口服务对应的进程与客户端所在进程相同时,发起的调用为直接调用的方式,否则为创建套接字SOCKET连接的方式。
19.一种客户端进行远程过程调用RPC的装置,其特征在于,所述装置包括如下模块:
比对模块,用于确定待调用的服务端提供的RPC接口服务和对应的动态调用号,所述动态调用号包括静态调用号和服务端所在节点号,所述静态调用号包括所述RPC接口服务对应的进程编号和回调函数编号;
连接方式确定模块,用于确定所述服务端所在节点号与客户端所在节点号相同,且所述进程编号标识的进程与客户端所在进程相同时,通过直接调用的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供所述RPC接口服务;
否则,通过创建套接字SOCKET连接的方式,调用所述回调函数编号对应的回调函数,使所述服务端为客户端提供调用所述RPC接口服务。
20.一种服务端进行远程过程调用RPC的装置,其特征在于,所述装置包括如下模块:
接收指示模块,用于接收客户端所发起的对服务端提供的RPC接口服务的调用;
建立连接模块,用于响应所述调用,为客户端提供所述RPC接口服务;
其中,在服务端所在节点号与客户端所在节点号相同,且服务端提供的RPC接口服务对应的进程与客户端所在进程相同时,发起的调用为直接调用的方式,否则为创建套接字SOCKET连接的方式。
21.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-8任一所述的方法,或者执行实现如权利要求9-16任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010448873.4A CN111597061B (zh) | 2020-05-25 | 2020-05-25 | 一种客户端或服务端进行远程过程调用方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010448873.4A CN111597061B (zh) | 2020-05-25 | 2020-05-25 | 一种客户端或服务端进行远程过程调用方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111597061A true CN111597061A (zh) | 2020-08-28 |
CN111597061B CN111597061B (zh) | 2023-11-17 |
Family
ID=72186236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010448873.4A Active CN111597061B (zh) | 2020-05-25 | 2020-05-25 | 一种客户端或服务端进行远程过程调用方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111597061B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084046A (zh) * | 2020-09-12 | 2020-12-15 | 朱领军 | 一种Dubbo泛化接口调用方法及装置 |
CN112799787A (zh) * | 2021-02-07 | 2021-05-14 | 北京华如科技股份有限公司 | 一种在仿真运行中改进的并行行为执行冲突消解方法及其存储介质 |
CN112965832A (zh) * | 2021-02-18 | 2021-06-15 | 腾讯科技(深圳)有限公司 | 一种远程过程调用rpc服务调用方法和相关装置 |
CN113010333A (zh) * | 2021-03-24 | 2021-06-22 | 北京中电兴发科技有限公司 | 适用于Linux服务器集群的多场景进程间通信方法 |
CN113190292A (zh) * | 2021-05-26 | 2021-07-30 | 的卢技术有限公司 | 一种远程在多台服务器上执行函数的方法和装置 |
CN113360525A (zh) * | 2021-08-10 | 2021-09-07 | 支付宝(杭州)信息技术有限公司 | 查询请求处理方法、装置及设备、键值查询*** |
CN114816792A (zh) * | 2022-04-20 | 2022-07-29 | 北京计算机技术及应用研究所 | 一种基于专用通道的远程函数调用方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6728788B1 (en) * | 1999-12-16 | 2004-04-27 | International Business Machines Corporation | Method and system for converting a remote procedure call to a local procedure call when the service is on the same device as the calling client |
US20110138404A1 (en) * | 2009-12-04 | 2011-06-09 | International Business Machines Corporation | Remote procedure call (rpc) bind service with physical interface query and selection |
US20120324483A1 (en) * | 2009-12-04 | 2012-12-20 | International Business Machines Corporation | Remote procedure call (rpc) bind service with physical interface query and selection |
CN103023906A (zh) * | 2012-12-20 | 2013-04-03 | 北京奇虎科技有限公司 | 针对远程过程调用协议进行状态跟踪的方法及*** |
CN107920075A (zh) * | 2017-11-17 | 2018-04-17 | 北京锐安科技有限公司 | 一种数据处理的*** |
-
2020
- 2020-05-25 CN CN202010448873.4A patent/CN111597061B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6728788B1 (en) * | 1999-12-16 | 2004-04-27 | International Business Machines Corporation | Method and system for converting a remote procedure call to a local procedure call when the service is on the same device as the calling client |
US20110138404A1 (en) * | 2009-12-04 | 2011-06-09 | International Business Machines Corporation | Remote procedure call (rpc) bind service with physical interface query and selection |
US20120324483A1 (en) * | 2009-12-04 | 2012-12-20 | International Business Machines Corporation | Remote procedure call (rpc) bind service with physical interface query and selection |
CN103023906A (zh) * | 2012-12-20 | 2013-04-03 | 北京奇虎科技有限公司 | 针对远程过程调用协议进行状态跟踪的方法及*** |
CN107920075A (zh) * | 2017-11-17 | 2018-04-17 | 北京锐安科技有限公司 | 一种数据处理的*** |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112084046A (zh) * | 2020-09-12 | 2020-12-15 | 朱领军 | 一种Dubbo泛化接口调用方法及装置 |
CN112799787A (zh) * | 2021-02-07 | 2021-05-14 | 北京华如科技股份有限公司 | 一种在仿真运行中改进的并行行为执行冲突消解方法及其存储介质 |
CN112799787B (zh) * | 2021-02-07 | 2023-10-03 | 北京华如科技股份有限公司 | 一种在仿真运行中改进的并行行为执行冲突消解方法及其存储介质 |
CN112965832A (zh) * | 2021-02-18 | 2021-06-15 | 腾讯科技(深圳)有限公司 | 一种远程过程调用rpc服务调用方法和相关装置 |
CN112965832B (zh) * | 2021-02-18 | 2023-09-26 | 腾讯科技(深圳)有限公司 | 一种远程过程调用rpc服务调用方法和相关装置 |
CN113010333B (zh) * | 2021-03-24 | 2021-10-15 | 北京中电兴发科技有限公司 | 适用于Linux服务器集群的多场景进程间通信方法 |
CN113010333A (zh) * | 2021-03-24 | 2021-06-22 | 北京中电兴发科技有限公司 | 适用于Linux服务器集群的多场景进程间通信方法 |
CN113190292B (zh) * | 2021-05-26 | 2023-09-26 | 的卢技术有限公司 | 一种远程在多台服务器上执行函数的方法和装置 |
CN113190292A (zh) * | 2021-05-26 | 2021-07-30 | 的卢技术有限公司 | 一种远程在多台服务器上执行函数的方法和装置 |
CN113360525A (zh) * | 2021-08-10 | 2021-09-07 | 支付宝(杭州)信息技术有限公司 | 查询请求处理方法、装置及设备、键值查询*** |
CN113360525B (zh) * | 2021-08-10 | 2021-12-07 | 支付宝(杭州)信息技术有限公司 | 查询请求处理方法、装置及设备、键值查询*** |
CN114816792A (zh) * | 2022-04-20 | 2022-07-29 | 北京计算机技术及应用研究所 | 一种基于专用通道的远程函数调用方法 |
CN114816792B (zh) * | 2022-04-20 | 2024-04-09 | 北京计算机技术及应用研究所 | 一种基于专用通道的远程函数调用方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111597061B (zh) | 2023-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111597061A (zh) | 一种客户端或服务端进行远程过程调用方法及装置 | |
CN107087019B (zh) | 一种基于端云协同计算架构的任务调度方法及装置 | |
CN1135800C (zh) | 用于具有处理器群集的电信平台的因特网协议处理器 | |
WO2019019400A1 (zh) | 任务分布式处理方法、装置、存储介质和服务器 | |
CN111880902A (zh) | 一种pod创建方法、装置、设备及可读存储介质 | |
CN112564994B (zh) | 流量监测方法、装置、云服务器及存储介质 | |
CN109819023B (zh) | 分布式事务处理方法及相关产品 | |
CN112929225B (zh) | 会话异常处理方法、装置、计算机设备和存储介质 | |
US8458702B1 (en) | Method for implementing user space up-calls on java virtual machine before/after garbage collection | |
CN114979286B (zh) | 容器服务的访问控制方法、装置、设备及计算机存储介质 | |
CN112698838A (zh) | 多云容器部署***及其容器部署方法 | |
CN113886058A (zh) | 一种跨集群资源调度方法和装置 | |
CN110780973A (zh) | 一种虚拟机迁移装置、方法、设备及可读存储介质 | |
CN113067739B (zh) | 一种高密度容器网络部署方法及*** | |
US20240118935A1 (en) | Pod deployment method and apparatus | |
EP3672203A1 (en) | Distribution method for distributed data computing, device, server and storage medium | |
CN112261125B (zh) | 集中单元的云化部署方法、装置及*** | |
CN113672336A (zh) | 一种k8s容器集群部署方法、装置、设备及可读存储介质 | |
CN113360386A (zh) | 交换芯片驱动测试方法、装置、电子设备和存储介质 | |
CN113268254A (zh) | 一种集群***安装方法、装置、电子设备及存储介质 | |
CN114513419A (zh) | 安全策略配置方法及*** | |
CN114745377B (zh) | 边缘云集群服务***及实现方法 | |
CN111858079B (zh) | 分布式锁迁移方法、装置及电子设备、存储介质 | |
EP4083795A1 (en) | Method for deploying virtual machine, and related apparatus | |
CN111431951B (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 |