RPC 基本原理

RPC(Remote Procedure Call) 远程过程调用

什么是RPC?

rpc 是一种计算机协议,让我们就像调用本地方法那样调用远程机器上的程序方法,帮我们屏蔽调用过程中的一些网络细节,提高开发效率。

RPC的基础功能?

  1. 屏蔽网络的通讯细节,发包收包等等
  2. 屏蔽序列、反序列的细节
  3. 提高开发效率

RPC是的基础组件有哪些,如何解决这些问题?

  1. 远程代理:使本地方法可以直接调用,屏蔽底层
  2. 序列化组件: 对收发数据进行序列化与反序列化
  3. 网络io组件:实现网络通讯的细节

成熟的RPC产品又应该包含哪些功能?

客户端功能

  1. 连接池的管理:避免网络连接创建销毁造成的资源损耗,管理连接数,连接时机等
  2. 健康检查:提高程序健壮性,避免对无效节点进行访问,提供断开连接,重连等机制
  3. 超时机制:提高程序健壮性,避免无效的长时间等待
  4. 路由功能:提供远程服务的ip地址查找,路由策略等等
  5. 负载均衡:提高程序健壮性,使请求合理的分发到多个提供方

服务端功能

  1. 任务队列、工作线程:提高并发量,合理使用资源
  2. 超时丢弃:提高可用性,避免对已超时任务进行调用造成的资源浪费
  3. 过载保护:保护自身不因客户端的大流量请求造成服务端的宕机等
  4. 优雅关闭:对任务队列的任务进行调度或者放弃任务队列任务的调用;并通知客户端本服务即将下线,使客户端可以选择其他的提供者(需客户端支持)

RPC应提供的高级功能有哪些?

  1. 服务熔断:主动进行熔断,在业务高并发时期,可以对非主要功能熔断,更合理的提供业务支撑;被动熔断,当某功能不可用时触发熔断,避免无效的调用,待提供方正常后再进行调用
  2. 服务降级:需业务配合,当发生熔断时,可以对非主要业务进行降级补偿,以便有损的提供功能,而不是报错。
  3. 限流:提高可用性,避免因个别调用方的流量异常导致整体业务的不可用。
  4. 动态权重:使运行过程中可以更灵活的调整提供方的权重,避免增加节点或减少节点后造成的流量不均衡。
posted @ 2021-03-28 13:07  铵铵静静  阅读(176)  评论(0编辑  收藏  举报