當前位置:
首頁 > 知識 > 基於 Python 自建分散式高並發 RPC 服務

基於 Python 自建分散式高並發 RPC 服務

RPC(Remote Procedure Call)服務,即遠程過程調用,在互聯網企業技術架構中佔據了舉足輕重的地位,尤其在當下微服務化逐步成為大中型分散式系統架構的主流背景下,RPC 更扮演了重要角色。Google 開源了 gRPC,Facebook 開源了 Thrift,百度開源了 bRPC,騰訊開源了 Tars,阿里開源了 Dubbo 和 HSF,一線互聯網大廠們紛紛亮出自己研製的 RPC 框架武器,解決分散式高並發業務問題。

高深複雜的 RPC 框架解決了哪些業務難題?其技術含量究竟高在哪裡?後端開發者該如何深入掌握 RPC 開發?

雖然大部分後端開發者在日常開發中都會隱式或顯式的使用 RPC,但對初級開發者來說 RPC 總是略顯神秘而有距離,而即便有多年 RPC 使用經驗的程序員,也可能依然對 RPC 背後的原理不甚了解,難以精通,遇到複雜問題時難免誤用。

RPC 本身理論繁雜,涉及的技術棧和工具也比較多,能將理論落實到代碼層面,並結合業務實際情況,避開各種坑,最終實現性能和工程上的極致優化,這對後端開發者來說是一個極大的挑戰。而對 RPC 服務開發原理的認知水平,也正是區分後端高級開發者和普通開發者的重要參考標準之一。在分散式高並發服務領域,只有高手才能擔當重任,在業務工程領域有創新建樹。

程序員的成長層級

基於 Python 自建分散式高並發 RPC 服務

作為一名面試官,身邊不少工程師會經常問我如何判斷一個程序員的技術水平,如何區分他是高級的資深的,還是普通的一般的。相信每個面試官都有自己的一套判斷標準和參考答案,但通常最重要的一個評判依據是:

  • 高級程序員在技術選擇的自由度上往往更大,他們不只會用,而且還知道為什麼要這麼用,能不能不這麼用,有沒有更好的辦法。
  • 初級程序員只會搬磚,看到別人怎麼寫我就怎麼寫,缺乏自主思考的能力。

初級程序員之所以創新能力不足,根本原因在於沒有系統深入的掌握技術背後的基礎原理,無法進行有效思考,所謂「浮沙之上,難築高台」。只有在深入理解技術原理之後,工程能力才可能突飛猛進提升。

不想造輪子的程序員成為不了技術專家

軟體工程領域有一句很經典的名言「不要重複造輪子」,這句話旨在指導軟體工程以低成本高效開發。不過它也有適用範圍,因為程序員平時學習使用的所有開源框架和編程語言,本質上都是「新輪子」。如果全世界的程序員都完全信奉這句名言,那今天就只有一種編程語言,一種 Web框架,這樣的世界是令人難以想像的。從這個角度看,不斷造「新輪子、好輪子」才是計算機科學的演進歷史,也構建了現代軟體工程的基石。

雖然大多數新輪子最終不會被很多人使用,但是「造輪子」無疑是深入理解技術原理的最佳方法。不會造輪子的同學永遠只能停在技術表層,難以進行有創造性的工作。在造輪子的初級階段,確實應該避免將自己的輪子直接應用在公司業務系統中帶來維護成本問題,但是到了高級階段,造輪子的能力就是開發者的核心競爭力,而輪子也將成為公司之間差異化競爭的重要資本。也可以說,要想成為中大型互聯網公司的高級工程師或技術專家,必須具備通過造輪子開發出更好工具的實戰能力。

說了這麼多,就是為了推薦一本小冊給大家,通過實戰模塊教大家打造一個屬於自己的小輪子 —— RPC 服務小框架,帶領大家體驗這種深度學習方法的價值。這裡也引用理論物理大師費曼先生的名言與諸位同學共勉。

基於 Python 自建分散式高並發 RPC 服務

為什麼會有這本小冊?

這是作者在技術寫作領域完成的第一本主題小冊。內容不多,卻濃縮了這十年來工作學習修來的精華。「授人以魚不若授人以漁」,「磨刀不誤砍柴工」。希望閱讀這本小冊,既能讓你收穫很多構建分散式系統的方法和技巧,也能收穫實用的方法論和思考方式,讓你能碼的更快碼的更好,快速進入高手行列。

本小冊的內容設計和特點

網路上講解 RPC 的文章也有不少,但相對來說都比較散亂或不夠深入,對 RPC 伺服器的實現往往都是蜻蜓點水,淺嘗輒止,在基礎原理上的講解也多流於表面,不及內核本質。

本小冊內容不會對那些網上博客文章常見的淺層內容做過多重複講解,而將寫作重心放在作者從多年實戰經驗中摸索出來的更有深度、極為重要或多數人未曾深入的諸多知識點上,期望帶領讀者同時從深度和廣度上充分理解 RPC 服務架構的深度內核設計原理和實現細節,並會拓展介紹一些 RPC 相關的協議開發知識和業界實戰框架介紹,作為進階選修參考。

這本小冊在內容結構上主要劃分為 6 大塊:

基於 Python 自建分散式高並發 RPC 服務

  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 的理解和實戰開發經驗。

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 程序員小新人學習 的精彩文章:

json與protobuf的速度之爭
用python實現小豬佩奇

TAG:程序員小新人學習 |