深入理解 RPC : 基于 Python 自建分布式高并发 RPC 服务(RPC 服务是怎样使用的?)

书籍介绍

RPC(Remote Procedure Call)服务,也即远程过程调用,在互联网企业技术架构中占据了举足轻重的地位,尤其在当下微服务化逐步成为大中型分布式系统架构的主流背景下,RPC 更扮演了重要角色。Google 开源了 gRPC,Facebook 开源了 Thrift,Twitter 开源了 Finagle,百度开源了 bRPC,腾讯开源了 Tars,阿里开源了 Dubbo 和 SOFA,新浪开源了 Motan 等,一线互联网大厂们纷纷亮出自己研制的 RPC 框架武器,在解决分布式高并发业务问题的同时,也向外界展示自己的技术实力。

互联网公司百花齐放,貌似高深复杂的 RPC 框架解决了哪些业务难题?其技术含量究竟高在哪里?后端开发者该如何深入掌握 RPC 开发?这些都是本小册想要解读的问题。

分布式高并发服务是只有高手才能涉足的领域

虽然大部分后端开发者在日常开发中都会隐式或显式的使用 RPC,但对初级开发者来说 RPC 总是略显神秘而有距离,而即便有多年 RPC 使用经验的程序员,也可能依然对 RPC 背后的原理不甚了解,难以精通,遇到复杂问题时难免误用。

由于 RPC 本身理论繁杂,涉及的技术栈和工具也比较多,能将理论落实到代码层面,并结合业务实际情况,避开各种坑,最终实现性能和工程上的极致优化,这对后端开发者来说是一个极大的挑战。而对 RPC 服务开发原理的认知水平,也正是区分后端高级开发者和普通开发者的重要参考标准之一。在分布式高并发服务领域,只有高手才能担当重任,在业务工程领域有创新建树。

深入理解 RPC : 基于 Python 自建分布式高并发 RPC 服务(RPC 服务是怎样使用的?)

程序员的成长层级

作为一名资深面试官,身边不少工程师会经常问我如何判断一个程序员的技术水平,如何区分他是高级的资深的,还是普通的一般的。我相信每个面试官都有自己的一套判断标准和参考答案,但通常最重要的一个评判依据是:

  • 高级程序员在技术选择的自由度上往往更大,他们不只会用,而且还知道为什么要这么用,能不能不这么用,有没有更好的办法。
  • 初级程序员只会搬砖,看到别人怎么写我就怎么写,缺乏自主思考的能力。

初级程序员之所以创新能力不足,根本原因在于没有系统深入的掌握技术背后的基础原理,无法进行有效思考,所谓“浮沙之上,难筑高台”。只有在深入理解技术原理之后,工程能力才可能突飞猛进提升。

不想造轮子的程序员成为不了技术专家

软件工程领域有一句很经典的名言「不要重复造轮子」,这句话旨在指导软件工程以低成本高效开发。不过它也有适用范围,因为程序员平时学习使用的所有开源框架和编程语言,本质上都是「新轮子」。从这个角度看,不断造「新轮子、好轮子」才是计算机科学的演进历史,也构建了现代软件工程的基石。

虽然大多数新轮子最终不会被很多人使用,但是 「造轮子」无疑是深入理解技术原理的最佳方法。不会造轮子的同学永远只能停在技术表层,难以进行有创造性的工作。尤其是在高级阶段,造轮子的能力就是开发者的核心竞争力,而轮子也将成为公司之间差异化竞争的重要资本。可以说,要想成为中大型互联网公司的高级工程师或技术专家,必须具备通过造轮子开发出更好工具的实战能力。

本小册的一个核心目的,就是通过实战模块教大家打造一个属于自己的小轮子 —— RPC 服务小框架,带领大家体验这种深度学习方法的价值。这里也引用理论物理大师费曼先生的名言与诸位同学共勉。

注:理查德·费曼——美国理论物理学家,量子电动力学创始人之一,纳米技术之父。

本书目录

  1. 开篇:RPC 要解决的核心问题和在企业服务中的地位
  2. 基础:深入 RPC 交互流程
  3. 协议 1:深入 RPC 消息协议
  4. 协议 2:Redis 文本协议结构
  5. 协议 3:Protobuf 二进制协议结构
  6. 协议 4:Redis 协议的缺陷
  7. 客户端:深入 RPC 客户端设计
  8. 服务器 1:【单线程同步】模型
  9. 服务器 2:【多线程同步】模型
  10. 服务器 3:【多进程同步】模型
  11. 服务器 4:【PreForking同步】模型
  12. 服务器 5:【单进程异步】模型
  13. 服务器 6:【PreForking异步】模型
  14. 服务器 7:【多进程描述符传递】模型
  15. 分布式 1:深入 RPC 分布式原理
  16. 分布式 2:分布式 RPC 知识基础
  17. 分布式 3:分布式 RPC 实战
  18. 拓展 1:gRPC 原理与实践
  19. 拓展 2:Thrift 原理与实践
  20. 尾声:推荐学习资源

适宜人群

  1. 掌握 Python 语法基础,有至少1-2年后端开发经验,想系统深入的掌握 RPC 服务开发;
  2. 不满足于只埋头搞业务的普通开发者和 CRUD 熟手;
  3. 期待持续进阶的 Python、Java、Golang 中高级程序员;
  4. 有志于向架构师方向迈进的 Geek 们;
  5. 渴望逃离技术舒适区的造轮子爱好者们;

作者介绍

钱文品(老钱),互联网分布式高并发技术十年老兵,目前任掌阅科技资深后端工程师。熟练使用 Java、Python、Golang 等多种计算机语言,开发过游戏,制作过网站,写过消息推送系统和MySQL 中间件,实现过开源的 ORM 框架、Web 框架、RPC 框架等。有以下分享经历:

  • 掘金专栏「老錢」原创作者
  • 知乎专栏「码洞」资深洞主
  • 微信公众号「码洞」原创作者
  • Github 地址: github.com/pyloque
深入理解 RPC : 基于 Python 自建分布式高并发 RPC 服务(RPC 服务是怎样使用的?)

这本小册在内容结构上主要划分为 6 大块:

  1. 基础篇:RPC 在企业技术中的地位、应用场景、基础原理和交互流程
  2. 进阶篇:RPC 通讯协议原理、流行协议解构和实例代码分析
  3. 高级篇:RPC 客户端的实现要点
  4. 实战基础篇:RPC 服务器多种并发模型实例讲解
  5. 实战高级篇:分布式 RPC 服务实战(代码实例)
  6. 拓展学习篇:开源框架 gPRC/Thrift 原理入门与实践

为什么选择 Python 语言实现?

虽然在超大型企业内部很少使用 Python 来打造 RPC 服务,他们多半会使用 Java 或者 Golang 开发,因为 RPC 服务对性能有非常极致的要求。但是考虑到本小册的核心目标是让大家深入理解 RPC 背后的原理,而 Python 语言更加适合入门,实现代码比较简短,更利于阅读学习,尤其是对初、中级开发者更为友好。另外,还有些服务器并发模型是 Java 和 Golang 都不具备而 Python 独有的,选择 Python 语言 可以使得内容更加丰富多彩。所以,基于教学目的,本小册最终选择了 Python 作为 RPC 框架实现语言。相信这并不会妨碍真正有志于分布式高并发领域的后端开发者从中获取对 RPC 的理解和实战开发经验。

P.S. Python 作为人工智能/大数据时代的首选“全栈”语言,也值得每一位程序员去学习掌握。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

联系我们

侵权投诉:nerds@nigaea.com

工作时间:周一至周五,9:30-18:00,节假日休息

QR code