RPC
- 1. 基础
- 1.1 定义&特点
- 1.2 具体实现框架
- 1.3 应用场景
- 2. RPC的关键技术点&一次调用rpc流程
- 2.1 RPC流程
- 流程
- 两个网络模块如何连接的呢?
- 其它特性
- RPC优势
- 2.2 序列化技术
- 序列化方式
- PRC如何选择序列化框架
- 考虑因素
- 2.3 应用层的通信协议-http
- 什么是IO
- 操作系统的IO模型有哪些
- 2.4 动态代理
- 其它动态代理方案
- 2.5 基于ZK注册的原理
- 基于zk注册数据的存储结构-以dubbo为例
- 2.6 容错策略之超时重试
- 什么是超时重试?
- 如何检测请求是否超时?
- 时间轮算法
- 2.7 熔断限流
- 熔断降级的概念
- 如何判断熔断
- 熔断工作合适开始?又合适结束
- 有了熔断降级为何还要限流?
- 常见的限流算法
- 3. 实现一个自己定义的RPC框架-mini版
- PRC框架
- 网络模块
1. 基础
1.1 定义&特点
RPC,remote procedure call,远程过程调用,它定义了一台机器上的程序去调用另一台机器上子程序的这一行为
特点:
- 把远程实现搬到了本地,效果上远程调用和本地调用没有差别
- 使用cs模式,客户端发起请求,服务端接收请求参数后执行
- 屏蔽跨进程跨网络调用底层复杂性让我们更专注于业务逻辑
1.2 具体实现框架
- dubbo(apache alibaba java)
- motan(微博)
- tars(腾讯内部)
- grpc
- thrift
- spring cloud openfeign
1.3 应用场景
跨网络通信都可以用
2. RPC的关键技术点&一次调用rpc流程
2.1 RPC流程
流程
- 客户端调接口走到代理类,组装请求并序列化,然后协议编码并发送
- 服务端收到请求,进行协议解析以及反序列化拿到请求参数
- 服务端根据请求参数调用接口实现,然后组装响应
- 响应按同样的方式返回
两个网络模块如何连接的呢?
注册中心就是一个存数据的地方,最好可以提供监听功能。注册中心与rpc框架是分开的
常见的注册中心:zookeeper、nacos、etcd
其它特性
- 路由筛选可用的提供者
- 负载均衡:从可用的提供者种,选择具体用哪个
- 熔断限流:流量控制
- 网络处理
- 协议处理
RPC优势
- 让构建分布式应用更容易,解耦服务,容易扩展
- RPC一般使用长连接,不必每次通信都要建立连接,减少网络开销