PRC(Remote Procedure Call 远程过程调用) 是本地计算机程序经过网络调用远程计算机服务。php
能够作到分布式,现代化的微服务html
部署灵活java
解耦服务git
扩展性强github
RPC的目的是让你在本地调用远程的方法,而对你来讲这个调用是透明的,你并不知道这个调用的方法是部署哪里。经过RPC能解耦服务,这才是使用RPC的真正目的。web
client-server 结构,调用方为client,远程被调用方为server。thinkphp
1.调用客户端句柄;执行传送参数
2.调用本地系统内核发送网络消息
3.消息传送到远程主机
4.服务器句柄获得消息并取得参数
5.执行远程过程
6.执行的过程将结果返回服务器句柄
7.服务器句柄返回结果,调用远程系统内核
8.消息传回本地主机
9.客户句柄由内核接收消息
10.客户接收句柄返回的数据apache
通常主流框架都实现了跨平台跨语言的C/S RPC调用。安全
dubbo
,主流配合hessian协议使用,duboo/hessian.服务器
DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,天天为2,000+个服务提供3,000,000,000+次访问量支持,并被普遍应用于阿里巴巴集团的各成员站点。
thrift
,Apache Thrift software framework.
The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages.
hprose
,High Performance Remote Object Service Engine
是一款先进的轻量级、跨语言、跨平台、无侵入式、高性能动态远程对象调用引擎库。它不只简单易用,并且功能强大。
你无需专门学习,只需看上几眼,就能用它轻松构建分布式应用系统。
HTTP 本质来说是RPC调用的一种实现方式。换种方式说,RPC客户端能够经过HTTP链接到RPC服务端程序执行RPC(远程过程调用)。
把RPC比做交通工具,那么HTTP就是至关于汽车
协议统一,各个平台几乎都原生支持HTTP
调用简单,直接
开发方便
RPC框架通常使用长连接,没必要每次通讯都要3次握手,减小网络开销
RPC框架通常都有注册中心,有丰富的监控管理
发布、下线接口、动态扩展等,对调用方来讲是无感知、统一化的操做
协议私密,安全性较高
rpc 协议更简单内容更小,效率更高
服务化架构、服务化治理,RPC框架是一个强力的支撑
REST 是定义http接口调用的一种方式,REST 也能够说是RPC调用的实现方式。
参考文档: