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

视频资源获取失败

开篇词 | 别老想着怎么用好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 怎么做到让调用方系统不出问题呢?

要想说明白这事,我们先要简述下上线的大概流程:当服务提供方要上线的时候,一般是通过部署系统完成实例重启。在这个过程中,服务提供方的团队并不会事先告诉调用方他们需要操作哪些机器,从而让调用方去事先切走流量。而对调用方来说,它也无法预测到服务提供方要对哪些机器重启上线,因此负载均衡就有可能把要正在重启的机器选出来,这样就会导致把请求发送到正在重启中的机器里面,从而导致调用方不能拿到正确的响应结果。

登录 后留言

全部留言(32)

  • 最新
  • 精选
小罗希冀
关闭由外到内;启动从内到外

作者回复: 总结的太准确了

2020-04-01
56
楼下小黑哥
优雅启动,必须保证内部服务启动正常之后,才能接受服务调用。由于现有 RPC 一般都与 Spring 深度结合,所以需要等待 Spring 容器启动完毕之后,开始暴露服务。当内存 RPC 服务创建完成之后,才能向注册中心注册,此时就可以接受服务。

作者回复: 👍

2020-03-19
3
18
Jackey
我们在启动服务时会由请求一个health check接口。这个接口会检查服务本身是否启动以及连接数据库等组件是否正常。只有检查通过才会注册到注册中心

作者回复: 这就更稳妥了

2020-03-18
2
15
高源
老师你讲的我倒是明白😊还是需要实操,或者看代码能够加深印象,知识点需要强化

作者回复: 加油

2020-03-18
11
🐾
理论是看懂了、但实现的话却无从下手

作者回复: 照着这个思路实现应该不难

2020-03-18
2
7
Darren
服务方万事具备后,上报信息到注册中心

作者回复: 理解的很到位

2020-03-18
6
忆水寒
这一节课让我想到了socket底层的如何优雅关闭socket连接。不错!

作者回复: 👍

2020-04-26
2
陈国林
1. 每个服务提供方方提供一个服务就绪探针 2. 服务调用方可以周期性调用服务提供方的就绪探针来确保服务提供方已经就绪 3. 服务端调用方通过负载均衡选出某服务节点的时候,只能从已经就绪的节点列表中选

作者回复: 从工程角度考虑可能不是很合适,资源有的浪费

2020-03-18
1
桂冠远航
标题起的特别好。

作者回复: 谢谢

2020-03-22
武装到牙齿
启动成功,告诉注册中心,陆续加流量

作者回复: 加流量的工作,一般都会内置在调用方逻辑里面

2020-03-20
收起评论