Thrift初試

Restful 基於 Http 進行通信。html

  • 開放、標準、簡單、兼容性升級容易;
  • 性能略低。在 QPS 高或者對響應時間要求苛刻的服務上,能夠用 RPC,RPC採用二進制傳輸、TCP 通信,因此一般性能更好。

RPC通信git

  • 效率相對較高
  • 耦合度強,若是兼容性處理很差的話,一旦服務器端接口升級,客戶端就要更新,即便是增長一個參數,而 rest 則比較靈活。

最佳實踐:對內一些性能要求高的場合用 RPC,對內其餘場合以及對外用 Rest。好比 web 服務器和視頻轉碼服務器之間通信能夠用 restful 就夠了,轉帳接口用 RPC 性能會更高 一些。github

以上參考:老楊的課件。web

 

Thrift是一個跨語言通訊的服務框架,不一樣語言開發的程序能夠經過Thrift來進行通訊。apache

使用

下載:http://www.apache.org/dyn/closer.cgi?path=/thrift/0.11.0/thrift-0.11.0.exe服務器

把 thrift-***.exe 解壓到磁盤,更名爲 thrift.exe(用起來方便一些)restful

編寫 **.thrift 文件(IDL)框架

根據IDL,自動生成對應的語言代碼:性能

thrift -gen csharp f:\netcore\Thrifts\school.thriftrest

 

一個簡單實例

https://github.com/tianbogit/ThriftDemo

 

一個宿主寄宿多個服務:

//關聯處理器與服務的實現
TProcessor helloProcessor = new HelloService.Processor(new MyHelloService());
TProcessor schoolProcessor = new SchoolService.Processor(new MySchoolService());

//建立服務端對象 
var processorMulti = new TMultiplexedProcessor();
processorMulti.RegisterProcessor("helloService", helloProcessor);
processorMulti.RegisterProcessor("schoolService", schoolProcessor);
TServer server = new TThreadPoolServer(processorMulti, serverTransport, new TTransportFactory(), factory);

  

參考

[1]「Thirft框架介紹」

[2]「Thrift使用指南」

[3]「使用Thrift RPC編寫程序」

[4]「讓Thrift支持雙向通訊」

[5]「淺談Thrift內部實現原理「

http://dongxicheng.org/recommend/

相關文章
相關標籤/搜索