RPC 调用

Posted Paxos

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RPC 调用相关的知识,希望对你有一定的参考价值。

RPC要解决三类问题:

1. 协议约定问题

2. 传输问题

3. 服务发现问题

目录

  • 1. 协议约定问题

  • 2. 传输问题

  • 3. 服务发现问题

  • 4. 示例



1. 协议约定问题


通信协议:Thrift、HTTP、Dubbo、HTTP/2 等


序列化格式:JSON、XML、ProtoBuf 等


解决:


(1)如何规定远程调用的语法

(2)如何传递参数

(3)如何表示数据


2. 传输问题


通信框架:Netty、Socket 等


解决网络传输过程中的错误、重传、丢包、性能问题


3. 服务发现问题


RPC 客户端组件


(1)序列化组件

(2)连接池组件


以下是异步 RPC 必须:


(3)收发队列

(4)收发线程

(5)上下文管理器,存储<请求-响应-回调>等映射信息

(6)超时管理器,超时后直接回调,进入失败处理


4. 示例


Dubbo 通过注册中心 Zookeeper 解决服务发现问题,通过 Hessian2 序列化解决协议约定的问题,通过 Netty 解决网络传输的问题。


Spring Cloud 通过注册中心 Eureka 解决服务发现问题,通过 JSON 解决协议约定的问题,通过 HTTP 解决网络传输的问题。


资料来源

1. 第 32 讲 | RPC 协议综述:远在天边,近在眼前

https://time.geekbang.org/column/article/12230


2. 离不开的微服务架构,脱不开的 RPC 细节(值得收藏)!!!

https://mp.weixin.qq.com/s/CepNdL2A_QMcESgQVZBn2g




以上是关于RPC 调用的主要内容,如果未能解决你的问题,请参考以下文章

RPC原理详解

详解RPC的一次调用过程

什么是RPC服务

UE4网络之(二) 远程调用函数(RPC)

RPC理念,高性能RPC框架gRpc核心概念及示例

RPC接口测试什么是 RPC 框架