zoukankan      html  css  js  c++  java
  • 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. 动态权重:使运行过程中可以更灵活的调整提供方的权重,避免增加节点或减少节点后造成的流量不均衡。
    邮箱:quiet_learn@163.com
    本文版权归作者和博客园共有,欢迎转载,转载请在文章明显位置注明作者及出处,谢谢!
  • 相关阅读:
    解决流氓软件的工具,做个记录
    目前使用较好的网盘搜索引擎
    网页截图分段保存
    国外统计学课程主页Statistical Books, Manuals and Journals
    notepad++ TextFX替代
    只用 4 个月打造机器学习必备技能,这位工程师成功翻转职涯人生
    时序差分学习
    来自NVIDIA开源的pix2pixHD,将Image-to-Image Translation带到了另一个境界
    关于HTML5,最牛逼的10本书!
    IDEA配置和插件
  • 原文地址:https://www.cnblogs.com/LonelyTraveler/p/14588350.html
Copyright © 2011-2022 走看看