dubbo三

九她渴、最佳實踐
分布式應(yīng)用和單體應(yīng)用的主要區(qū)別是本地調(diào)用和遠程調(diào)用,解決的主要問題都是和遠程調(diào)用相關(guān)躲因。首先早敬,遠程調(diào)用的性能差于本地調(diào)用;其次大脉,遠程調(diào)用受網(wǎng)絡(luò)狀況影響搞监,有一定的失敗率,框架和應(yīng)用需要對失敗進行處理镰矿;再次琐驴,分布式場景下,事務(wù)控制會變得及其復(fù)雜;第四绝淡,分布式調(diào)用和調(diào)用本地API的不同宙刘。
遠程調(diào)用的性能:遠程調(diào)用的復(fù)雜性和流程遠超本地調(diào)用,包括序列化反序列化牢酵,網(wǎng)絡(luò)傳輸荐类,反射調(diào)用等重量級開銷。要保證高性能茁帽,除了框架自身之外,應(yīng)用的實現(xiàn)也應(yīng)該盡可能高性能話屈嗤,最佳實踐包括:1潘拨、盡可能異步或并行化服務(wù)調(diào)用,提高服務(wù)吞吐量饶号,降低服務(wù)調(diào)用時延铁追,或者使次要事件不影響響應(yīng)時間;2茫船、減小調(diào)用傳輸量琅束,包括dubbo在內(nèi)的很多分部式服務(wù)框架在服務(wù)的消費者和提供者之間使用單一長連接,傳輸量大會嚴重降低服務(wù)吞吐量算谈,增大調(diào)用時延涩禀;3、在消費者端控制超時時延然眼,避免慢響應(yīng)的服務(wù)引起故障擴散艾船;4、做好服務(wù)隔離高每,避免次要服務(wù)消耗過多資源屿岂,影響重要服務(wù)的吞吐量或性能。
容災(zāi)容錯:在分布式服務(wù)框架和應(yīng)用中需要做好被調(diào)用服務(wù)出錯或不可用的準備鲸匿,并進行兼容爷怀,避免次要服務(wù)引起整個業(yè)務(wù)無法進行的狀況。前面在服務(wù)降級中進行過詳細描述带欢,此處不再細講运授。
分布式事務(wù)的一致性:單體應(yīng)用中,事務(wù)是個極其簡單的控制洪囤,spring的聲明式事務(wù)提供了很多事務(wù)控制策略徒坡,代碼中幾乎不需要考慮事務(wù)一致性問題。服務(wù)分布化之后瘤缩,每個服務(wù)都擁有自己的數(shù)據(jù)庫喇完,服務(wù)之間的調(diào)用也變成了遠程調(diào)用,事務(wù)一致性幾乎無法通過框架來保證剥啤,事務(wù)一致性控制可能是分布式應(yīng)用和單體應(yīng)用的最大區(qū)別锦溪。通常不脯,兩階段提交時企業(yè)應(yīng)用保證分布式事務(wù)的常規(guī)策略,然而刻诊,兩階段提交采用悲觀鎖策略策略所表現(xiàn)出的低吞吐量和在出現(xiàn)故障時的脆弱性防楷,幾乎不被互聯(lián)網(wǎng)應(yīng)用所采納≡蜓模回到問題的本質(zhì)复局,我們之所以采用事務(wù),是為了數(shù)據(jù)的一致性粟判,而為了達到數(shù)據(jù)一致性亿昏,不一定只有事務(wù)一種方式,尤其是在分布式場景下档礁,采用分布式事務(wù)帶來的吞吐量下降是無法接受的角钩。我們考慮在整個業(yè)務(wù)處理過程中,保證數(shù)據(jù)在任何時間內(nèi)強一致的必要性呻澜,在很多業(yè)務(wù)場景下用戶對短暫的數(shù)據(jù)不一致是可以理解和容忍的递礼,只要最終數(shù)據(jù)是一致的即可。使用最終一致性羹幸,就不需要使用強一致的兩階段提交型分布式事務(wù)脊髓,從而使得系統(tǒng)的吞吐量得到保證。常用的最終一致性方案睹欲,要么在整個業(yè)務(wù)過程中記錄每個調(diào)用其他服務(wù)事務(wù)性操作的結(jié)果供炼,對失敗的操作進行重試,如果某個關(guān)鍵性服務(wù)返回失敗窘疮,例如支付時余額不足袋哼,則對每個成功的事務(wù)性操作進行補償性操作調(diào)用,以達到事務(wù)回滾的效果闸衫;要么使用帶有事務(wù)功能的MQ做中間人角色涛贯,做本地事務(wù)之前向MQ發(fā)送prepare消息,然后執(zhí)行本地事務(wù)蔚出,執(zhí)行成功的話向MQ發(fā)送commit消息弟翘,執(zhí)行失敗則發(fā)送rollback消息。對于最終一致性骄酗,一個很關(guān)鍵的點就是:對于網(wǎng)絡(luò)超時的事務(wù)性請求稀余,不能假設(shè)為失敗,必須查詢后趋翻,根據(jù)查詢結(jié)果決定下一步的操作睛琳,如果成功則進行下一步操作,失敗則重試。
分布式調(diào)用與本地調(diào)用的不同:遠程調(diào)用比本地調(diào)用復(fù)雜师骗,所以有一些通用的最佳實踐历等。
分包:建議將服務(wù)接口,服務(wù)模型辟癌,服務(wù)異常等放在api包中寒屯;
粒度:服務(wù)接口盡可能大粒度,每個服務(wù)方法應(yīng)代表一個功能黍少,而不是某功能的一個步驟寡夹,否則將面臨分布式事務(wù)問題;
序列化:服務(wù)參數(shù)及返回值建議使用POJO對象厂置,即通過set,get方法表示屬性的對象要出,服務(wù)參數(shù)及返回值都必需是byValue的,而不能是byRef的农渊,遠程調(diào)用出現(xiàn)byRef可能出現(xiàn)難以預(yù)料的問題;
異常:建議使用異常匯報錯誤或颊,而不是返回錯誤碼砸紊,異常信息能攜帶更多信息,以及語義更友好囱挑。

