写点什么

说说 RPC 架构

用户头像
Kylin
关注
发布于: 2021 年 03 月 13 日

概述

Remote Procedure Call 远程过程调用,即 RPC,是建立在 Socket 通信上的设计。在一台机器上的主程序,去调用另一台机器上的子程序,就像 LPC(Local Procedure Call,本地过程调用)。简单来说,就是有两台服务器 A 和 B,一个应用部署在服务器 A 上,但是需要去调用服务器 B 上应用提供的函数或者方法。由于两台服务器不在同一个内存空间,不能直接像 LPC 那样直接调用,这时就需要通过网络技术来表达调用的语义和传达调用的数据。


编程模型

RPC 架构主要分为 3 个部分。

  1. 服务端:运行在服务端,提供服务接口定义与服务实现类。

  2. 注册中心:运行在服务端,负责将本地服务发布成远程服务,管理远程服务,提供给服务消费者使用。

  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 架构的框架调用成功率受限于网络

  • 调用远程方法对初学者难度大


用户头像

Kylin

关注

现实的理想主义者 2019.10.08 加入

【坐标】:魔都 【品种】:程序媛 【标签】:技术宅、大吃货 【追求】:改变世界、改变自己 【信条】:每次前进一小步

评论

发布
暂无评论
说说RPC架构