什么是RPC
简介
RPC 的全称是 Remote Procedure Call ,指的是指远程过程调⽤,是分布式系统常见的⼀种通信协议,通常是指两个服务或者进程相互访问但是需要通过⽹络传输数据才能达到,也就是说两台服务器A,B,⼀个应⽤部署在A服务器上,想要调⽤B服务器上应⽤提供的函数或⽅法,由于不在⼀个内存空间,不能直接通过本地IPC调⽤,需要通过⽹络来表达调⽤的语义和传达调⽤的数据。RPC从早期的跨进程到现在的跨系统,跨物理机器已经发展了⼏⼗年。
在RPC中⽤户可以像调⽤本地⽅法/函数那样调⽤远程⽅法⽽⽆需了解底层实现细节。
RPC应⽤场景
1.⼤数据等分布式系统。
2.微服务
跨进程的⽅式种类
1.Restful。
2.WebService协议。
3.基于HTTP协议。
4.基于数据库做数据交换,例如Mysql。
5.基于MQ队列做数据交换,例如RabbitMq,Kafka,Redis。
6.RPC。
依赖中间件交互的⽅式需要⼀个中间层做数据的临时存储,交互间的两个系统是异步交换数据。
其他的是直接交换数据,没有中间存储层,交互间的两个系统是同步交换数据。
RPC相关概念
1.Server:服务端⼀般称作Provider,是服务提供者。
2.Client:客户端⼀般称作Consumer,是服务消费者。
3.Stub:存根,⽤于服务描述。
RPC框架
现在有很多开源的对RPC技术进⾏了封装的RPC框架。
1.Dubbo:国内最早开源的 RPC 框架,由阿⾥巴巴公司开发并于 2011 年末对外开源,仅⽀持 Java 语⾔。
2.Motan:微博内部使⽤的 RPC 框架,于 2016 年对外开源,仅⽀持 Java 语⾔。
3.Tars:腾讯内部使⽤的 RPC 框架,于 2017 年对外开源,仅⽀持 C++ 语⾔。
4.Spring Cloud:国外 Pivotal 公司 2014 年对外开源的 RPC 框架,仅⽀持 Java 语⾔⽽跨语⾔平台的开源 RPC 框架主要有以下⼏
种。
java做什么的 5.gRPC:Google 于 2015 年对外开源的跨语⾔ RPC 框架,⽀持多种语⾔。
6.Thrift:最初是由 Facebook 开发的内部系统跨语⾔的 RPC 框架,2007 年贡献给了 Apache 基⾦,成为 Apache 开源项⽬之⼀,⽀持多种语⾔。⼆进制通讯协议。
现有RPC框架对⽐
gRPC Thrift RMI Dubbo HadoopRpc
开发语⾔多语⾔多语⾔java java java
序列化protobuf thrift格式java序列化hesson2R/Writeable
注册中⼼否否JDK⾃带Zk等否
跨语⾔是是否否否
服务定义Protobuf⽂件Thrift⽂件java接⼝java接⼝java接⼝
服务治理否否否是否
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论