RPC 基本原理
RPC(Remote Procedure Call) 远程过程调用
什么是RPC?
rpc 是一种计算机协议,让我们就像调用本地方法那样调用远程机器上的程序方法,帮我们屏蔽调用过程中的一些网络细节,提高开发效率。
RPC的基础功能?
- 屏蔽网络的通讯细节,发包收包等等
- 屏蔽序列、反序列的细节
- 提高开发效率
RPC是的基础组件有哪些,如何解决这些问题?
- 远程代理:使本地方法可以直接调用,屏蔽底层
- 序列化组件: 对收发数据进行序列化与反序列化
- 网络io组件:实现网络通讯的细节
成熟的RPC产品又应该包含哪些功能?
客户端功能
- 连接池的管理:避免网络连接创建销毁造成的资源损耗,管理连接数,连接时机等
- 健康检查:提高程序健壮性,避免对无效节点进行访问,提供断开连接,重连等机制
- 超时机制:提高程序健壮性,避免无效的长时间等待
- 路由功能:提供远程服务的ip地址查找,路由策略等等
- 负载均衡:提高程序健壮性,使请求合理的分发到多个提供方
服务端功能
- 任务队列、工作线程:提高并发量,合理使用资源
- 超时丢弃:提高可用性,避免对已超时任务进行调用造成的资源浪费
- 过载保护:保护自身不因客户端的大流量请求造成服务端的宕机等
- 优雅关闭:对任务队列的任务进行调度或者放弃任务队列任务的调用;并通知客户端本服务即将下线,使客户端可以选择其他的提供者(需客户端支持)
RPC应提供的高级功能有哪些?
- 服务熔断:主动进行熔断,在业务高并发时期,可以对非主要功能熔断,更合理的提供业务支撑;被动熔断,当某功能不可用时触发熔断,避免无效的调用,待提供方正常后再进行调用
- 服务降级:需业务配合,当发生熔断时,可以对非主要业务进行降级补偿,以便有损的提供功能,而不是报错。
- 限流:提高可用性,避免因个别调用方的流量异常导致整体业务的不可用。
- 动态权重:使运行过程中可以更灵活的调整提供方的权重,避免增加节点或减少节点后造成的流量不均衡。
邮箱:quiet_learn@163.com
本文版权归作者和博客园共有,欢迎转载,转载请在文章明显位置注明作者及出处,谢谢!