1. 程式人生 > >harpc 基於thrift的輕量級rpc框架

harpc 基於thrift的輕量級rpc框架

注意:此文為轉載文章,原文地址為:https://github.com/baifendian/harpc

harpc是什麼

HARPC(High Availability RPC)是基於Thrift的跨語言、高可用的RPC框架。具備高效能、高可用、輕量級等特點,在百分點科技內部服務中廣泛使用。

使用指南:HARPC簡介
QQ討論群:398091913
高可用RPC

功能介紹

  • 跨語言通訊
    • 方便的使Java、Python、C++三種程式可以相互通訊
  • 負載均衡和容災處理
    • 方便的實現任務的分散式處理
    • 支援服務的水平擴充套件,自動發現新的服務節點
    • 能夠相容各種異常情況,如節點的異常down機
  • 視覺化管理
    • 通過服務管理系統可以方便檢視服務狀態和統計資訊
  • 與原生thrift通訊
    • 支援與原生thrift服務進行通訊

與業內方案的對比

  • 與thrift、avro、hessian相比,harpc支援了高可用,並且更加易用
  • 與dubbo相比,harpc支援了跨語言,並且更輕量級
  • 與ice相比,harpc效能更高,並且更輕量級

設計思路

HARPC的核心思想是高可用,那麼在保證高可用的基礎上,還需要具備跨語言、高效能、視覺化及輕量級等特性。於是,我們在設計之初就選擇了基於thrift開發的方案,底層通訊使用thrift來保證高效能和跨語言,然後HARPC來保證高可用和視覺化,並且儘量保持簡單,來達到輕量級的需求。

  • 整體結構

整體結構

* 說明
    * 四個部分:client(客戶端)、server(服務端)、registry(註冊中心,目前為zookeeper叢集)、admin(服務管理系統)
    * client和server又包括: your code(使用者程式碼)、harpc(核心框架,包含Java、Python、C++三個版本)、thrift gen(thrift生成的原始碼檔案,用於底層通訊)

如何使用

測試結論

harpc的Java、Python、C++版本的效能略有差別,由高到低為:C++版本 ≈ Java版本 > Python版本,下面僅給出Java版本的測試資料和結論。

  • Java版本容錯性測試 java版本容錯性測試

  • Java版本效能測試 java版本效能測試