你将获得
- 熟练掌握 RPC 核心原理及架构设计要点;
- 解决 20+ 基于真实场景的高频问题;
- 深入剖析 RPC 框架的系统应用;
- 手把手设计一个灵活的 RPC 框架。
课程介绍
在应用架构“微服务化”大行其道的今天,RPC 早已经成为了工程师们的家常便饭。可以说,只要涉及到网络通信,我们就可能使用到 RPC,它已然成为解决分布式系统通信问题的一大利器。
虽然社区里已经有很多开源的 RPC 项目,它们简单易用,但如果揉碎了进去看框架的源代码,你会发现这其中涉及序列化、压缩算法、协议、动态代理、服务注册、加密、网络编程等等方面的知识。这不由得让人想起麦克利兰提出的冰山模型,那些复杂、核心的技术都在水面之下。
这还只是框架本身,如果再进一步说 RPC 集群,这里面又需要你懂监控、熔断限流、优雅启停、多协议、分布式链路跟踪等等知识。所以有人就说,你要是能研究透 RPC,那基本就是一个资深的架构师了。
本专栏结合何小锋过去 20 多年累积的工作经验,精挑细选了 20 多个 RPC 相关的高频场景化问题,帮你搞懂 RPC 核心原理。专栏的教学目标是帮你透彻理解 RPC,并能自行动手实现一个灵活的 RPC 框架;另外,专栏中覆盖的诸多线上案例及解决方案,相信也能为你所用。
具体内容上,专栏共分为三大部分,基础篇、进阶篇和高级篇。前两部分可以解决大部分场景问题,最后一部分则是解决一些更为复杂的场景问题。
基础篇:重点讲解 RPC 的基础知识,包括 RPC 的基本原理以及它的功能模块,夯实基础之后,老师会通过剖析一款 RPC 框架的授课方式来将知识点串联起来。
进阶篇:重点讲解 RPC 框架的架构设计,以及 RPC 框架集群、治理相关的知识。这部分老师会把自己曾经遇到过的线上问题包装加工后,娓娓道来地讲给你听。
高级篇:通过对上述两部分的学习,你已经对 RPC 有了较高层次的理解。这部分老师主要会从性能优化、线上问题排查以及一些比较有特色的功能设计上为你讲解 RPC 集群等高阶知识。
课程目录
适合人群
有编程经验的后端工程师或者全栈工程师,尤其是致力于中小型微服务系统以及大型分布式应用系统的开发人员。
![](https://static001.geekbang.org/resource/image/72/de/72b6ffabee34afef6c9303ca98d846de.jpg)
![](https://static001.geekbang.org/resource/image/86/73/866ef165163dbceb12903b2596741273.jpg)
![](https://static001.geekbang.org/resource/image/ee/9d/ee4e027522f8f7144b12bcd3d8f6b29d.jpg?x-oss-process=image/resize,m_fill,h_74,w_74)
Java工程师
![](https://static001.geekbang.org/resource/image/30/36/304bfd86dea2698cd6c8147ee8f63c36.jpg?x-oss-process=image/resize,m_fill,h_74,w_74)
架构师
![](https://static001.geekbang.org/resource/image/8c/c5/8c01e6fea05ef735b122fa6ce9aaa5c5.jpg?x-oss-process=image/resize,m_fill,h_74,w_74)
Go工程师
![](https://static001.geekbang.org/resource/image/1c/17/1c83100965449ef7e1a5144d94744317.jpg?x-oss-process=image/resize,m_fill,h_74,w_74)
后端工程师
![](https://static001.geekbang.org/resource/image/d4/74/d46d28c922505c8070eff6daa3192d74.jpg)
![](https://static001.geekbang.org/resource/image/65/c0/65dc525140a25af39b780aaae65821c0.jpg)
![](https://static001.geekbang.org/resource/image/aa/4e/aa1005366bab254e69de8391e172394e.jpg)
![](https://static001.geekbang.org/resource/image/e2/be/e2ca3fac4ce89053602b9e7a6d9c02be.jpg)
![](https://static001.geekbang.org/resource/image/c6/63/c68f8834b42308fd22aa41c1ce249363.png)
![](https://static001.geekbang.org/resource/image/1b/ba/1b55645096bc6d40623601e33f87bcba.jpg)