说说 RPC 架构
概述
Remote Procedure Call 远程过程调用,即 RPC,是建立在 Socket 通信上的设计。在一台机器上的主程序,去调用另一台机器上的子程序,就像 LPC(Local Procedure Call,本地过程调用)。简单来说,就是有两台服务器 A 和 B,一个应用部署在服务器 A 上,但是需要去调用服务器 B 上应用提供的函数或者方法。由于两台服务器不在同一个内存空间,不能直接像 LPC 那样直接调用,这时就需要通过网络技术来表达调用的语义和传达调用的数据。
编程模型
RPC 架构主要分为 3 个部分。
服务端:运行在服务端,提供服务接口定义与服务实现类。
注册中心:运行在服务端,负责将本地服务发布成远程服务,管理远程服务,提供给服务消费者使用。
消费端:运行在客户端,通过远程代理对象调用远程服务。
服务端启动后主动向注册中心注册机器 IP、端口及提供的服务列表;消费端启动时由注册中心获取服务端提供方的地址列表。
目前使用 RPC 架构的框架有这些:
应用级相关的服务框架:阿里的 Dubbo/Dubbox、Google GRPC、Spring Boot/Spring Cloud
远程通信相关的协议:RMI、Socket、SOAP(HTTP XML)、REST(HTTP JSON)
通信相关的框架:Mina、Netty
优缺点
1. 优点
提升系统的可扩展性
提升系统的可维护性和持续交付能力
实现系统高可用
2. 缺点
一个完善的 RPC 架构的框架开发难度大
RPC 架构的框架调用成功率受限于网络
调用远程方法对初学者难度大
评论