系統(tǒng)間的交互用接口?用消息蜻展?

在各類系統(tǒng)設(shè)計(jì)中我們經(jīng)常會(huì)使用這兩者做信息的傳遞喉誊、系統(tǒng)的解耦,但是很難說(shuō)出在什么場(chǎng)景上我們使用標(biāo)準(zhǔn)服務(wù)接口纵顾,什么場(chǎng)景使用標(biāo)準(zhǔn)消息伍茄,好像是都可以用。尤其在平臺(tái)系統(tǒng)需要支撐各類業(yè)務(wù)場(chǎng)景的設(shè)計(jì)上施逾,這類問(wèn)題往往會(huì)是一個(gè)很難權(quán)衡的點(diǎn)敷矫。我們先看一下這兩種方式的特點(diǎn)(并非是優(yōu)缺點(diǎn))。

標(biāo)準(zhǔn)服務(wù)接口交互

高時(shí)效:耗時(shí)即為方法處理時(shí)間
強(qiáng)一致:理論意義上的強(qiáng)一致汉额,直接接口調(diào)用為強(qiáng)一致曹仗,soa調(diào)用需要分布式事務(wù)支持,明確能得到執(zhí)行結(jié)果蠕搜,對(duì)執(zhí)行結(jié)果有后續(xù)處理
語(yǔ)義清晰:有較清晰的函數(shù)名怎茫、參數(shù)、返回值以及類型妓灌,執(zhí)行目的一目了然
強(qiáng)耦合:受下游服務(wù)SLA影響而波動(dòng)
擴(kuò)展性低:對(duì)接不同業(yè)務(wù)時(shí)需要增加代碼/配置以調(diào)用不同的邏輯實(shí)現(xiàn)

標(biāo)準(zhǔn)消息交互

弱耦合:僅僅是數(shù)據(jù)的依賴轨蛤,無(wú)系統(tǒng)依賴
流量緩沖:可以積壓防止下游服務(wù)承接不住
擴(kuò)展性高:消息能夠被多個(gè)使用方訂閱而不需要上游系統(tǒng)有任何變更
無(wú)交互:僅僅是數(shù)據(jù)的傳遞,執(zhí)行結(jié)果和上游服務(wù)無(wú)關(guān)

再回到我們的系統(tǒng)設(shè)計(jì)上虫埂,需要申明一點(diǎn)的是沒(méi)有最好的設(shè)計(jì)祥山,只有最適合的設(shè)計(jì)。以內(nèi)容創(chuàng)作的場(chǎng)景來(lái)舉例掉伏,用戶投稿的過(guò)程中判斷內(nèi)容的安全性即時(shí)提醒用戶安全風(fēng)險(xiǎn)沒(méi)風(fēng)險(xiǎn)則上傳至平臺(tái)并推薦給其他用戶缝呕,這種方式可以做到最佳的用戶體驗(yàn)澳窑。但是以我們現(xiàn)在的安全把控粒度我們需要檢查內(nèi)容是否涉黃、涉暴岳颇、自殺自殘等很多違反社區(qū)規(guī)范的行為照捡,整個(gè)模型、策略執(zhí)行下來(lái)早已超出2话侧、3分鐘之外栗精。對(duì)于強(qiáng)體驗(yàn)的C端應(yīng)用來(lái)說(shuō)真的無(wú)法容忍≌芭簦基于這個(gè)技術(shù)限制的背景悲立,所以就需要反向推動(dòng)安全檢測(cè)能力和投稿能力獨(dú)立,內(nèi)容安全業(yè)務(wù)負(fù)責(zé)檢查內(nèi)容的安全性新博,投稿業(yè)務(wù)負(fù)責(zé)保障用戶能夠把內(nèi)容上傳到平臺(tái)并保障其體驗(yàn)薪夕。也就有了用戶先上傳內(nèi)容,安全檢查異步進(jìn)行這種方式赫悄。


內(nèi)容審核流程

用戶的積分系統(tǒng)
一般而言用戶積分的積累可由很多種途徑獲取原献,比如下單、評(píng)論埂淮、分享等姑隅,積分和訂單是兩個(gè)完全不相關(guān)的領(lǐng)域,積分的過(guò)程也無(wú)須對(duì)下單等流程有影響倔撞,甚至說(shuō)不應(yīng)該感受到有積分的存在讲仰,為了做到這一點(diǎn)可以通過(guò)訂閱交易下單等業(yè)務(wù)的動(dòng)作事件來(lái)完成積分的統(tǒng)計(jì)。

