www.久久久久|狼友网站av天堂|精品国产无码a片|一级av色欲av|91在线播放视频|亚洲无码主播在线|国产精品草久在线|明星AV网站在线|污污内射久久一区|婷婷综合视频网站

當(dāng)前位置:首頁 > 公眾號(hào)精選 > 架構(gòu)師社區(qū)
[導(dǎo)讀]背景閑魚同城作為閑魚本地生活的主戰(zhàn)場,維護(hù)閑魚基本盤閑置物品的同時(shí),還針對(duì)閑置時(shí)間和閑置空間場景進(jìn)行相關(guān)的孵化。于買家而言:淘到經(jīng)濟(jì)實(shí)惠的閑置物品(二手?jǐn)?shù)碼),打發(fā)閑置時(shí)間(兼職,服務(wù))去掙錢。于賣家而言:閑置物品(二手?jǐn)?shù)碼)賣錢,閑置空間(二手房租賣)換錢。閑置時(shí)間(兼職)和閑...

背景

閑魚同城作為閑魚本地生活的主戰(zhàn)場,維護(hù)閑魚基本盤閑置物品的同時(shí),還針對(duì)閑置時(shí)間閑置空間場景進(jìn)行相關(guān)的孵化。
于買家而言:淘到經(jīng)濟(jì)實(shí)惠的閑置物品(二手?jǐn)?shù)碼),打發(fā)閑置時(shí)間(兼職,服務(wù))去掙錢。于賣家而言:閑置物品(二手?jǐn)?shù)碼)賣錢,閑置空間(二手房租賣)換錢。
閑置時(shí)間(兼職)和閑置空間(租房)區(qū)別于同城傳統(tǒng)的閑置物品,閑置物品為傳統(tǒng)的C2C的商品,也就是買賣雙方均為C端的用戶。但是對(duì)于兼職、租房等業(yè)務(wù)來說,需要供應(yīng)商入駐提供供給。因此一旦涉及到第三方提供的供給,就不得不面臨以下問題:
  • 隨著業(yè)務(wù)的不斷發(fā)展,必將有越來越多的供應(yīng)商入駐。為了能讓供應(yīng)商快速接入,除了必備的接入文檔之外在技術(shù)側(cè)應(yīng)該能有一套動(dòng)態(tài)響應(yīng)機(jī)制,防止在供應(yīng)商接入的過程中被問題頻繁的打斷(雙方數(shù)量對(duì)不齊、同步失敗原因等)。

  • 每個(gè)供應(yīng)商的供給質(zhì)量和技術(shù)水平存在差異,如何控制好供給質(zhì)量的同時(shí)保證服務(wù)的穩(wěn)定性成為另一大關(guān)鍵因素。

技術(shù)方案

整體架構(gòu)

閑魚同城第三方對(duì)接架構(gòu)設(shè)計(jì)

整體架構(gòu)設(shè)計(jì)會(huì)復(fù)用中臺(tái)的一些基礎(chǔ)能力,比如用戶、商品、交易等。抽象出三個(gè)領(lǐng)域,商家域、審核域和獨(dú)立業(yè)務(wù)域(每個(gè)業(yè)務(wù)可以單獨(dú)劃分)。安全生產(chǎn)層面,為了保證系統(tǒng)的穩(wěn)定性,圍繞限流(高并發(fā)下限流重試) 監(jiān)控(對(duì)異常的狀態(tài)出對(duì)應(yīng)的報(bào)警) 數(shù)據(jù)安全(重試下情況下保證冪等性)展開。

數(shù)據(jù)對(duì)賬

閑魚同城第三方對(duì)接架構(gòu)設(shè)計(jì)

注:
  • 審核:復(fù)用了審核中心的能力(機(jī)審 人審)。機(jī)審:預(yù)置過濾規(guī)則,不滿足過濾規(guī)則的判定為審核失敗。

  • 開放接口能力:提供查詢商品審核、校驗(yàn)操作日志。

