基于PHP的高性能远程过程调用方法与流程

文档序号:15221650发布日期:2018-08-21 17:32阅读:1060来源:国知局

本发明涉及数据对象的序列化与反序列化、基于网络的过程调用方法,特别是涉及基于http协议的远程过程调用(rpc)方法。



背景技术:

现有的技术中比较有代表性的远程过程调用rpc实现机制包括微软的组件对象模型componentobjectmodel+技术即com+技术、微软.net平台的remoting及wcf技术,公共对象请求代理体系结构commonobjectrequestbrokerarchitecture技术即corba技术,以及企业级软件组件模型enterprisejavabeans技术即javaejb技术。com+技术及.net的remoting及wcf技术只适合在windows平台下使用并且只能使用微软件的vb、c#等技术栈,javaejb技术仅支持java语言开发,实施需要依懒java虚拟机javavirtualmachine即jvm的支持。而且上述现有技术都不能全面的实现以下需求:

1.能够支持php语言技术栈;

2.轻量级的跨平台支持;

3.支持系统的弹性架构,从轻量级到平台级的开发可以在一种架构模式下实现;

4.基于js对象标记javascriptobjectnotation即json数据格式的序列化支持;

5.基于纯粹的超文本传输协议即http协议;

6.动态支持;

7.提供服务治理相关的功能;

8.即开即用支持;

因此需要一种远程调用框架(实现方案),能够基于php技术栈实现远程方法的调用,客户端只需要引用少许的php框架文件即可像调用本地方法一样调用远程的php方法函数,数据的序列化、远程通信及代理细节对用户不可见,开箱即用。同实保证简单、易用、轻量级、安全、高性能等特性。



技术实现要素:

本发明要解决的技术问题在于避免现有技术的不足之处而提出给出了一种远程过程调用(rpc)的框架方法,从而能够实现本地或者基于企业内部网intranet或者基于互联网internet的php远程过程调用rpc;本发明通过在php技术栈下通过json+http技术实现了远程方法调用,能够应用于基于php技术的soa、微服务等架构下的远程调用中间件。

本发明提出的远程过程调用rpc的方法,在掌握了php技术的基础上,通过http协议的方式实现远程方法的入口参数与出口参数的数据交互。

本发明解决所述技术问题可以通过以下技术方案来实现:

基于php的高性能远程过程调用方法,包括以下步骤:

a.提出一种基于http通讯方式下的远程方法路由协议,可以提供客户端client和服务端server之间的方法及方法签名约定;

b.提出一种基于json的数据序列化方法,可以对php基本数据类型、php复杂数据类型、php自定义数据类型进行自动的序列化与反序列化;

c.提出一种远程定位模型,可以根据提供的协议+ip地址或域名+端口+模块+方法名的方式(http://127.0.0.1:8080/user/useradd)进行寻址定位;

d.提出一种方式对服务端的远程方法进行标记为远程调用方法,可以采用继承机制或是命名规泛的方式实现;

e.提出一种代理方式应用于客户端,代理对远程方法进行封装,让客户端调用远程方法就像是调用本地方法一样简单高效;

f.提出一种数据压缩算法可选对通信数据进行压缩,降低远程调用过程中的带宽流量点用,让远程调用速度更快带宽占用更少;

g.提出一种错误异常跟踪及反馈机制,方便控制远程调用中产生的异常问题,便于在远程调用时进行debug调试,像本地调试一样便捷;

h.提出一种日志机制,记录远程过程调用中的调用信息与错误信息;

i.提出一种发布-订阅的服务注册中心机制,降低客户端client与服务端server远程过程调用的偶合;

j.提出一种监控机制,可以对服务的调用关系及调用量进行监控;

k.提出一种权限机制,可以控制客户端可以有权调用哪些服务;

l.提出一种熔断机制,可以设置阀值指标当到达阀值的时候熔断哪些远程调用请求,以保证已发生的部分远程调用过程;

本发明所述方案基于php的高性能远程过程调用(rpc)框架,用于php语言所研发的分布式服务系统应用与服务进行远程通信与方法调用,是对客户端client/服务器端server调用模式应用起到了基础框架作用,其中包含的核心内容包括各种数据对象的序列化与反序列化、远程方法的序列化及反序列化、客户端到服务端的通信。

这样一来,采用本发明方法后客户端只需要引用少许的php框架文件即可像调用本地方法一样调用远程的php方法函数,数据的序列化、远程通信及代理细节对用户不可见,开箱即用。同实保证简单、易用、轻量级、安全、高性能等特性。

附图说明:

以下结合附图和具体实施方式来进一步说明本发明。

图1为本发明所述基于php的高性能远程过程调用方法在具体实施例的流程示意图。

具体实施方式:

为了使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体图示,进一步阐述本发明。

如图1所示,本发明是提出一种基于php技术栈的远程过程调用方法,该框架用于包括服务端和客户端的网络系统。所述服务器端由用于实现服务功能的软硬件组成。所述客户端由用于实现客户端功能的软硬件组成。所述客户端借助基于超文本传输协议即http协议与服务端建立链接。所述方法包括如下步骤:

如图1中步骤104所示,服务端将需要暴露给客户端的类及方法标记成远程过程方法,类需要继承gyrpc类,方法需要以gyfunc结尾结束,通过以上两步就可以将方法设置为调用的方法,供给客户使用。示例代码如下:

classcontractextendsgyrpc远程方法类继承gyrpc类

publicfunctiongetcontractgyfunc($params)远程方法以gyfunc结尾

如图1中步骤101所示,客户端需要创建远程过程调用的代理,此代理就是通过本框架生成,通过代理就可以调用远程过程方法。示例代码如下:

usegyrpc\client;引用本框架

$rpc=yaf_registry::get(“gyrpc”);根据配置初始化远程过程调用代理

$this->contract=client::create($rpc->host.’contract’,false);创建远程方法类的代理

如图1中步骤102所示,创建好远程过程调用方法的代理后,就可以使用代理来调用远程方法,像使用本地方法一样使用。示例代码如下:

$contractdoc=$this->contract->getcontractgyfunc($contractsysno);调用远程过程方法,传入方法签名参数并取得方法的返回值

如图1中步骤103所示,远程过程调用框架会对客户端的数据及行为进行数据序列化,方便远程过程调用中的数据传输,序列化完成后框架建立与服务端的链接并发送远程过程调用信息到服务端。

如图1中步骤106及107所示,服务端接收到了客户端发送的数据进行解析。并对解析进行反序列化生成本地化的方法调用关系。

如图1中步骤108及109所示,框架服务端跟据客户端的请求逻辑及数据进行本地化方法调用,在调用完成后进行序列化并返回到客户端。

如图1中步骤120及121所示,客户端代理完成一次远程调用后得到服务端返回的调用结果信息数据,代理对数据进行反序列化解析并返回远程方法返回的本地php数据类型。

以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1