積分交互

開(kāi)放平臺(tái)
一般和有一些研發(fā)能力的外部業(yè)務(wù)方合作時(shí)痪蝇,就會(huì)使用到開(kāi)放平臺(tái)來(lái)把平臺(tái)的一部分能力提供給合作方鄙陡,由開(kāi)放平臺(tái)提供開(kāi)發(fā)者認(rèn)證管理以及統(tǒng)一的鑒權(quán)、路由轉(zhuǎn)發(fā)等躏啰,舉個(gè)較為常用的電商商品管理的場(chǎng)景趁矾,第三方開(kāi)發(fā)者在淘寶平臺(tái)經(jīng)營(yíng)了一家淘寶店,想通過(guò)自己的ERP系統(tǒng)同步管理淘寶店的商品并且能夠直接給商品做滿減活動(dòng)给僵,第三方在上傳商品的時(shí)候需要明確知道淘寶商品也已上傳成功且返回商品id愈魏,創(chuàng)建活動(dòng)也是類似要求,最后需要將淘寶商品id和活動(dòng)id做關(guān)聯(lián)想际。所以開(kāi)放平臺(tái)場(chǎng)景上需要同步請(qǐng)求內(nèi)部系統(tǒng)培漏,并且返回相關(guān)數(shù)據(jù)。

開(kāi)放平臺(tái)架構(gòu)

有沒(méi)有這兩種方式結(jié)合的場(chǎng)景呢胡本?即既有用標(biāo)準(zhǔn)接口又用標(biāo)準(zhǔn)數(shù)據(jù)的場(chǎng)景牌柄?
全鏈路打點(diǎn)系統(tǒng)
我們以美團(tuán)開(kāi)源的分布式監(jiān)控系統(tǒng)Cat來(lái)舉例,Cat是一個(gè)實(shí)時(shí)和接近全量的監(jiān)控系統(tǒng)侧甫,為美團(tuán)各業(yè)務(wù)線提供系統(tǒng)的性能指標(biāo)珊佣、健康狀況蹋宦、監(jiān)控告警等,Cat在整體的設(shè)計(jì)上有一些要求

  • 故障容忍:CAT本身故障不應(yīng)該影響業(yè)務(wù)正常運(yùn)轉(zhuǎn)咒锻,CAT掛了冷冗,應(yīng)用不該受影響,只是監(jiān)控能力暫時(shí)減弱
  • 高吞吐惑艇,準(zhǔn)實(shí)時(shí):為快速發(fā)現(xiàn)故障蒿辙、快速定位故障提供時(shí)效性
    此外在監(jiān)控和性能分析功能上有如下場(chǎng)景要求:
  • 一段代碼的執(zhí)行時(shí)間,一段代碼可以是URL執(zhí)行耗時(shí)滨巴,也可以是SQL的執(zhí)行耗時(shí)思灌。
  • 一段代碼的執(zhí)行次數(shù),比如拋出異常記錄次數(shù)恭取,或者一段邏輯的執(zhí)行次數(shù)泰偿。
  • 定期執(zhí)行某段代碼,比如定期上報(bào)一些核心指標(biāo):內(nèi)存使用率蜈垮、GC耗跛、線程數(shù)等指標(biāo)。
  • 關(guān)鍵的業(yè)務(wù)監(jiān)控指標(biāo)攒发,比如監(jiān)控訂單數(shù)调塌、交易額、支付成功率等晨继。
    所以希望用戶的打點(diǎn)需要有明確場(chǎng)景含義才能夠方便后續(xù)的數(shù)據(jù)收集及處理上針對(duì)不同場(chǎng)景做聚合烟阐、計(jì)算搬俊。Cat為上述場(chǎng)景設(shè)計(jì)了四類帶有明確含義的接口Cat.newTransaction紊扬、Cat.logEvent、Cat.MetricForCount唉擂、Cat.MetricForDuration餐屎,并通過(guò)SDK供業(yè)務(wù)研發(fā)集成使用。


    鏈路監(jiān)控

