CN108347445B - 实现远程调用的方法及装置 - Google Patents
实现远程调用的方法及装置 Download PDFInfo
- Publication number
- CN108347445B CN108347445B CN201810226550.3A CN201810226550A CN108347445B CN 108347445 B CN108347445 B CN 108347445B CN 201810226550 A CN201810226550 A CN 201810226550A CN 108347445 B CN108347445 B CN 108347445B
- Authority
- CN
- China
- Prior art keywords
- rpc
- message
- php
- proxy service
- posix
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 159
- 230000008569 process Effects 0.000 claims abstract description 101
- 238000012546 transfer Methods 0.000 claims abstract description 62
- 230000004044 response Effects 0.000 claims abstract description 46
- 238000004590 computer program Methods 0.000 claims description 19
- 230000000903 blocking effect Effects 0.000 abstract description 12
- 230000006870 function Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 238000012544 monitoring process Methods 0.000 description 2
- 230000001413 cellular effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
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/01—Protocols
- H04L67/133—Protocols for remote procedure calls [RPC]
-
- 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
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
-
- 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
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Telephonic Communication Services (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
本发明实施例提供了一种实现远程调用的方法及装置,所述方法包括:将PHP进程的RPC调用请求信息添加到公用POSIX消息队列,所述RPC调用请求信息中携带有所述PHP进程的进程ID;通过预设的proxy代理服务将所述公用POSIX消息队列中的所述RPC调用请求信息发送到消息中转服务器,以供所述消息中转服务器在执行相应的方法调用后返回RPC响应消息,所述RPC响应消息中携带有所述PHP进程的进程ID;根据所述进程ID将所述RPC响应消息添加到所述PHP进程对应的专用POSIX消息队列;从所述专用POSIX消息队列中提取所述RPC响应消息。本发明实现了非阻塞式的RPC调用方式,相对于传统的阻塞式的RPC调用方式,有效地提高RPC调用性能。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种实现远程调用的方法及装置。
背景技术
PHP(Hypertext Preprocessor,超文本预处理器)是一种创建动态交互性站点的强有力的服务器端脚本语言,现有技术中,由于脚本语言的特性,PHP在调用RPC(RemoteProcedure Call,远程过程调用)时通常采用的是阻塞的调用方式。但是,阻塞式调用的性能很低,无法应对高并发的调用场景。而且,每当有通信协议更改或者PHP配置的修改时,都需要重启PHP,进而导致整个PHP服务不可用。
发明内容
鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的实现远程调用的方法及装置。
本发明的一个方面,提供了一种实现远程调用的方法,所述方法包括:
将PHP进程的RPC调用请求信息添加到公用POSIX消息队列,所述RPC调用请求信息中携带有所述PHP进程的进程ID;
通过预设的proxy代理服务将所述公用POSIX消息队列中的所述RPC调用请求信息发送到消息中转服务器,以供所述消息中转服务器在执行相应的方法调用后返回RPC响应消息,所述RPC响应消息中携带有所述PHP进程的进程ID;
根据所述进程ID将所述RPC响应消息添加到所述PHP进程对应的专用POSIX消息队列;
从所述专用POSIX消息队列中提取所述RPC响应消息。
其中,在所述将PHP进程的RPC调用请求信息添加到公用POSIX消息队列之前,所述方法还包括:
预先在所述PHP进程和所述消息中转服务器之间设置所述proxy代理服务。
其中,所述通过预设的proxy代理服务将所述公用POSIX消息队列中的所述RPC调用请求信息发送到消息中转服务器,包括:
通过预设的proxy代理服务从所述公用POSIX消息队列中提取所述RPC调用请求信息,根据所述RPC调用请求信息生成RPC网络协议包,并基于所述proxy代理服务与所述消息中转服务器之间的TCP长连接将所述RPC网络协议包发送到消息中转服务器。
其中,所述基于所述proxy代理服务与所述消息中转服务器之间的TCP长连接将所述RPC网络协议包发送到消息中转服务器,具体包括:
根据负载均衡,从当前运行的各消息中转服务器中选择目标消息中转服务器;
基于所述proxy代理服务与所述目标消息中转服务器之间的TCP长连接将所述RPC网络协议包发送到所述目标消息中转服务器。
其中,所述proxy代理服务采用单线程多进程的工作模式。
本发明的另一个方面,提供了一种实现远程调用的装置,所述装置包括:
PHP扩展模块,用于将PHP进程的RPC调用请求信息添加到公用POSIX消息队列,所述RPC调用请求信息中携带有所述PHP进程的进程ID;
proxy代理服务模块,用于通过预设的proxy代理服务将所述公用POSIX消息队列中的所述RPC调用请求信息发送到消息中转服务器,以供所述消息中转服务器在执行相应的方法调用后返回RPC响应消息,所述RPC响应消息中携带有所述PHP进程的进程ID;
proxy代理服务模块,还用于根据所述进程ID将所述RPC响应消息添加到所述PHP进程对应的专用POSIX消息队列;
PHP扩展模块,还用于从所述专用POSIX消息队列中提取所述RPC响应消息。
其中,所述装置还包括:
配置模块,用于在所述PHP扩展模块将PHP进程的RPC调用请求信息添加到公用POSIX消息队列之前,预先在所述PHP进程和所述消息中转服务器之间设置所述proxy代理服务。
其中,所述proxy代理服务模块,具体用于通过预设的proxy代理服务从所述公用POSIX消息队列中提取所述RPC调用请求信息,根据所述RPC调用请求信息生成RPC网络协议包,并基于所述proxy代理服务与所述消息中转服务器之间的TCP长连接将所述RPC网络协议包发送到消息中转服务器。
此外,本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述方法的步骤。
此外,本发明还提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上所述方法的步骤。
本发明实施例提供的实现远程调用的方法及装置,通过在PHP进程和消息中转服务MsgServer之间设置proxy代理服务,并通过POSIX消息队列进行PHP进程与proxy代理服务之间调用请求的传输,采用基于proxy代理服务的RPC架构,实现了非阻塞式的RPC调用方式,相对于传统的阻塞式的RPC调用方式,有效地提高了RPC调用性能。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1为本发明实施例的一种实现远程调用的方法的流程图;
图2为本发明实施例的一种实现远程调用的装置的结构框图;
图3为本发明实施例的计算机设备的示意图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非被特定定义,否则不会用理想化或过于正式的含义来解释。
为了从RPC调用的性能和模块之间的解耦两个维度来解决现有的PHP调用RPC存在的问题,本发明实施例提供了一种通过引入PHP扩展和proxy代理的方式实现远程调用的方法。
图1示意性示出了本发明一个实施例的实现远程调用的方法的流程图。参照图1,本发明实施例的实现远程调用的方法具体包括以下步骤:
步骤S11、将PHP进程的RPC调用请求信息添加到公用POSIX消息队列,其中,所述RPC调用请求信息中携带有所述PHP进程的进程ID。
本实施例中,通过对PHP进程进行扩展,使用PHP扩展模块msg_client.so实现与消息中转服务MsgServer的非阻塞式RPC调用。具体的,PHP进程调用msg_client的PHP扩展将RPC调用请求信息发送到公用的POSIX消息队列。
本实施例中,在步骤S11中的将PHP进程的RPC调用请求信息添加到公用POSIX消息队列之前,还包括以下步骤:预先在所述PHP进程和所述消息中转服务器之间设置所述proxy代理服务。其中,proxy代理服务采用单线程多进程的工作模式。
步骤S12、通过预设的proxy代理服务将所述公用POSIX消息队列中的所述RPC调用请求信息发送到消息中转服务器,以供所述消息中转服务器在执行相应的方法调用后返回RPC响应消息,所述RPC响应消息中携带有所述PHP进程的进程ID。
本发明实施例中,所述通过预设的proxy代理服务将所述公用POSIX消息队列中的所述RPC调用请求信息发送到消息中转服务器,具体通过以下步骤实现:通过预设的proxy代理服务从所述公用POSIX消息队列中提取所述RPC调用请求信息,根据所述RPC调用请求信息生成RPC网络协议包,并基于所述proxy代理服务与所述消息中转服务器之间的TCP长连接将所述RPC网络协议包发送到消息中转服务器。
在实际应用中,proxy代理服务从公用POSIX消息队列中拉取RPC调用请求信息。然后,proxy代理服务将RPC调用请求信息生成RPC调用的二进制协议包,即RPC网络协议包,并发送到消息中转服务器MsgServer,以供MsgServer执行相应的方法调用,并在调用完成后,将RPC的RPC响应消息返回给proxy代理服务。
步骤S13、根据所述进程ID将所述RPC响应消息添加到所述PHP进程对应的专用POSIX消息队列。
本实施例中,proxy代理服务在接收到消息中转服务器返回的RPC响应消息之后,proxy代理服务会根据响应消息中携带的PHP进程的进程ID路由到对应的PHP进程所属的专用POSIX消息队列。
步骤S14、从所述专用POSIX消息队列中提取所述RPC响应消息。
本实施例中,PHP进程执行msg_client扩展从专用POSIX消息队列中拉取RPC响应信息,完成RPC调用的全流程。
本实施例中,使用PHP扩展msg_client.so实现与消息中转服务MsgServer的RPC调用,并在中间引入代理层proxy,PHP扩展与proxy之间的通信方式采用POSIX消息队列。其中,POSIX消息队列是Linux进程间通信的常用方式,主要用于不同进程间发送特定格式的消息数据。
本实施例中,proxy与MsgServer之间采用的是TCP的长连接。本发明通过使用proxy代理实现了模块之间的解耦,而且还可以通过与消息中转服务器MsgServer的长连接,从而应对高并发场景下的RPC请求调用。
本发明实施例提供的实现远程调用的方法,通过在PHP进程和消息中转服务MsgServer之间设置proxy代理服务,并通过POSIX消息队列进行PHP进程与proxy代理服务之间调用请求的传输,采用基于proxy代理服务的RPC架构,实现了非阻塞式的RPC调用方式,相对于传统的阻塞式的RPC调用方式,有效地提高了RPC调用性能。
在一个具体实施例中,各个PHP进程通过PHP扩展msg_client.so将RPC调用请求信息添加到公用POSIX消息队列,其中,RPC调用请求信息中携带有所述PHP进程的进程ID。proxy代理服务将所述公用POSIX消息队列中的各个RPC调用请求信息分别发送到相同或不同的消息中转服务器,以供各自相对应的消息中转服务器在执行相应的方法调用后返回RPC响应消息,所述RPC响应消息中携带有所述PHP进程的进程ID。proxy代理服务根据各个RPC响应消息中携带的进程ID将各个RPC响应消息添加到相应PHP进程各自对应的专用POSIX消息队列。各个PHP进程通过PHP扩展msg_client.so从各自对应的专用POSIX消息队列中拉取RPC响应信息,完成RPC调用的全流程。
本发明实施例中,所述基于所述proxy代理服务与所述消息中转服务器之间的TCP长连接将所述RPC网络协议包发送到消息中转服务器,具体包括以下步骤:
根据负载均衡,从当前运行的各消息中转服务器中选择目标消息中转服务器;
基于所述proxy代理服务与所述目标消息中转服务器之间的TCP长连接将所述RPC网络协议包发送到所述目标消息中转服务器。
本实施例通过对RPC请求的调用进行负载均衡,进一步提高了RPC调用性能。
本实施例中,proxy代理服务的具体功能如下:
通过消息队列与PHP扩展交互。
通过与MsgServer之间的长连接,请求和接收RPC调用。
将PHP进程发送过来的RPC请求消息组成RPC网络协议包。
对RPC请求的调用进行负载均衡。
对RPC请求和响应的统计与监控。
其中,proxy代理采用单线程多进程的工作模式,每个进程之间完全对等,可以平行扩展,用于应对高并发的场景。
本发明实施例实现了基于proxy代理的RPC架构,使用PHP扩展实现了非阻塞的RPC调用方式,而且使用PHP扩展比传统的PHP调用的性能更加高效。使用proxy代理实现了模块之间的解耦,并且可以通过proxy代理做到RPC调用的负载均衡和统计监控,而且proxy代理还可以实现与MsgServer的长连接,从而应对高并发场景下的RPC请求调用。
对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
图2示意性示出了本发明一个实施例的实现远程调用的装置的结构示意图。参照图2,本发明实施例的实现远程调用的装置具体包括PHP扩展模块201以及proxy代理服务模块202,其中:
PHP扩展模块201,用于将PHP进程的RPC调用请求信息添加到公用POSIX消息队列,所述RPC调用请求信息中携带有所述PHP进程的进程ID;
proxy代理服务模块202,用于通过预设的proxy代理服务将所述公用POSIX消息队列中的所述RPC调用请求信息发送到消息中转服务器,以供所述消息中转服务器在执行相应的方法调用后返回RPC响应消息,所述RPC响应消息中携带有所述PHP进程的进程ID;
proxy代理服务模块202,还用于根据所述进程ID将所述RPC响应消息添加到所述PHP进程对应的专用POSIX消息队列;
PHP扩展模块201,还用于从所述专用POSIX消息队列中提取所述RPC响应消息。
其中,所述proxy代理服务采用单线程多进程的工作模式。
在本发明的一个实施例中,所述装置还包括附图中未示出的配置模块,其中:
配置模块,用于在所述PHP扩展模块201将PHP进程的RPC调用请求信息添加到公用POSIX消息队列之前,预先在所述PHP进程和所述消息中转服务器之间设置所述proxy代理服务。
在本发明的一个实施例中,所述proxy代理服务模块202,具体用于通过预设的proxy代理服务从所述公用POSIX消息队列中提取所述RPC调用请求信息,根据所述RPC调用请求信息生成RPC网络协议包,并基于所述proxy代理服务与所述消息中转服务器之间的TCP长连接将所述RPC网络协议包发送到消息中转服务器。
进一步地,所述基于所述proxy代理服务与所述消息中转服务器之间的TCP长连接将所述RPC网络协议包发送到消息中转服务器,具体为:根据负载均衡,从当前运行的各消息中转服务器中选择目标消息中转服务器;基于所述proxy代理服务与所述目标消息中转服务器之间的TCP长连接将所述RPC网络协议包发送到所述目标消息中转服务器。
对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
本发明实施例提供的实现远程调用的方法及装置,通过在PHP进程和消息中转服务MsgServer之间设置proxy代理服务,并通过POSIX消息队列进行PHP进程与proxy代理服务之间调用请求的传输,采用基于proxy代理服务的RPC架构,实现了非阻塞式的RPC调用方式,相对于传统的阻塞式的RPC调用方式,有效地提高了RPC调用性能。
进一步地,本发明通过使用proxy代理实现了模块之间的解耦,而且还可以通过与消息中转服务器MsgServer的长连接,从而应对高并发场景下的RPC请求调用。
此外,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上所述方法的步骤。
本实施例中,所述实现远程调用的装置集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
图3为本发明实施例提供的计算机设备的示意图。本发明实施例提供的计算机设备,包括存储器301、处理器302及存储在存储器301上并可在处理器302上运行的计算机程序,所述处理器302执行所述计算机程序时实现上述各个实现远程调用的方法实施例中的步骤,例如图1所示的步骤S11、将PHP进程的RPC调用请求信息添加到公用POSIX消息队列,所述RPC调用请求信息中携带有所述PHP进程的进程ID;步骤S12、通过预设的proxy代理服务将所述公用POSIX消息队列中的所述RPC调用请求信息发送到消息中转服务器,以供所述消息中转服务器在执行相应的方法调用后返回RPC响应消息,所述RPC响应消息中携带有所述PHP进程的进程ID;步骤S13、根据所述进程ID将所述RPC响应消息添加到所述PHP进程对应的专用POSIX消息队列;步骤S14、从所述专用POSIX消息队列中提取所述RPC响应消息。或者,所述处理器302执行所述计算机程序时实现上述各实现远程调用的装置实施例中各模块/单元的功能,例如图2所示的PHP扩展模块201以及proxy代理服务模块202。
示例性的,所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。所述一个或多个模块/单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述所述计算机程序在所述实现远程调用的装置中的执行过程。例如,所述计算机程序可以被分割成PHP扩展模块201以及proxy代理服务模块202,各模块具体功能如下:PHP扩展模块201,用于将PHP进程的RPC调用请求信息添加到公用POSIX消息队列,所述RPC调用请求信息中携带有所述PHP进程的进程ID;proxy代理服务模块202,用于通过预设的proxy代理服务将所述公用POSIX消息队列中的所述RPC调用请求信息发送到消息中转服务器,以供所述消息中转服务器在执行相应的方法调用后返回RPC响应消息,所述RPC响应消息中携带有所述PHP进程的进程ID;proxy代理服务模块202,还用于根据所述进程ID将所述RPC响应消息添加到所述PHP进程对应的专用POSIX消息队列;PHP扩展模块201,还用于从所述专用POSIX消息队列中提取所述RPC响应消息。所述计算机设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述计算机设备可包括,但不仅限于,处理器、存储器。本领域技术人员可以理解,所述示意图3仅仅是计算机设备的示例,并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如所述计算机设备还可以包括输入输出设备、网络接入设备、总线等。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等,所述处理器是所述计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述计算机设备的各种功能。所述存储器可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据手机的使用所创建的数据(比如音频数据、电话本等)等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如硬盘、内存、插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)、至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。
本领域的技术人员能够理解,尽管在此的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种实现远程调用的方法,其特征在于,所述方法包括:
PHP进程调用msg_client的PHP扩展将PHP进程的RPC调用请求信息添加到公用POSIX消息队列,所述RPC调用请求信息中携带有所述PHP进程的进程ID;
通过预设的proxy代理服务将所述公用POSIX消息队列中的所述RPC调用请求信息发送到相同或不同的消息中转服务器,以供所述消息中转服务器在执行相应的方法调用后返回RPC响应消息给proxy代理服务,所述RPC响应消息中携带有所述PHP进程的进程ID,所述proxy代理服务与消息中转服务器之间采用的是TCP的长连接;
proxy代理服务根据所述进程ID将所述RPC响应消息添加到所述PHP进程对应的专用POSIX消息队列;
PHP进程执行msg_client扩展从所述专用POSIX消息队列中提取所述RPC响应消息。
2.根据权利要求1所述的方法,其特征在于,在所述将PHP进程的RPC调用请求信息添加到公用POSIX消息队列之前,所述方法还包括:
预先在所述PHP进程和所述消息中转服务器之间设置所述proxy代理服务。
3.根据权利要求1所述的方法,其特征在于,所述通过预设的proxy代理服务将所述公用POSIX消息队列中的所述RPC调用请求信息发送到消息中转服务器,包括:
通过预设的proxy代理服务从所述公用POSIX消息队列中提取所述RPC调用请求信息,根据所述RPC调用请求信息生成RPC网络协议包,并基于所述proxy代理服务与所述消息中转服务器之间的TCP长连接将所述RPC网络协议包发送到消息中转服务器。
4.根据权利要求3所述的方法,其特征在于,所述基于所述proxy代理服务与所述消息中转服务器之间的TCP长连接将所述RPC网络协议包发送到消息中转服务器,具体包括:
根据负载均衡,从当前运行的各消息中转服务器中选择目标消息中转服务器;
基于所述proxy代理服务与所述目标消息中转服务器之间的TCP长连接将所述RPC网络协议包发送到所述目标消息中转服务器。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述proxy代理服务采用单线程多进程的工作模式。
6.一种实现远程调用的装置,其特征在于,所述装置包括:
PHP扩展模块,用于PHP进程调用msg_client的PHP扩展将PHP进程的RPC调用请求信息添加到公用POSIX消息队列,所述RPC调用请求信息中携带有所述PHP进程的进程ID;
proxy代理服务模块,用于通过预设的proxy代理服务将所述公用POSIX消息队列中的所述RPC调用请求信息发送到相同或不同的消息中转服务器,以供所述消息中转服务器在执行相应的方法调用后返回RPC响应消息给proxy代理服务,所述RPC响应消息中携带有所述PHP进程的进程ID,所述proxy代理服务与消息中转服务器之间采用的是TCP的长连接;
所述proxy代理服务模块,还用于根据所述进程ID将所述RPC响应消息添加到所述PHP进程对应的专用POSIX消息队列;
所述PHP扩展模块,还用于PHP进程执行msg_client扩展从所述专用POSIX消息队列中提取所述RPC响应消息。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
配置模块,用于在所述PHP扩展模块将PHP进程的RPC调用请求信息添加到公用POSIX消息队列之前,预先在所述PHP进程和所述消息中转服务器之间设置所述proxy代理服务。
8.根据权利要求6所述的装置,其特征在于,所述proxy代理服务模块,具体用于通过预设的proxy代理服务从所述公用POSIX消息队列中提取所述RPC调用请求信息,根据所述RPC调用请求信息生成RPC网络协议包,并基于所述proxy代理服务与所述消息中转服务器之间的TCP长连接将所述RPC网络协议包发送到消息中转服务器。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-5任一项所述方法的步骤。
10.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-5任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810226550.3A CN108347445B (zh) | 2018-03-19 | 2018-03-19 | 实现远程调用的方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810226550.3A CN108347445B (zh) | 2018-03-19 | 2018-03-19 | 实现远程调用的方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108347445A CN108347445A (zh) | 2018-07-31 |
CN108347445B true CN108347445B (zh) | 2021-04-27 |
Family
ID=62958055
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810226550.3A Active CN108347445B (zh) | 2018-03-19 | 2018-03-19 | 实现远程调用的方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108347445B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110278278A (zh) * | 2019-06-26 | 2019-09-24 | 深圳市迅雷网络技术有限公司 | 一种数据传输方法、系统、装置及计算机介质 |
CN111045937B (zh) * | 2019-11-29 | 2023-08-18 | 广州品唯软件有限公司 | 接口调用的测试方法、服务器及存储介质 |
CN111010453B (zh) * | 2019-12-29 | 2022-05-24 | 中建材信息技术股份有限公司 | 服务请求处理方法、系统、电子设备及计算机可读介质 |
CN111131296B (zh) * | 2019-12-30 | 2022-04-26 | 杭州迪普科技股份有限公司 | 消息分发方法和装置 |
CN113132438A (zh) * | 2019-12-31 | 2021-07-16 | 深圳云天励飞技术有限公司 | 服务通讯、服务处理方法、及对应装置、及服务通讯系统 |
CN111309497B (zh) * | 2020-02-10 | 2023-09-26 | 北京有竹居网络技术有限公司 | 信息调用的方法及装置、服务器、终端和存储介质 |
KR20220098317A (ko) * | 2020-12-31 | 2022-07-12 | 센스타임 인터내셔널 피티이. 리미티드. | 정보 상호작용 방법들, 장치들, 디바이스들, 그리고 시스템들 및 저장 매체 |
CN115577397B (zh) * | 2022-12-08 | 2023-03-10 | 无锡沐创集成电路设计有限公司 | 数据处理方法、装置、设备及存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102946376A (zh) * | 2011-11-29 | 2013-02-27 | Ut斯达康通讯有限公司 | 一种异步通讯的实现方法 |
CN106713226A (zh) * | 2015-11-12 | 2017-05-24 | 卓望数码技术(深圳)有限公司 | 一种用于分布式系统的远程过程调用处理方法和系统 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101374154A (zh) * | 2008-10-22 | 2009-02-25 | 成都市华为赛门铁克科技有限公司 | 一种远程过程调用请求的处理方法和装置 |
CN101789976B (zh) * | 2010-01-27 | 2013-04-10 | 上海交通大学 | 嵌入式网络存储系统及其方法 |
CN102387206A (zh) * | 2011-10-20 | 2012-03-21 | 镇江睿泰信息科技有限公司 | 一种Web服务并发请求合成方法及系统 |
CN104468250B (zh) * | 2013-09-17 | 2018-06-15 | 深圳市共进电子股份有限公司 | Tr069测试中的消息处理方法和系统 |
CN104486330A (zh) * | 2014-12-11 | 2015-04-01 | 上海爱数软件有限公司 | 一种基于远程过程调用的双向通信系统 |
CN106161537B (zh) * | 2015-04-10 | 2019-12-13 | 阿里巴巴集团控股有限公司 | 远程过程调用的处理方法、装置、系统及电子设备 |
CN105005469B (zh) * | 2015-06-03 | 2018-04-13 | 浙江大学 | 一种基于Zookeeper和RabbitMQ的非阻塞调用方法 |
CN106533932B (zh) * | 2017-01-17 | 2019-03-12 | 百度在线网络技术(北京)有限公司 | 一种用于推送即时消息的方法和装置 |
-
2018
- 2018-03-19 CN CN201810226550.3A patent/CN108347445B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102946376A (zh) * | 2011-11-29 | 2013-02-27 | Ut斯达康通讯有限公司 | 一种异步通讯的实现方法 |
CN106713226A (zh) * | 2015-11-12 | 2017-05-24 | 卓望数码技术(深圳)有限公司 | 一种用于分布式系统的远程过程调用处理方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN108347445A (zh) | 2018-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108347445B (zh) | 实现远程调用的方法及装置 | |
CN110765023B (zh) | 基于混沌实验的分布式系统测试方法及系统 | |
CN110958218B (zh) | 基于多网通信的数据传输方法及相关设备 | |
CN111897818B (zh) | 数据存储方法、装置、电子设备及存储介质 | |
CN111163130B (zh) | 一种网络服务系统及其数据传输方法 | |
WO2019127191A1 (zh) | 一种多操作系统共享文件系统的方法、装置和电子设备 | |
US10165058B2 (en) | Dynamic local function binding apparatus and method | |
CN107430514B (zh) | 使用多服务器的低延迟应用 | |
CN114124929B (zh) | 跨网络的数据处理方法和装置 | |
WO2019205555A1 (zh) | 消息推送方法及装置 | |
WO2021179156A1 (zh) | 消息处理方法、装置、系统以及服务器 | |
CN112751847A (zh) | 接口调用请求的处理方法、装置、电子设备及存储介质 | |
CN111200606A (zh) | 深度学习模型任务处理方法、系统、服务器及存储介质 | |
WO2021226781A1 (zh) | 防火墙规则的更新方法、装置、服务器及存储介质 | |
JP7339335B2 (ja) | DAppで要求する高いトランザクション処理量をブロックチェーンで効率的に処理するための方法およびシステム | |
CN113742389A (zh) | 一种业务处理方法和装置 | |
CN111090818B (zh) | 资源管理方法、资源管理系统、服务器及计算机存储介质 | |
US20170171150A1 (en) | Method and apparatus for processing public ip | |
CN117194068A (zh) | 一种跨进程数据传输方法、系统、设备及存储介质 | |
CN107154895A (zh) | 一种消息传输方法及服务器、计算机装置及存储介质 | |
CN113726838B (zh) | 文件传输方法、装置、设备及存储介质 | |
CN112764897B (zh) | 任务请求的处理方法、装置、系统及计算机可读存储介质 | |
CN111274176B (zh) | 一种信息处理方法、电子设备、系统及存储介质 | |
CN114625502A (zh) | 一种投词任务处理方法、装置、存储介质和电子设备 | |
CN113282347A (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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20240402 Address after: Room 601, 6th Floor, Building 5, Lianhuayuan, Haidian District, Beijing, 100080 Patentee after: Aerospace Guosheng Technology Co.,Ltd. Country or region after: China Address before: 430000 East Lake Development Zone, Wuhan City, Hubei Province, No. 1 Software Park East Road 4.1 Phase B1 Building 11 Building Patentee before: WUHAN DOUYU NETWORK TECHNOLOGY Co.,Ltd. Country or region before: China |
|
TR01 | Transfer of patent right |