RPC 实战与核心原理
何小锋
京东云混合云首席架构师
41883 人已学习
新⼈⾸单¥59
课程目录
已完结/共 29 讲
RPC 实战与核心原理
登录|注册
留言
13
收藏
沉浸
阅读
分享
手机端
回顶部
付费课程,可试看

视频资源获取失败

开篇词 | 别老想着怎么用好RPC框架,你得多花时间琢磨原理
01 | 核心原理:能否画张图解释下RPC的通信流程?
02 | 协议:怎么设计可扩展且向后兼容的协议?
03 | 序列化:对象怎么在网络中传输?
04 | 网络通信:RPC框架在网络通信上更倾向于哪种网络IO模型?
05 | 动态代理:面向接口编程,屏蔽RPC处理流程
06 | RPC实战:剖析gRPC源码,动手实现一个完整的RPC
07 | 架构设计:设计一个灵活的RPC框架
08 | 服务发现:到底是要CP还是AP?
09 | 健康检测:这个节点都挂了,为啥还要疯狂发请求?
10 | 路由策略:怎么让请求按照设定的规则发到不同的节点上?
11 | 负载均衡:节点负载差距这么大,为什么收到的流量还一样?
12 | 异常重试:在约定时间内安全可靠地重试
13 | 优雅关闭:如何避免服务停机带来的业务损失?
14 | 优雅启动:如何避免流量打到没有启动完成的节点?
15 | 熔断限流:业务如何实现自我保护?
16 | 业务分组:如何隔离流量?
答疑课堂 | 基础篇与进阶篇思考题答案合集
17 | 异步RPC:压榨单机吞吐量
18 | 安全体系:如何建立可靠的安全体系?
19 | 分布式环境下如何快速定位问题?
20 | 详解时钟轮在RPC中的应用
21 | 流量回放:保障业务技术升级的神器
22 | 动态分组:超高效实现秒级扩缩容
23 | 如何在没有接口的情况下进行RPC调用?
24 | 如何在线上环境里兼容多种RPC协议?
结束语 | 学会从优秀项目的源代码中挖掘知识
加餐 | 谈谈我所经历过的RPC
加餐 | RPC框架代码实例详解
本节摘要

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

为什么需要自我保护?

我在开篇词中说过,RPC 是解决分布式系统通信问题的一大利器,而分布式系统的一大特点就是高并发,所以说 RPC 也会面临高并发的场景。在这样的情况下,我们提供服务的每个服务节点就都可能由于访问量过大而引起一系列的问题,比如业务处理耗时过长、CPU 飘高、频繁 Full GC 以及服务进程直接宕机等等。但是在生产环境中,我们要保证服务的稳定性和高可用性,这时我们就需要业务进行自我保护,从而保证在高访问量、高并发的场景下,应用系统依然稳定,服务依然高可用。

那么在使用 RPC 时,业务又如何实现自我保护呢?

最常见的方式就是限流了,简单有效,但 RPC 框架的自我保护方式可不只有限流,并且 RPC 框架的限流方式可以是多种多样的。

我们可以将 RPC 框架拆开来分析,RPC 调用包括服务端和调用端,调用端向服务端发起调用。下面我就分享一下服务端与调用端分别是如何进行自我保护的。

服务端的自我保护

我们先看服务端,举个例子,假如我们要发布一个 RPC 服务,作为服务端接收调用端发送过来的请求,这时服务端的某个节点负载压力过高了,我们该如何保护这个节点?

登录 后留言

全部留言(13)

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

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

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

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

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

作者回复: 是的。

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

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

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

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

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

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

2020-04-15
3
服务的自我保护: 1:压测——进行性能优化及容量规划 2:限流——防止服务端被流量高峰压垮 3:降级——优先保证核心服务高可用 4:熔断——防止当前服务被下游慢服务拖垮 5:自动扩缩容——可以扛住流量洪峰,需要资源冗余 原理OK,具体咋弄呢?哈哈😄,解刨一下某个知名RPC
2020-05-16
28
Laputa
老师你好,请问“专门的限流服务”老师有没有比较好的实践,比如在灵敏度和性能方面都比较好的方案,谢谢
2020-06-07
1
亚林
设置超时时间。不无道理
2026-01-08
时隐时现
限流有多个层级,接入层、web层、应用层,每个都可以进行流量限定
2022-08-02
收起评论