亚洲欧美色图区_全黄h全肉短篇|HD中文字幕在线播放,美国禁忌l一4电影,国产一区二区在线观看视频,痴汉电影院侵犯中文字幕

    電話

    0411-39943997

仟億科技
客服中心
  • 電話
  • 電話咨詢:0411-39943997
  • 手機
  • 手機咨詢:15840979770
    手機咨詢:13889672791
網絡營銷 >更多
您現在的位置:首頁 > 新聞中心 > 常見問題

開源項目thrift應用 和一些已知的問題

作者:billionnet 發布于:2012/5/10 17:29:58 點擊量:

 

thrift 是由facebook貢獻,目前由apache在推進的一個開源項目。它主要是作為一個可靠的RPC 框架來使用,當然它也包含了序列化與反序列化的功能。對比其他的具備類似功能的開源工具,thrift在語言支持、性能、可靠性、易用性上具有相當的優勢。

1. 語言支持
C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk, and OCaml等,十分方便在不同的語言或組件之間交互和協作。

2. IDL 描述
thrift依靠 IDL 來描述提供的服務和接口。IDL 例子如下
namespace cpp shared
namespace java shared
namespace perl shared
struct JobInfo {
1: i32 jobId
2: string jobName
3: string jobDescription
4: string executor
}

thrift通過編譯IDL文件,為不同的語言生成對應的client以及server端代碼模板。以生成c++代碼為例
thrift --gen cpp job.thrift

service SharedService {
i32 exeucte(1: JobInfo job)
}

依賴IDL的一個不足之處,就是在實現應用時,必須預先知道要提供的服務的接口細節。一旦確定了thrift IDL描述并編碼成代碼之后,就無法在運行期動態的改變服務接口了。這對于大型系統來說,會有一定的限制。在這個問題上apache avro提供了一個新的思路。有興趣的同學可以研究一下apache avro的generic 方式動態加載schema的機制

3. 性能
作為一個RPC框架,其性能方面主要是比拼序列化和反序列化兩個方面。這方面的對手當然是google protobuf了。(實際上還有avro,這里偷個懶)

序列化的性能對比(ms)

反序列化的性能對比(ms)


從這個數據上來看,thrift要比protobuf 快近1倍。

4. 可靠性
不詳述

5. 在windows上使用 thrift 的一些問題
thrift在開發過程可以說是完全沒有照顧windows的打算,一直到目前最新的0.8.0版本,根據IDL生成的代碼都是無法在windows上編譯運行的。甚至thrift 本身的lib庫代碼在windows上都是無法正常運作的。需要解決一下幾個問題

  • 初始化windows socket library
  • socket server在listen之前需要先bind。需要修改TServerSocket.cpp的listen函數

解決以上問題后能保證thrift client正常運作。

  • socket的flag需要修改為0,windows不支持AI_PASSIVE | AI_ADDRCONFIG
  • socket的協議族要修改為PF_INET

解決了以上問題之后,能保證thrift server在win7上正常運作。若需要thrift 在windows XP也能正常運行,還需要修改

  • 編譯thrift時,強制指定WINVER=0×501
  • 在listen函數中增加如下代碼

#if WINVER<=0x502
// on WINDOWS XP platform, after poll(actually select) operation,
// the revents field will not be set
fds[0].revents = POLLIN;
#endif

  • 建立socket server時,必須指定acceptTimeout,至少為100ms。如果使用默認值,會導致應用進入死循環,占用全部CPU


分享到:


Copyright@ 2011-2016 版權所有:大連千億科技有限公司 遼ICP備11013762-3號   google網站地圖   百度網站地圖   網站地圖

公司地址:大連市沙河口區中山路692號辰熙星海國際2317 客服電話:0411-39943997 QQ:2088827823 37482752

法律聲明:未經許可,任何模仿本站模板、轉載本站內容等行為者,本站保留追究其法律責任的權利! 隱私權政策聲明