RPC 实战与核心原理
何小锋
京东云混合云首席架构师
40244 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 29 讲
RPC 实战与核心原理
15
15
1.0x
00:00/00:00
登录|注册

15 | 熔断限流:业务如何实现自我保护?

精确限流方式
服务节点自行计算
动态配置
配置方式
令牌桶算法
漏斗算法
滑动窗口
计数器
动态代理
半打开
打开
关闭
限流阈值的计算
应用级别和IP级别的限流
限流逻辑实现方式
RPC框架集成限流功能
服务端业务逻辑中实现
整合熔断器的方式
工作机制
实现方式
其他解决方案
调用端通过熔断机制实现自我保护
服务端通过限流实现自我保护
熔断机制
保护依赖的数据库
限流
保证服务稳定性和高可用性
面临高并发场景
课后思考
总结
调用端的自我保护
服务端的自我保护
为什么需要自我保护?
RPC框架的自我保护

该思维导图由 AI 生成,仅供参考

你好,我是何小锋。上一讲我讲解了 RPC 框架中的优雅启动,这块的重点就是启动预热与延迟暴露。今天,我们换一个新的话题,看看在使用 RPC 时,业务是如何实现自我保护的。

为什么需要自我保护?

我在开篇词中说过,RPC 是解决分布式系统通信问题的一大利器,而分布式系统的一大特点就是高并发,所以说 RPC 也会面临高并发的场景。在这样的情况下,我们提供服务的每个服务节点就都可能由于访问量过大而引起一系列的问题,比如业务处理耗时过长、CPU 飘高、频繁 Full GC 以及服务进程直接宕机等等。但是在生产环境中,我们要保证服务的稳定性和高可用性,这时我们就需要业务进行自我保护,从而保证在高访问量、高并发的场景下,应用系统依然稳定,服务依然高可用。
那么在使用 RPC 时,业务又如何实现自我保护呢?
最常见的方式就是限流了,简单有效,但 RPC 框架的自我保护方式可不只有限流,并且 RPC 框架的限流方式可以是多种多样的。
我们可以将 RPC 框架拆开来分析,RPC 调用包括服务端和调用端,调用端向服务端发起调用。下面我就分享一下服务端与调用端分别是如何进行自我保护的。

服务端的自我保护

我们先看服务端,举个例子,假如我们要发布一个 RPC 服务,作为服务端接收调用端发送过来的请求,这时服务端的某个节点负载压力过高了,我们该如何保护这个节点?
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了RPC框架中的自我保护机制,从服务端和调用端两个角度进行了详细阐述。在服务端,通过限流来保护节点免受过载压力,RPC框架提供了多种限流方式,并强调了应用级别和IP级别的限流以及通过RPC治理的管理端进行动态配置的方法。此外,为了解决限流精确性问题,提出了依赖限流服务的方式。调用端则通过熔断机制进行自我保护,防止调用下游服务出现异常或耗时过长影响业务逻辑。文章还探讨了如何在RPC框架中整合熔断器,以实现熔断功能。总的来说,本文全面介绍了RPC框架中的自我保护机制,为读者提供了深入了解和应用的指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《RPC 实战与核心原理》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(12)

  • 最新
  • 精选
  • Darren
    服务保护一般就是限流、熔断、降级。 限流的落地方式有:Guava RateLimiter、lua+Redis、Sentinel等; 熔断:Hystrix、Resilience4j; 降级:服务降级,就是对不怎么重要的服务进行低优先级的处理。说白了,就是尽可能的把系统资源让给优先级高的服务。资源有限,而请求是无限的。

    作者回复: 对,取舍很重要

    2020-03-23
    2
    53
  • 雨霖铃声声慢
    除了文中提到的服务熔断、降级、限流保护手段,还可以使用异步RPC 提升性能吧

    作者回复: 异步RPC可以提升吞吐量。

    2020-03-24
    8
  • 问心
    调用方限流的时候,应该是发起调用时请求限流器去判断阈值,调用完成后,还需要通知一下限流器吧。这样是不是才能达到接近饱和的性能吧。

    作者回复: 是的。

    2020-03-28
    5
  • 旭东(Frank)
    熔断策略如何能避免频繁重复在三个状态切换呢?除了增加机器扩容,以及业务和性能优化,熔断策略还能做些什么吗?

    作者回复: 熔断可以避免进一步恶化,比如某个节点性能不行,可以通过熔断的手段,避免调用发整体TP性能下降

    2020-03-23
    5
  • Tesla
    老师好,请问这几节的解决方案都有通过注册中心下发,注册中心比如consul怎么下发数据给各个节点啊 没有找到相关的api,是要自己做二次开发吗

    作者回复: 利用consul推送能力

    2020-05-13
    3
  • Desmond
    如果设置一个专门的限流服务,那么压力都会集中到这个服务,对这个服务的性能要求会提高,当业务再变大的时候,这限流服务会成为一个瓶颈,要换解决方案了

    作者回复: 不一定要采用集中式限流

    2020-04-15
    2
  • 服务的自我保护: 1:压测——进行性能优化及容量规划 2:限流——防止服务端被流量高峰压垮 3:降级——优先保证核心服务高可用 4:熔断——防止当前服务被下游慢服务拖垮 5:自动扩缩容——可以扛住流量洪峰,需要资源冗余 原理OK,具体咋弄呢?哈哈😄,解刨一下某个知名RPC
    2020-05-16
    26
  • Laputa
    老师你好,请问“专门的限流服务”老师有没有比较好的实践,比如在灵敏度和性能方面都比较好的方案,谢谢
    2020-06-07
    1
  • 时隐时现
    限流有多个层级,接入层、web层、应用层,每个都可以进行流量限定
    2022-08-02归属地:广东
  • ryanxw
    client侧节流,svr侧过载保护
    2022-04-10
收起评论
显示
设置
留言
12
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部