一、什么是RPC?
RPC 的概念与技术其实是比较早的,40 年前,也就是 1981 年由 Nelson 提出。1984年,Birrell 和把它用于分布式系统间的通讯。Java 在 1.1 版本提供了 Java 版本的 RPC框架(RMI)。
全称为 Remote Procedure Call,翻译过来就是远程过程调用,
它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议,凡是符合该协议的框架,我们都可以称它为 RPC 框架。
关于 RPC 协议,通俗来讲就是,A 计算机提供一个服务,B 计算机可以像调用本地服务那样调用 A 计算机的服务。要实现 RPC,需要通过网络传输数据,并对调用的过程进行封装。现在比较流行的 RPC 框架,都会采用 TCP 作为底层传输协议。RPC 强调的是过程调用,调用的过程对用户而言是是透明的,用户不需要关心调用的细节,可以像调用本地服务一样调用远程服务。
如图所示,一个完整的 RPC 架构里面包含了四个核心的组件,分别是Client ,Server,Client Stub 以及 Server Stub:
1)客户端(Client),服务的调用方。
2)服务端(Server),真正的服务提供者。
3)客户端存根(Client Stub),存放服务端的地址消息,再将客户端的请求参数打包成
网络消息,然后通过网络远程发送给服务方。
4)服务端存根(Server Stub),接收客户端发送过来的消息,将消息解包,并调用本
地的方法。
目前比较流行的开源 RPC 框架有 Google 的 gRPC,Facebook 的 Thrift,阿里巴巴的
Dubbo。
二、RPC 的运用场景和优势
? ? ? ?在开发电商系统时,随着业务越来越复杂,走分布式架构这个方向是绝大部分互联网企业必然的选择。分布式架构落地的里程碑,应该是阿里的去 IOE 运动的成功,它让互联网企业看到了,如何利用更少的软硬件成本来支撑海量的用户。分布式架构的核心,就是利用多个普通计算机节点,组成一个庞大而复杂的计算网络,提供高性能以及高并发的能力支撑。在分布式架构中,原本的单体应用被拆分成多个独立部署的服务分部在计算及网络上,这些服务必然需要通过网络进行数据交互。而 RPC 框架就是解决在分布式架构中的各个业务服务彼此的网络通信问题。
? ? ? ? 一般来说,RPC 服务主要是针对大型的企业,也就说当我们业务复杂度以及用户量都比较高时,需要解耦服务,扩展性强、部署灵活一般市面上开源的 PRC 框架,除了提供基础的远程通信功能以外,还会在性能消耗、传输效率、服务治理等方面做很多的设计,比如阿里开源的 RPC 框架 Dubbo。
三、粉丝福利
我是浮生,一个工作十四年经验的Java程序员!
最近很多同学问我有没有java学习资料,我根据我从小白到架构师多年的学习经验整理出来了一份50W字面试解析文档、简历模板、学习路线图、java必看学习书籍?、 需要的小伙伴 可以关注我
公众号:“?灰灰聊架构?”, 回复暗号:“?321?”即可获取
?