国产又粗又硬又黄又爽_国产午夜夜伦鲁鲁片|HD中文字幕在线播放,午夜久久久久,亚洲国产中文字幕,美女奸三级日本电影

    電話(huà)

    0411-39943997

仟億科技
客服中心
  • 電話(huà)
  • 電話(huà)咨詢(xún):0411-39943997
  • 手機(jī)
  • 手機(jī)咨詢(xún):15840979770
    手機(jī)咨詢(xún):13889672791
網(wǎng)絡(luò)營(yíng)銷(xiāo) >更多
您現(xiàn)在的位置:首頁(yè) > 新聞中心 > 常見(jiàn)問(wèn)題

開(kāi)源項(xiàng)目thrift應(yīng)用 和一些已知的問(wèn)題

作者:billionnet 發(fā)布于:2012/5/10 17:29:58 點(diǎn)擊量:

 

thrift 是由facebook貢獻(xiàn),目前由apache在推進(jìn)的一個(gè)開(kāi)源項(xiàng)目。它主要是作為一個(gè)可靠的RPC 框架來(lái)使用,當(dāng)然它也包含了序列化與反序列化的功能。對(duì)比其他的具備類(lèi)似功能的開(kāi)源工具,thrift在語(yǔ)言支持、性能、可靠性、易用性上具有相當(dāng)?shù)膬?yōu)勢(shì)。

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

2. IDL 描述
thrift依靠 IDL 來(lái)描述提供的服務(wù)和接口。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通過(guò)編譯IDL文件,為不同的語(yǔ)言生成對(duì)應(yīng)的client以及server端代碼模板。以生成c++代碼為例
thrift --gen cpp job.thrift

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

依賴(lài)IDL的一個(gè)不足之處,就是在實(shí)現(xiàn)應(yīng)用時(shí),必須預(yù)先知道要提供的服務(wù)的接口細(xì)節(jié)。一旦確定了thrift IDL描述并編碼成代碼之后,就無(wú)法在運(yùn)行期動(dòng)態(tài)的改變服務(wù)接口了。這對(duì)于大型系統(tǒng)來(lái)說(shuō),會(huì)有一定的限制。在這個(gè)問(wèn)題上apache avro提供了一個(gè)新的思路。有興趣的同學(xué)可以研究一下apache avro的generic 方式動(dòng)態(tài)加載schema的機(jī)制

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

序列化的性能對(duì)比(ms)

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


從這個(gè)數(shù)據(jù)上來(lái)看,thrift要比protobuf 快近1倍。

4. 可靠性
不詳述

5. 在windows上使用 thrift 的一些問(wèn)題
thrift在開(kāi)發(fā)過(guò)程可以說(shuō)是完全沒(méi)有照顧windows的打算,一直到目前最新的0.8.0版本,根據(jù)IDL生成的代碼都是無(wú)法在windows上編譯運(yùn)行的。甚至thrift 本身的lib庫(kù)代碼在windows上都是無(wú)法正常運(yùn)作的。需要解決一下幾個(gè)問(wèn)題

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

解決以上問(wèn)題后能保證thrift client正常運(yùn)作。

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

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

  • 編譯thrift時(shí),強(qiáng)制指定WINVER=0×501
  • 在listen函數(shù)中增加如下代碼

#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時(shí),必須指定acceptTimeout,至少為100ms。如果使用默認(rèn)值,會(huì)導(dǎo)致應(yīng)用進(jìn)入死循環(huán),占用全部CPU


分享到:


Copyright@ 2011-2016 版權(quán)所有:大連千億科技有限公司 遼ICP備11013762-3號(hào)   google網(wǎng)站地圖   百度網(wǎng)站地圖   網(wǎng)站地圖

公司地址:大連市沙河口區(qū)中山路692號(hào)辰熙星海國(guó)際2317 客服電話(huà):0411-39943997 QQ:2088827823 37482752

法律聲明:未經(jīng)許可,任何模仿本站模板、轉(zhuǎn)載本站內(nèi)容等行為者,本站保留追究其法律責(zé)任的權(quán)利! 隱私權(quán)政策聲明