作為本系列的終結(jié)篇醉顽,強調(diào)最后一次,在分布式應(yīng)用中平挑,一定要處理好異常游添,處理好調(diào)用失敗,處理好網(wǎng)絡(luò)超時等各種非正常的場景通熄。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末唆涝,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子唇辨,更是在濱河造成了極大的恐慌廊酣,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赏枚,死亡現(xiàn)場離奇詭異亡驰,居然都是意外死亡,警方通過查閱死者的電腦和手機饿幅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進店門凡辱,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人栗恩,你說我怎么就攤上這事透乾。” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵续徽,是天一觀的道長蚓曼。 經(jīng)常有香客問我,道長钦扭,這世上最難降的妖魔是什么纫版? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮客情,結(jié)果婚禮上其弊,老公的妹妹穿的比我還像新娘。我一直安慰自己膀斋,他們只是感情好梭伐,可當我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仰担,像睡著了一般糊识。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上摔蓝,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天赂苗,我揣著相機與錄音,去河邊找鬼贮尉。 笑死拌滋,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的猜谚。 我是一名探鬼主播败砂,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼魏铅!你這毒婦竟也來了昌犹?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤览芳,失蹤者是張志新(化名)和其女友劉穎祭隔,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體路操,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡疾渴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了屯仗。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片搞坝。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖魁袜,靈堂內(nèi)的尸體忽然破棺而出桩撮,到底是詐尸還是另有隱情敦第,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布店量,位于F島的核電站芜果,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏融师。R本人自食惡果不足惜右钾,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望旱爆。 院中可真熱鬧舀射,春花似錦、人聲如沸怀伦。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至芳肌,卻和暖如春夯到,著一層夾襖步出監(jiān)牢的瞬間宾巍,已是汗流浹背肖粮。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工革半, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人洼怔。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像左驾,于是被迫代替她去往敵國和親镣隶。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容