再介紹一個(gè)比較常見(jiàn)的任務(wù)提交到反饋的場(chǎng)景玩祟,有一個(gè)比較明顯的不同點(diǎn)是系統(tǒng)需要讓下游做一件比較耗時(shí)的任務(wù)腹缩,同時(shí)也希望獲得任務(wù)運(yùn)行的結(jié)果,比如BI報(bào)表生成空扎。通常是提交任務(wù)時(shí)實(shí)時(shí)返回任務(wù)id藏鹊,表示任務(wù)提交成功,內(nèi)部執(zhí)行完耗時(shí)的任務(wù)后再去通知業(yè)務(wù)系統(tǒng)转锈。
任務(wù)作業(yè)系統(tǒng)

任務(wù)作業(yè)系統(tǒng)

總結(jié)
當(dāng)明確想要讓這個(gè)系統(tǒng)幫你“”“什么”盘寡,并且關(guān)心這個(gè)系統(tǒng)的“結(jié)果”,如果對(duì)時(shí)效有要求那就建議使用用標(biāo)準(zhǔn)服務(wù)接口進(jìn)行交互撮慨,如果對(duì)時(shí)效無(wú)要求則可以參考任務(wù)作業(yè)系統(tǒng)竿痰,通過(guò)標(biāo)準(zhǔn)的服務(wù)接口交互快速返回脆粥,在有結(jié)果后通過(guò)回調(diào)告知業(yè)務(wù)系統(tǒng)。
當(dāng)僅僅是做數(shù)據(jù)傳遞及事件感知影涉,不想對(duì)上游系統(tǒng)有影響也不需要上游知道是否有這樣的系統(tǒng)存在变隔,則通過(guò)標(biāo)準(zhǔn)消息或事件來(lái)交互,如果在業(yè)務(wù)邏輯處理的過(guò)程中希望對(duì)該數(shù)據(jù)有有確含義的處理但并不想影響自身系統(tǒng)蟹倾,則可以參考Cat監(jiān)控系統(tǒng)匣缘,通過(guò)sdk對(duì)明確對(duì)數(shù)據(jù)的加工方式再提交到下游系統(tǒng)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末喊式,一起剝皮案震驚了整個(gè)濱河市孵户,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌岔留,老刑警劉巖夏哭,帶你破解...
    沈念sama閱讀 206,602評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異献联,居然都是意外死亡竖配,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,442評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)里逆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)进胯,“玉大人,你說(shuō)我怎么就攤上這事原押⌒哺洌” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 152,878評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵诸衔,是天一觀的道長(zhǎng)盯漂。 經(jīng)常有香客問(wèn)我,道長(zhǎng)笨农,這世上最難降的妖魔是什么就缆? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,306評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮谒亦,結(jié)果婚禮上竭宰,老公的妹妹穿的比我還像新娘。我一直安慰自己份招,他們只是感情好切揭,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,330評(píng)論 5 373
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著锁摔,像睡著了一般廓旬。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上鄙漏,一...
    開(kāi)封第一講書(shū)人閱讀 49,071評(píng)論 1 285
  • 那天嗤谚,我揣著相機(jī)與錄音棺蛛,去河邊找鬼。 笑死巩步,一個(gè)胖子當(dāng)著我的面吹牛旁赊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播椅野,決...
    沈念sama閱讀 38,382評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼终畅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了竟闪?” 一聲冷哼從身側(cè)響起离福,我...
    開(kāi)封第一講書(shū)人閱讀 37,006評(píng)論 0 259
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎炼蛤,沒(méi)想到半個(gè)月后妖爷,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,512評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡理朋,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,965評(píng)論 2 325
  • 正文 我和宋清朗相戀三年絮识,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗽上。...
    茶點(diǎn)故事閱讀 38,094評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡次舌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出兽愤,到底是詐尸還是另有隱情彼念,我是刑警寧澤,帶...
    沈念sama閱讀 33,732評(píng)論 4 323
  • 正文 年R本政府宣布浅萧,位于F島的核電站逐沙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏惯殊。R本人自食惡果不足惜酱吝,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,283評(píng)論 3 307
  • 文/蒙蒙 一也殖、第九天 我趴在偏房一處隱蔽的房頂上張望土思。 院中可真熱鬧,春花似錦忆嗜、人聲如沸己儒。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,286評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)闪湾。三九已至,卻和暖如春绩卤,著一層夾襖步出監(jiān)牢的瞬間途样,已是汗流浹背江醇。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,512評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留何暇,地道東北人陶夜。 一個(gè)月前我還...
    沈念sama閱讀 45,536評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像裆站,于是被迫代替她去往敵國(guó)和親条辟。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,828評(píng)論 2 345

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