RPC(Remote Procedure Call)效劳,也即远程过程调用,在互联网企业技术架构中占领了无足轻重的位置,特别在当下微效劳化逐步成为大中型散布式系统架构的主流背景下,RPC 更表演了重要角色。 Google 开源了 gRPC,Facebook 开源了 Thrift,Twitter 开源了 Finagle,百度开源了 bRPC,腾讯开源了 Tars,阿里开源了 Dubbo 和 HSF,新浪开源了 Motan 等,一线互联网大厂们纷繁亮出自己研制的 RPC 框架武器,在处置散布式高并发业务问题的同时,也向外界展示自己的技术实力。 互联网公司百花齐放,貌似深邃复杂的 RPC 框架处置了哪些业务难题?其技术含量究竟高在哪里?后端开发者该如何深化控制 RPC 开发?这些都是本小册想要解读的问题。 散布式高并发效劳是只需高手才干涉足的范畴 固然大部分后端开发者在日常开发中都会隐式或显式的运用 RPC,但对初级开发者来说 RPC 总是略显神秘而有距离,而即便有多年 RPC 运用阅历的程序员,也可能依然对 RPC 背地的原理不甚了解,难以知晓,遇到复杂问题时难免误用。 RPC 自身理论繁杂,触及的技术栈和工具也比较多,能将理论落实到代码层面,并分离业务实践状况,避开各种坑,最终完成性能和工程上的极致优化,这对后端开发者来说是一个极大的应战。 而对 RPC 效劳开发原理的认知水平,也正是分辨后端高级开发者和普通开发者的重要参考规范之一。在散布式高并发效劳范畴,只需高手才干担当重担,在业务工程范畴有创新建树。 程序员的长大层级
作为一名资深面试官,身边不少工程师会经常问我如何判别一个程序员的技术水平,如何分辨他是高级的资深的,还是普通的普通的。 我置信每个面试官都有自己的一套判别规范和参考答案,但通常最重要的一个评判依据是:
初级程序员之所以创新才干缺乏,基本缘由在于没有系统深化的控制技术背地的基础原理,无法中止有效思索,所谓“浮沙之上,难筑高台”。只需在深化了解技术原理之后,工程才干才可能突飞猛进提升。 不想造轮子的程序员成为不了技术专家 软件工程范畴有一句很经典的名言「不要重复造轮子」,这句话旨在指导软件工程以低成本高效开发。不外它也有适用范围,由于程序员平常学习运用的一切开源框架和编程言语,实质上都是「新轮子」。 假如全世界的程序员都完整信奉这句名言,那今天就只需一种编程言语,一种 Web框架,这样的世界是令人难以想象的。从这个角度看,不时造「新轮子、好轮子」才是计算机科学的演进历史,也构建了现代软件工程的基石。 固然大多数新轮子最终不会被很多人运用,但是「造轮子」无疑是深化了解技术原理的最佳措施。不会造轮子的同窗永远只能停在技术表层,难以中止有发明性的工作。在造轮子的初级阶段,的确应该避免将自己的轮子直接应用在公司业务系统中带来维护成本问题,但是到了高级阶段,造轮子的才干就是开发者的中心竞争力,而轮子也将成为公司之间差别化竞争的重要资本。 也能够说,要想成为中大型互联网公司的高级工程师或技术专家,必须具备经过造轮子开发出更好工具的实战才干。 本小册的一个中心目的,就是经过实战模块教大家打造一个属于自己的小轮子 —— RPC 效劳小框架,带领大家体验这种深度学习措施的价值。这里也援用理论物理巨匠费曼先生的名言与诸位同窗共勉。
注:理查德·费曼——美国理论物理学家,量子电动力学开创人之一,纳米技术之父。 为什么会有这本小册? 这是我在技术写作范畴完成的第一本 主题小册。内容未几,却浓缩了这十年来工作学习修来的精髓。十年前,我跟大多数人一样,从校园毕业来到摩肩接踵的帝都,从基础的业务做起,慢慢积聚提升,从技术小白逐步长大为技术专家。 期间也曾阅历过职业展开迷茫期,在技术上一度缺乏自信,也短少过来人方向性的指引,在从初、中级开发者向高级开发者跃迁这个阶段,走得特别艰难。
这也是我写这本小册的初衷,希望能给像曾经的我一样面临同样应战的朋友们提供一些辅佐和指引,特别是具有一定稀缺性的学问。“授人以鱼不若授人以渔”,“磨刀不误砍柴工”。 希望阅读这本小册,既能让你收获很多构建散布式系统的措施和技巧,也能收获适用的措施论和思索方式,让你能码的更快码的更好,快速进入高手行列。 本小册的内容设计和特性 网络上解说 RPC 的文章也有不少,但相对来说都比较散乱或不够深化,对 RPC 效劳器的完成常常都是走马观花,浅尝辄止,在基础原理上的解说也多流于名义,不迭内核实质。 本小册内容不会对那些网上博客文章常见的浅层内容做过多重复解说,而将写作重心放在作者从多年实战阅历中探求出来的更有深度、极为重要或多数人不曾深化的诸多学问点上,希冀带领读者同时从深度和广度上充沛了解 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 作为人工智能/大数据时期的首选“全栈”言语,也值得每一位程序员去学习控制。 作者引见
钱文品(老钱),互联网散布式高并发技术十年老兵,知乎专栏「码洞」资深洞主,掘金技术专栏作者,目前任掌阅科技资深后端工程师,曾效劳于人人网,果壳。熟练运用 Java、Python、Golang 等多种计算机言语,开发过游戏制造过网站,写过音讯推送系统和MySQL 中间件,完成过开源的 ORM 框架、Web 框架、RPC 框架等。Github 地址: github.com/pyloque。 名人引荐 掌阅科技技术总监「陈超」
启萌教育技术总监 「王东永」
适合人群 1).控制Python 语法基础,有至少1-2年后端开发阅历,想系统深化的控制 RPC效劳开发; 2).不满足于只埋头搞业务的普通开发者和 CRUD 熟手; 3).等候持续进阶的 Python、Java、Golang 中高级程序员; 4).有志于向架构师方向迈进的 Geek 们; 5).盼望逃离技术温馨区的造轮子喜好者们; 读者福利 作者决议拿出一部分自己珍藏的好书作为福利,以抽奖的方式免费赠予置办小册的用户(国内用户包邮),数量有限,大家就拼人品吧。 1).《C Primer Plus》 2).《入手玩转 Arduino》 3).《白帽子讲 Web 保险》 4).《深化了解程序设计——运用 Linux 汇编言语》 5).《图解效劳器网络架构》 6).《构建 Oracle 高可用环境》 除了以上 6 本外,还有很多其它的好书,这里就不逐一罗列了。 ↓↓↓ |