目 录CONTENT

文章目录

RPC学习笔记

在水一方
2022-05-08 / 0 评论 / 0 点赞 / 311 阅读 / 857 字 / 正在检测是否收录...

RPC(远程过程调用)在实际项目中应用非常广泛,如WebService 就是一种基于 Http 协议的 RPC框架,目前也有许多的远程调用框架如dubbo,Zookeeper,gateway网关等,对于这部分涉及到一些服务提供者和消费者的一些概念,需要去梳理一下

RPC架构

一个完整的RPC架构里面包含了四个核心的组件,分别是 Client,Client Stub,Server以及Server Stub,这个Stub可以理解为存根
客户端(Client)👉:服务的调用方。
客户端存根(Client Stub)👉:存放服务端的地址消息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方
服务端(Server)👉:真正的服务提供者。
服务端存根(Server Stub)👉:接收客户端发送过来的消息,将消息解包,并调用本地的方法

核心流程

1 服务消费方(client)在本地发起服务调用;
2 client stub 接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体
3 client stub找到服务地址,并将消息发送到服务端
4 server stub收到消息后进行解码
5 server stub根据解码结果调用本地的服务
6 本地服务执行并将结果返回给server stub
7 server stub将返回结果打包成消息并发送至消费方
8 client stub接收到消息,并进行解码
9 服务消费方得到最终结果

image.png

🔥 RPC的目标就是要 2~8 这些步骤都封装起来,让用户对这些细节透明JAVA一般使用动态代理方式实现远程调用

RMI

Java远程方法调用,即Java RMI(Java Remote Method Invocation)是 Java 编程语言里,一种用于实现远程过程调用的应用程序编程接口,是
分布式通信框架,是Java在JDK1.2中实现的,它大大增强了Java开发分布式应用的能力

拓展:

序列化
目前互联网公司广泛使用 Protobuf、Thrift、Avro 等成熟的序列化解决方案来搭建 RPC 框架,这些都是久经考验的解决方案

Netty

待续........

0

评论区