異常回調(diào)

  1. 收到同步消息后會(huì)對(duì)數(shù)據(jù)進(jìn)行校驗(yàn),包括不限于數(shù)據(jù)字段合規(guī)性校驗(yàn)(長度、枚舉值等)、夾帶違禁詞、狀態(tài)更新異常(已經(jīng)下架的寶貝執(zhí)行下架動(dòng)作)等。

  2. 針對(duì)上述初審?fù)ㄟ^,會(huì)進(jìn)入審核中心二次審核,審核主要內(nèi)容為語義違規(guī)。

兩種回調(diào)場景都復(fù)用了異常流轉(zhuǎn)的能力如下圖:閑魚同城第三方對(duì)接架構(gòu)設(shè)計(jì)

通過catch(LocalBizException e)的方式,將e.getCode()**和e.getMessage()**封裝為response進(jìn)行返回,不需要對(duì)不同的異常進(jìn)行單獨(dú)catch讓異常邏輯在業(yè)務(wù)回調(diào)側(cè)閉環(huán)。供應(yīng)商獲取到錯(cuò)誤信息后根據(jù)錯(cuò)誤信息修改信息進(jìn)行二次同步。

定時(shí)播報(bào)

采集狀態(tài)變更日志表業(yè)務(wù)商品表將對(duì)應(yīng)的一個(gè)小時(shí)內(nèi)發(fā)生狀態(tài)轉(zhuǎn)化的商品數(shù)量(上架、下架、編輯、審核不通過等)最后以釘釘消息播報(bào)到釘釘群中(按照釘釘?shù)臋C(jī)器人api)。兼職中主要關(guān)心的指標(biāo)項(xiàng)為上下架成功與否、是否審核失敗等指標(biāo),兼職播報(bào)架構(gòu)如下圖所示:閑魚同城第三方對(duì)接架構(gòu)設(shè)計(jì)

開放接口

與此同時(shí)開放的接口能力提供查詢商品審核、校驗(yàn)操作日志。接口定義如下,提供時(shí)間范圍、同步id、類型、分頁參數(shù)等信息。閑魚同城第三方對(duì)接架構(gòu)設(shè)計(jì)

注:涉及圖中狀態(tài)日志表和商品表的插入部分參見下一章節(jié)“穩(wěn)定性”。

穩(wěn)定性(安全生產(chǎn))

閑魚同城第三方對(duì)接架構(gòu)設(shè)計(jì)

穩(wěn)定性治理一直是一個(gè)系統(tǒng)繞不開的話題,在這個(gè)場景中涉及到第三方之間的交互,誰都無法確定對(duì)方是如何調(diào)用己方的系統(tǒng)。這種情況下,穩(wěn)定性的重要性更加不言而喻。

流量控制

在數(shù)據(jù)同步時(shí),將請(qǐng)求打入隊(duì)列對(duì)于第三方的同步請(qǐng)求使用異步返回。打入隊(duì)列的好處就是可以利用隊(duì)列實(shí)現(xiàn)流量控制,削峰填谷。限流這部分依賴于阿里開源的Sentinel框架,網(wǎng)上對(duì)于Sentinel的分析很多這里不多加贅述。閑魚同城第三方對(duì)接架構(gòu)設(shè)計(jì)

數(shù)據(jù)一致性保證

由于存在重試操作,所以必然需要在重試過程中保證數(shù)據(jù)的正確性。
  • 狀態(tài)變更日志表:數(shù)據(jù)庫采用的是nosql的數(shù)據(jù)庫,這邊會(huì)根據(jù)參數(shù)生成唯一id,進(jìn)行覆蓋插入保證數(shù)據(jù)的唯一性。

  • 業(yè)務(wù)商品表:采用先查后插的方式,同時(shí)利用分布式鎖 itemId唯一鍵沖突保證數(shù)據(jù)的唯一性。

