海量互連網服務需要依賴分散式架構來支持,而分散式開發的基石則是 RPC

Introduction Solutions

  • Apache Thrift: 是可伸縮跨語言的軟體框架。允許定義一個描述文件,描述資料類型和服務接口。依據該文件,編譯器方便地生成RPC client/server code。由 facebook 開發用做系统内各語言之間的RPC通信 。2007年由 facebook 貢獻到 apache 基金 ,現在是 apache下的opensource之一 。 
  • gRPC: Google公布的 open source,基於最新的 HTTP2.0 協議,並支持常建的眾多語言。gPRC的Java實現底層是Netty,而且是用到最新的 Netty5.0.0.Alpha3 的開發版本。

Hands on

  • Apache thrift
    • 安裝:
      • sudo apt-get install libboost-dev libboost-test-dev libboost-program-options-dev libboost-system-dev libboost-filesystem-dev libevent-dev automake libtool flex bison pkg-config g++ libssl-dev ant
      • For docker image if ubuntu 14.04 need to do “apt-get install make”
      • git clone https://git-wip-us.apache.org/repos/asf/thrift.git thrift
      • cd thrift
      • ./bootstrap.sh
      • ./configure
      • make
      • sudo make install
      • 編輯 RpcService.thrift
      • 針對不同語言產生code:
        • thrift  –gen go RpcService.thrift
        • thrift –gen js RpcService.thrift
        • thrift –gen js:node RpcService.thrif
  • gRPC
    • 安裝:
      • unzip  protobuf-2.6.1.tar.gz
      • cd  protobuf-3.0.0-alpha-3/
      • ./configure
      • make && sudo make install
      • 針對不同語言產生code:
        • protoc -I=$SRC_DIR –go_out=$DST_DIR $SRC_DIR/addressbook.proto
        • protoc -I=$SRC_DIR –java_out=$DST_DIR $SRC_DIR/addressbook.proto

Reference

http://thrift.apache.org/

http://www.grpc.io/docs/#servicedef