微信後臺開源框架,牛逼!

微信後臺主要使用 C++。後臺服務使用 Svrkit 框架搭建,服務之間通過同步 RPC 進行通訊。

使用 Svrkit 構建了數以千計的服務模塊,提供數萬個服務接口,每天 RPC 調用次數達幾十萬億次。

PhxRPC 就是微信後臺團隊推出的一個非常簡潔小巧的 RPC 框架,編譯生成的庫只有 450K:

Github 地址:

https://github.com/Tencent/phxrpc

但是這個開源的框架不是微信內部實際使用的,因爲實際使用的版本有太多的內部依賴,已經不太好整理開源出來,所以這個是開源簡化版。

PhxRPC  使用 “協程” 來解決常規“異步 + 回調” 方式存在的  IO 阻塞的問題,大大提高了整體性能。

它主要有以下幾個特點:

用 PhxRPC 寫一個服務非常簡單,用 Protobuf 定義好接口協議後,直接就可以生成服務代碼,你只需要關注業務邏輯實現即可,其它網絡收發包、協議解析都由框架完成了:

另外,很多同學問我網絡編程如何學習?

在這分享一點個人經驗吧,我們知道有本網絡編程聖經:《Unix 網絡編程》

但是我建議不要直接上來就去看《Unix 網絡編程》,這本書裏面很大的篇幅都在講解 API 和 Unix Socket API 細節,很容易看不下去。

我建議先去隨便找菜鳥教程或者 man 手冊熟悉常用的 socket api,先寫幾個網絡聊天室這種小程序來,然後再去考慮進階。

C++ 後臺開發基本是離不開網絡編程的,其實甚至整個後臺開發也可以看做是在做網絡編程。

只不過別人的框架幫我們做了協議解析、網絡數據傳輸、解封包這些底層操作。

比如 SpringBoot 這種保姆級框架,基本上屬於將一個框架能幹的事都幹完了,以至於我們開發業務只需要定義接收和返回包的數據格式,然後做邏輯處理就完了。

像序列化、解封包、IO 處理這種網絡編程必備的髒活業務開發根本不會接觸到。

但是網絡編程技能還是很重要的,特別是對於 Linux C++ 開發來說。

Linux 下網絡編程核心的包括系統編程和網絡 IO 兩個部分:

推薦的書:

這兩本是磚頭書,雖然是網絡編程和 Unix 系統編程方面的無出其右的聖經,但主要用途還是墊顯示器(逃, 個人覺得這種書不是面向讀者的,具體原因和如何閱讀這種書在後文介紹。

我強烈推薦,這本書前半部分基本是在重複計網基礎知識,但是後面幾章關於高性能服務器程序框架、高性能 IO、IO 複用、定時器、多線程編程、線程池和進程池還是講得非常全面到位的,值得一看,看完基本上對於整個網絡編程就有了框架。

這本書同樣強烈推薦,這是陳碩大佬寫的書,說實話第一部分:C++ 多線程系統編程都直接把我看蒙了,沒有想到 C++ 裏要做到線程安全這麼難,第一章我看了兩三遍纔看懂吧。。。這是難得的講解 C++ 多線程編程的書。

並且在書中,陳碩大佬用了一章講解了 Muduo 網絡庫設計與實現,Muduo 比較適合學完基礎的網絡編程後繼續進階學習如何設計和寫一個網絡庫,是一個高質量的 Reactor 網絡庫,採用 one loop per thread + thread pool 實現,代碼比較簡潔,書和源碼搭配着看作爲學習網絡編程方面來說是非常不錯。

推薦的閱讀順序:

《Linux 高性能服務器編程》—> 《Unix 網絡編程》(注意,不是全看,而是學習高性能服務器編程這本書的時候需要某個 Socket API 或者 IO 模型時再去查閱 UNP) -> 《Linux 多線程服務端編程》

學完網絡編程就可以寫點小項目練手了,這裏列舉幾個項目:


你好,我是小北,畢業於某末流 985,前國外計算機公開課硬核 Lab 玩家,現職場萌新,微信後臺小開發。

高中編程 0 基礎,從小白到計算機,大三時通過實習和技術變現收入 10 W+,點擊藍字查看我的「編程能力突飛猛進之路」

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/x313D3X7M1iCmZ0bsauo4A