拿兼職插入一致性舉個(gè)栗子:ic表:底層商品表,包括一些商品的基本信息。崗位表:擴(kuò)展信息的存儲(chǔ),工作地點(diǎn)、工作時(shí)間等。當(dāng)一條兼職同步消息來了之后這邊會(huì)涉及到兩張表的維護(hù)。這里采用的方式是以下架的方式插入ic表,如果業(yè)務(wù)表成功后去更新上架ic表中狀態(tài)(如下圖)。閑魚同城第三方對(duì)接架構(gòu)設(shè)計(jì)

異常監(jiān)控告警

攻擊流量通常會(huì)偽裝成正常流量進(jìn)入。在這種情況下,系統(tǒng)會(huì)一直無法消費(fèi)此異常消息,所以這邊設(shè)置一個(gè)消費(fèi)重試閾值,如果達(dá)到上限后對(duì)消息進(jìn)行丟棄,同時(shí)進(jìn)行系統(tǒng)告警(有的場景是需要強(qiáng)一致性保障,此時(shí)報(bào)警后需人工接入排查)。兼職業(yè)務(wù)的告警場景包括:
  1. 限流觸發(fā)報(bào)警(持續(xù)時(shí)間超過10分鐘):限流期間被限制的消息業(yè)務(wù)會(huì)主動(dòng)進(jìn)行重試,控制重試n次整體持續(xù)時(shí)間不會(huì)超過10分鐘,如果限流超過10分鐘認(rèn)定為異常情況會(huì)進(jìn)行告警。(通常來說是供應(yīng)商大批量上下架崗位導(dǎo)致,未通知前提下認(rèn)定為他們系統(tǒng)問題)

  2. 狀態(tài)更新失?。ǔ掷m(xù)時(shí)間超過5分鐘,每分鐘數(shù)量大于n):小批量的更新失敗可以理解為是垃圾數(shù)據(jù),持續(xù)時(shí)間過于長可以理解為供應(yīng)商系統(tǒng)異常。

總結(jié)和展望

本章節(jié)主要介紹了閑魚同城業(yè)務(wù)在“閑置時(shí)間”和"閑置空間“場景下針對(duì)與第三方系統(tǒng)對(duì)接的過程中開發(fā)資源和穩(wěn)定性問題展開。通過上述方案也解決了在開篇提到的2個(gè)問題:
  • 動(dòng)態(tài)響應(yīng)機(jī)制:商品同步時(shí)通過實(shí)時(shí)回調(diào)和異步回調(diào)的方式將商品的每個(gè)異常狀態(tài)返回給供應(yīng)商;提供了小時(shí)時(shí)間維度的統(tǒng)計(jì)播報(bào),最后以釘釘消息通知至釘釘群中,如若發(fā)現(xiàn)異常也可根據(jù)開放接口去查詢商品歷史變更狀態(tài)。這樣就能很大程度上解放開發(fā),不會(huì)因?yàn)閷?duì)賬的問題被頻繁的打斷。

  • 穩(wěn)定性治理:通過接口限流保證異常流量打滿線程池進(jìn)而影響系統(tǒng);通過接口冪等保證數(shù)據(jù)的安全唯一性;通過監(jiān)控(搭配合適的報(bào)警規(guī)則)去監(jiān)控異常場景,如若出現(xiàn)問題人為介入。

隨著業(yè)務(wù)越來越復(fù)雜,對(duì)應(yīng)的獨(dú)立業(yè)務(wù)域也將會(huì)越來越多,在獨(dú)立業(yè)務(wù)域上的開發(fā)精力也會(huì)越來越多。能否根據(jù)大量復(fù)雜業(yè)務(wù)場景的輸入找到共同點(diǎn)抽象出較為理想的架構(gòu)將是努力的目標(biāo)。
  • 抽象出獨(dú)立業(yè)務(wù)域中的共同點(diǎn),推動(dòng)業(yè)務(wù)完善路徑:完善租房的訂單和履約路徑,統(tǒng)一抽取出訂單域和履約域。

  • 針對(duì)不同業(yè)務(wù)的不同商家統(tǒng)一商家管理平臺(tái),現(xiàn)階段每個(gè)業(yè)務(wù)都有自己的一套接入方式。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
關(guān)閉
關(guān)閉