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

加餐 | RPC框架代码实例详解

何小锋 2020-05-04
你好,我是何小锋,好久不见!咱们专栏结课有段时间了,这期间我和编辑冬青一起对整个课程做了复盘,也认真挨个逐字看了结课问卷中的反馈,其中呼声最高的是“想看 RPC 代码实例”,今天我就带着你的期待来了。
还记得我在[结束语]提到过,我在写这个专栏之前,把公司内部我负责的 RPC 框架重新写了一遍。口说无凭,现在这个 RPC 框架已经开源,接受你的检阅。
下面我就针对这套代码做一个详细的解析,希望能帮你串联已学的知识点,实战演练,有所收获。

RPC 框架整体结构

首先说我们 RPC 框架的整体架构,这里请你回想下[第 07 讲],在这一讲中我讲解了如何设计一个灵活的 RPC 框架,其关键点就是插件化,我们可以利用插件体系来提高 RPC 的扩展性,使其成为一个微内核架构,如下图所示:
插件化RPC
这里我们可以看到,我们将 RPC 框架大体分为了四层,分别是入口层、集群层、协议层和传输层,而这四层中分别包含了一系列的插件,而在实际的 RPC 框架中插件会更多。在我所开源的 RPC 框架中就超过了 50 个插件,其中涉及到的代码量也是相当大的,下面我就通过服务端启动流程、调用端启动流程、RPC 调用流程这三大流程来将 RPC 框架的核心模块以及核心类串联起来,理解了这三大流程会对你阅读代码有非常大的帮助。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《RPC实战与核心原理》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(6)

  • 有米
    好早以前就购买课程了,但当时没有更完。所以就没追,其实我的学习方式跟追剧是一样的。更完后在一段时间内看完,思路会比较完整。利用五一假期把整个课程看完了,重新理解了rpc框架各个组件的设计原理,收获很大。后续根据这些原理再去看一遍dubbo的源码,会有更深的认识。感谢老师👨‍🏫
    2020-05-05
    5
  • 每天晒白牙
    感谢老师的加餐,把专栏的内容根据项目结合起来,一起看,收获肯定会更大
    2020-05-04
    4
  • 山顶的洞
    假期也出货,赞
    2020-05-04
    1
  • 憨才好运
    太干货了,准备以项目为中心,重新过一遍前面的文章。

    作者回复: 👍

    2020-05-04
    1
  • 喜欢这个加餐,JSF也终于开源了,不知道是不是还是熟悉了味道😄
    2020-05-17
    1
  • HIYO
    赞,期待结合JoyRPC讲解对之前技术点技术选型的思考,比如说咱们的流量隔离实现方式是什么,分组与统一入口是如何平衡的?我了解到netty有过回退版本的过程,是因为AIO在性能上并没有比NIO有明显的提高,还导致代码过于复杂。那咱们选择纯异步和纯插件化又是基于什么样的考虑呢?

    作者回复: 扩张性和吞吐量

    2020-05-06
收起评论
6
返回
顶部