thrift rpc

Apache Thrift 跨語言服務框架,本質RPC;我發service需要放候,遇跨語言調用問題,JAVA語言發UserService用提供獲取用戶信息服務,服務消費端PHP/Python/C++等,我能所語言都適配相應調用式,候我奈使用Http作訪問協議;服務消費端能使用HTTP,且更加傾向于 操作本API式 使用服務,我需要Thrift提供支持.
本文UserService例,描述使用thrift式,及其原理..
. service.thrift
struct User{
1:i64 id,
2:string name,
3:i64 timestamp,
4:bool vip
}

service UserService{
User getById(1:i64 id)
}

二. API文件
首先載安裝thrift客戶端,比windows平臺,載thrift.exe,處需要提醒,同thrift客戶端版本API能兼容.本例使用thrift-0.9.0.exe;通"--gen"指定API所適配語言.本實例java客戶端API.
//windows平臺,API文件輸service目錄(目錄需要存)
> thrift.exe --gen java -o service service.thrift

三. UserService實現類
public class UserServiceImpl implements UserService.Iface {
@Override
public User getById(long id){
System.out.println("invoke...id:" + id);
return new User();//for test
}
}

四.原理簡析
1. User.java : thriftAPI能力非限,比struct能使用簡單數據類型(支持Date,Collection等),我能User看,類實現"Serializable"接口"TBase"接口.
其Serializable接口表明類實例需要序列化網絡傳輸,干擾JAVA本身序列化反序列化機制,重寫readObjectwriteObject.thrift本身并沒幫助.
TBase接口thrift序列化反序列化使用,兩核:readwrite.述thrift文件,struct定義每屬性都序號,比:1:id,thrift序列化,根據序號順序依屬性"名稱 + 值"寫入inputStream,反序列化.(具體參見readwrite實現).
thrift序列化反序列化實例數據,根據"屬性序號"進行,保證數據inputstreamoutputstream順序嚴格.點要求API發者,更改thrift文件struct定義,需要重新客戶端API,否則服務繼續使用(能報錯,能數據錯誤).thrift序列化/反序列化程JAVA自帶序列化機制同,攜帶額外class結構,外thrift種序列化機制更加適合網絡傳輸,且性能更加高效.
2. UserService.Client: UserService,Client靜態類,類典型代理類,類已經實現UserService所.發者需要使用Client類API與Thrift server端交互,負責與Thrift serverSocket鏈接,發送請求接收響應.
北京戶外廣告 安裝printproj.ocx 金壇區今日新聞 有關秋風的成語和詩句 武漢工業風地面 春季連衣裙搭配圖片 zipcode 橋本有菜 進化 我是大明星朱之文全集 控球后衛怎么練 水篦子板無錫昌鴻cn g 當季節不停更迭 新三國拍攝地點 權志龍2017生日照 新樂一中校長是誰 保衛者,潛伏者 如何制作立體賀卡 魔女的使命ova 泰國曼谷芭提雅和普吉島哪個好玩 摩羯座的人生座右銘 戴爾燃7000散熱不好 上海 戴爾 實體店 合意番外by楚寒衣青txt 交鋒免費閱讀 星際穿越正在播放手機在線觀看免費 aristocratic詞根字典 白色朱頂紅品種 hpm277fdw怎么QQ打印 emui3.0默認主題綻放 宜賓普什寧江機床

Copyright 中成網 Some Rights Reserved

如反饋或投訴等情況聯系:une35498#163.com

甘肃快3彩票