Tim锛氭湇鍔$鐞嗘鏋剁殑灏濊瘯
鏈嶅姟绠$悊鐩墠骞舵棤鐩存帴瑙e喅鏂规锛孴hrift浣滆€匨ark Slee鎻愬埌
It’s also possible to use Thrift to actually build a services management tool. i.e. have a central Thrift service that can be queried to find out information about which hosts are running which services. We have done this internally, and would share more details or open source it, but it’s a bit too particular to the way our network is set up and how we cache data. The gist of it, though, is that you have a highly available meta-service that you use to configure your actual application server/clients.
Source: [Thrift] Handling failover and high availability with thriftservices
濡傛灉寮€鍙戜竴涓嚜宸辩殑鏈嶅姟绠$悊妗嗘灦锛岄渶瑕佸叿澶囦互涓嬪姛鑳?/p>
- 蹇€熷け璐ワ紝杩欎釜鍦ㄦ湰鍘傛剰涔夐噸澶э紝寰堝杩滅▼鏈嶅姟璋冪敤鏄湪鍏抽敭璺緞涓紝瀹冨彲浠ュ蹇嶅け璐ワ紝浣嗘槸涓嶈兘瀹瑰繊鍫靛
- failover锛屽鎴风failover鏀寔锛屽苟鏀寔鑷姩澶辨晥鎺㈡祴鍙婃仮澶嶈皟鐢?/li>
- 涓績鍖栭厤缃強鎺ㄩ€佸姛鑳斤紝鎵€鏈塩lient鍦ㄥ悓涓€鏃跺埢閰嶇疆鐨勪竴鑷存€э紝骞朵笖client浼氳窡閰嶇疆涓績淇濇寔闀胯繛
- 璐熻浇鍧囪 绛栫暐锛氭敮鎸乺ound robin锛宭east active, consistent hash锛屾垨鑰呭熀浜庤剼鏈殑鍔ㄦ€佽矾鐢辩瓥鐣ャ€傝繖涓兘鏄敱閰嶇疆涓績鏉ユ帶鍒?/li>
- 鍔ㄦ€佸惎鐢ㄥ強鍋滅敤鏈嶅姟鍙婅妭鐐癸細鍙互鍔ㄦ€佸惎鍔ㄥ強鍋滅敤鏈嶅姟锛堢儹鍙戝竷锛夛紝鐢变簬鏈夋帹閫佸姛鑳斤紝鐩稿瀹规槗瀹炵幇
- 璺ㄨ瑷€锛氭敮鎸乧lient鑳戒娇鐢ㄥ父瑙佷富娴佽瑷€鏉ヨ闂?/li>
- 鐗堟湰绠$悊锛氬悓涓€鏈嶅姟鍙互鏈変笉鍚岀殑鐗堟湰骞跺瓨
- 璁块棶缁熻鍙婂姩鎬佽繍琛屽弬鏁版煡鐪嬶細鍙互瀵规柟娉曠骇鍒繘琛岃闂粺璁″強瀹炴椂瑙傚療
璁块棶绛栫暐
鏈嶅姟妗嗘灦鍊惧悜浜庣洿杩炵殑鏂规锛屽嵆client鏄洿鎺ヨ繛鎺erver锛岃€屼笉浼氬鍔犱腑闂寸墿鐞嗕笂鐨勪唬鐞嗗眰锛屾湇鍔℃鏋跺彧鍋氫腑蹇冮厤缃€佽闂瓥鐣ャ€佹湇鍔″彂鐜般€侀厤缃€氱煡绛夎亴璐c€?/p>
璺敱鐨勭壒娈婇渶姹?/h2>
閫氬父鐨勬湇鍔¤闂紝浣跨敤涓婅堪round robin绛?绉嶇瓥鐣ュ嵆鍙紝浣嗘槸鍦ㄥ疄闄呭伐绋嬪疄璺典腑锛屾垜浠彂鐜版湁浜涗笉鍚岀殑闇€姹傘€傛瘮濡傝鏁拌繖鏍风殑杩滅▼鏈嶅姟锛岃鎿嶄綔鍙殢鏈鸿闂竴鍙拌繙绋嬭妭鐐癸紝浣嗗啓鎿嶄綔闇€瑕佽闂墍鏈夌殑鏈嶅姟鑺傜偣鎵嶈兘瀹炵幇銆傚洜姝ゆ垜浠渶瑕佹湁骞挎挱寮忕殑璁块棶闇€姹傘€傜敱浜庤鏁版湇鍔″瀹炴椂鎬у拰涓€鑷存€ц姹傝緝楂橈紝涓嶉€傚悎閲囩敤寮傛濡侾ub/Sub杩欐牱鏂瑰紡鍘诲疄鐜帮紝鍥犳鍦╟lient杩橀渶瑕佹敮鎸佸悓姝ョ殑骞挎挱璋冪敤銆?/p>
鑰﹀悎鍙婁镜鍏ョ殑鐭涚浘
鍦ㄨ璁℃湇鍔$鐞嗙郴缁熶箣鍓嶏紝鎴戜滑甯屾湜涓嶈窡涓€绉嶅叿浣撶殑鎶€鏈紙濡俆hrift锛夌粦瀹氾紝姣斿client鍜宻erver鏈嶅姟瀹炵幇鏂逛笉闇€瑕佸お澶氬叧蹇冨簳灞傛妧鏈€備絾鏄湪瀹為檯瀹炵幇杩囩▼涓鍒颁笉灏戠煕鐩俱€?/p>
IDL渚靛叆
鍦ㄤ娇鐢═hrift涔嬪悗鏈嶅姟瀹炵幇寰堥毦缁曡繃Thrift IDL锛屼娇鐢ㄦ柟闇€瑕佽嚜宸辩淮鎶DL浠ュ強Thrift鐢熸垚鐨勪唬鐮侊紝鏈嶅姟妗嗘灦鏀寔灏員hrift鏈嶅姟娉ㄥ唽鍒伴厤缃郴缁熶腑銆傝櫧鐒朵篃鍙互缁曡繃IDL鏉ュ疄鐜版湇鍔★紝浣嗘槸妗嗘灦鐩稿叧鍔熻兘鐨勫疄鐜板拰缁存姢鎴愭湰姣旇緝楂樸€?/p>
RPC妗嗘灦鐨勪镜鍏?/h3>
Thrift Transport鍙互浣跨敤TCP锛圫ocket锛夋垨鑰呮槸HTTP
杩欎釜涔熸槸闈炲父濂界殑鐗规€э紝鍦ㄦ煇浜涙儏鍐礣ransport浣跨敤HTTP浼氬甫鏉ュ緢澶氫究鍒╋紝浣跨敤HTTP铏界劧鏈変竴浜涢澶栧紑閿€锛屼絾鏄疕TTP鐨勫懆杈归厤濂楄鏂界殑瀹屽杽瓒冲鎶垫秷杩欑寮€閿€銆備娇鐢═CP寰堝鐘舵€佸疄鏃剁洃鎺ч兘闇€瑕佹湇鍔$郴缁熶粠澶村仛璧枫€?/p>
Thrift鐨刅ersion涓庢湇鍔$殑version瀛樺湪涓€瀹氱殑閲嶅
鏈嶅姟鐗垫秹鍒扮増鏈鐞嗭紝鎴戜滑甯屾湜閫氳繃鍙戠幇鏈嶅姟鏉ョ鐞嗭紝浣嗘槸Thrift鏈韩涔熸湁鐗堟湰鐨勮璁°€?/p>
杩欎簺鐭涚浘鐨勬湰璐ㄥ氨鏄湇鍔℃鏋堕渶瑕佺殑涓€浜涘姛鑳芥槸鑷繁瀹炵幇杩樻槸渚濊禆Thrift鏉ュ疄鐜帮紝寰堝Thrift浣跨敤鏂瑰Twitterrpc-client骞茶剢灏辩洿鎺ュ湪Thrift妗嗘灦鍩虹涓婂寮恒€?/p>
铏界劧瀛樺湪涓婅堪涓€浜涘緟瑙e喅闂锛屽巶鍐呯涓€涓娇鐢ㄦ湇鍔℃鏋剁鐞嗙殑鏈嶅姟鍗冲皢涓婄嚎锛屽緢蹇瘡澶╀細鏈夋暟鍗佷嚎鐨勮皟鐢ㄥ皢浼氬湪姝や箣涓婁骇鐢燂紝鍚屾椂涔熶細鏈夋柊鐨勬寫鎴樺嚭鐜般€?/p>
Figure 1: Facebook Service Management Console
锛堟潵婧愶細http://www.slideshare.net/adityaagarwal/qcon Slide 27锛?/p>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。