百度信譽保障服務(wù)架構(gòu)全解析
點擊上方“服務(wù)端思維”,選擇“設(shè)為星標”
回復”669“獲取獨家整理的精選資料集
回復”加群“加入全國服務(wù)端高端社群「后端圈」
一、背景
百度保障是商家與網(wǎng)民之間發(fā)生投訴糾紛時,百度處理投訴的兜底方案,目標在于圍繞百度商家提供的內(nèi)容和服務(wù),構(gòu)建良幣驅(qū)逐劣幣的百度信譽生態(tài),讓用戶放心的在百度獲取信息和服務(wù)。目前百度保障覆蓋百度的各主要核心業(yè)務(wù)場景。搜索場景,無論是pc還是wise,端內(nèi)還是端外,幾乎所有交易場景都覆蓋了;電商場景,無論toB,還是toC,愛采購、度小店精選、招財貓等;feed場景,feed廣告、小程序保障;重點垂類,檸檬愛美、生活服務(wù)、醫(yī)療、教育等。
網(wǎng)民在百度進行交易或者使用百度服務(wù)時,只要認準"保障"標記,由于商家發(fā)生欺詐或者商家商家承諾沒有兌現(xiàn)時,可以通過保障平臺發(fā)起賠付申訴,得到相應(yīng)的賠償。
圖(1)為百度在搜索場景和電商場景兩個核心場景的主要入口和保障服務(wù)標簽披露。

圖(1)保障核心場景入口
百度保障產(chǎn)品介紹
百度各業(yè)務(wù)線商家可以通過百度保障統(tǒng)一入駐服務(wù),采取繳納保證金等形式加入百度保障計劃,同時百度保障提供高階保障標簽服務(wù),賦能各B端商家。商家加入保障計劃后,百度保障標簽和高階保障標簽會展示在C端商家對應(yīng)的商品和服務(wù)上,從而提升網(wǎng)民對百度商品和服務(wù)的信任感,提高下單轉(zhuǎn)化率。
當網(wǎng)民購買帶有"保障"的商品或服務(wù),存在商家欺詐或違背承諾等情況,網(wǎng)民可以來百度保障提供相應(yīng)的證據(jù),經(jīng)過營運判定處理后,得到相應(yīng)的賠償。針對百度的特點,目前保障賠付系統(tǒng)支持兩種主要形式的賠付,分別是:基于網(wǎng)民行為記錄(如點擊記錄、小程序調(diào)起記錄)的開環(huán)場景賠付申請和基于訂單(電商訂單、支付訂單)的閉環(huán)場景賠付申請。

圖(2)百度保障產(chǎn)品介紹
二、業(yè)務(wù)架構(gòu)全景
如圖(3)為保障業(yè)務(wù)全景圖。最下層為保障核心業(yè)務(wù)數(shù)據(jù),主要分三類,分別是商戶數(shù)據(jù)、網(wǎng)民數(shù)據(jù)、賠付數(shù)據(jù)。其中商戶數(shù)據(jù)包括:商戶的基本信息(商戶ID、商戶名稱、營業(yè)執(zhí)照等)、保證金信息、高階保障信息等。網(wǎng)民數(shù)據(jù)包括網(wǎng)民基本信息(網(wǎng)民ID、名稱、姓名)、實名信息等。賠付數(shù)據(jù)主要包括賠付的申請記錄、舉證信息、百度的付款記錄等。數(shù)據(jù)層之上為基礎(chǔ)服務(wù)層,主要包括基礎(chǔ)能力、計算融合服務(wù)、三方服務(wù)等。中間層為保障服務(wù)的核心系統(tǒng),主要包括統(tǒng)一的入駐系統(tǒng)、披露系統(tǒng)、接入系統(tǒng)和賠付系統(tǒng)。核心系統(tǒng)直接對接業(yè)務(wù)的B端和C端,為各業(yè)務(wù)方提供服務(wù)。

圖(3)保障業(yè)務(wù)全景
(1)入駐系統(tǒng)主要服務(wù)于各業(yè)務(wù)方B端系統(tǒng),為客戶提供保障的入駐服務(wù),客戶可以在此進行保證金和高階保障管理。業(yè)務(wù)方接入保障時,需要與保障一起確認不同行業(yè)類目的保證金門檻,保障測進行相應(yīng)的配置,然后,業(yè)務(wù)方B端只要通過iframe的形式內(nèi)嵌保證的頁面即可。
(2)披露系統(tǒng)主要為各業(yè)務(wù)方C端或其他展現(xiàn)端提供高性能的保障數(shù)據(jù)查詢服務(wù),包括保標和保障浮層。主要的數(shù)據(jù)維度包括:賬號userid、網(wǎng)站url、小程序的appkey、店鋪ID維度。
(3)保障接入系統(tǒng),主要服務(wù)于開環(huán)場景網(wǎng)民行為數(shù)據(jù)的接入,由于開環(huán)場景,網(wǎng)民申請賠付時,線上唯一可以獲取的憑證就是網(wǎng)民在系統(tǒng)的點擊行為等數(shù)據(jù),所以針對開環(huán)場景,需要接入不同業(yè)務(wù)方的點擊行為數(shù)據(jù),以便作為網(wǎng)民申請賠付的依據(jù)。
(4)保障賠付系統(tǒng)主要包括兩種場景的賠付,針對開環(huán)場景基于點擊記錄的賠付,以及針對閉環(huán)場景訂單的賠付。兩種場景賠付的主要區(qū)別在于賠付的依據(jù)不一樣,以及運營判斷賠付的標準不一樣。在申請賠付過程中,需要對網(wǎng)民進行真實性身份驗證,主要是采用人臉活體技術(shù)。在申保的過程中為網(wǎng)民提送聯(lián)系商家,聯(lián)系平臺等服務(wù),提升網(wǎng)民的申報體驗。最終運營統(tǒng)一判定賠付。
三、保障服務(wù)核心能力介紹
3.1 統(tǒng)一入駐
統(tǒng)一入駐主要面向各業(yè)務(wù)方的B端系統(tǒng)設(shè)計,方便業(yè)務(wù)方商戶快速加入保障。商家加入保障的門檻條件為繳納足夠的保證金。保障將保證金充值、退款、扣款、罰款、財務(wù)對賬等復雜繁瑣的財務(wù)交互邏輯沉淀為底層能力,業(yè)務(wù)方只要嵌入保障統(tǒng)一入駐頁面即可。
由于歷史原因百度存在多套賬號系統(tǒng),業(yè)務(wù)方賬號體系和權(quán)限控制系統(tǒng)也不一致,導致業(yè)務(wù)方的賬號權(quán)限控制多種多樣。那么對于這種情況,百度保障應(yīng)該怎么做呢?首先百度保障作為通用服務(wù),沒必要感知業(yè)務(wù)方的個性權(quán)限邏輯,因此統(tǒng)一入駐采用token鑒權(quán)進行權(quán)限控制,具體的權(quán)限控制交由業(yè)務(wù)方控制。業(yè)務(wù)方通過保障接口api,將頁面參數(shù)給保障token服務(wù),獲取到token信息,再將token信息作為參數(shù)拼裝到保障入駐管理頁面,通過iframe的形式嵌入保障入駐頁面。保障測控制token的有效期和保障同一個token只能在一個瀏覽器被正常訪問。這樣有效的將保障統(tǒng)一入駐服務(wù)與業(yè)務(wù)方賬號系統(tǒng)和權(quán)限控制服務(wù)解耦。
客戶帶入服務(wù)主要解決不同的業(yè)務(wù)方入駐保障維度不一致問題,如小店優(yōu)選以店鋪維度加入百度保障計劃,生活服務(wù)商家通過賬號ID加入保障計劃。客戶帶入服務(wù)將業(yè)務(wù)方不同的維度統(tǒng)一轉(zhuǎn)化為保障商戶(deposituserid)維度,保障的所有數(shù)據(jù)都掛在該deposituserid上。
從風險角度考慮,保證金收取的額度都是和商家的行業(yè)類目綁定的,業(yè)務(wù)方、保障、法務(wù)共同制定不同行業(yè)類目保證金限額。同時保障提供通用和個性話的保證金計算服務(wù),不同的業(yè)務(wù)方根據(jù)自己不同的業(yè)務(wù)特點選擇保證金計算策略,如小店優(yōu)選以保證金要求最高的類目的保證金作為保證金的最低額度,愛采購可能以商戶所有類目的保證金和作為保證金最低額度,商戶繳納的保證金必須大于等于保證金最低額度,方可加入百度保證計劃。商家加入保障基礎(chǔ)后,才可進行高階保障的申請。

圖(4)保障統(tǒng)一入駐
接著一下看看業(yè)務(wù)方與保障統(tǒng)一入駐的核心交互。
1、業(yè)務(wù)通過頁面iframe的形式嵌入保障的統(tǒng)一入駐管理頁面,商戶可以在該頁面進行保證金的管理(包括保證金的充值、退款等)和高階保障的管理,商家加入某個高階保障項(如7天無理由、48小時發(fā)貨,假一賠三等)之后,即可將對應(yīng)的高階保障項標簽展現(xiàn)在對應(yīng)的商品詳情頁上,從而提升網(wǎng)民對商品的信任感,提高轉(zhuǎn)化率。
2、業(yè)務(wù)方商戶的行業(yè)類目發(fā)生變更時,會以api的形式通知保障,完成相應(yīng)的保證金和高階保障項的重算邏輯。
3、最終保障的狀態(tài)和保障項的結(jié)果會以api的形式下發(fā)給個業(yè)務(wù)方,同時入駐信譽披露系統(tǒng),用戶C端各頁面的展示。
業(yè)務(wù)方接入保障統(tǒng)一入駐的步驟。
1、初始化類目與保障金、類目與高階保障項關(guān)系。
2、是否需要定制化保證金計算策略,需要則升級,不需要則直接介入。
3、配置化上線,主要配置業(yè)務(wù)方都需要哪些功能和相應(yīng)的下發(fā)接口地址等。這樣一個新的業(yè)務(wù)方入駐可在一天內(nèi)完成。
3.2 信譽披露
隨著百度保障業(yè)務(wù)場景的不斷擴大,保障標簽和信息在各場景、各業(yè)務(wù)方的披露越來越多。同時保障期望建立百度保障統(tǒng)一品牌,這就需要在不同場景對保障標簽和信息的數(shù)據(jù)和披露樣式信息進行統(tǒng)一,所以最好的方式是將保障披露的數(shù)據(jù)和樣式統(tǒng)一收斂到保障測,所以保障需要提供一個面向C端用戶的統(tǒng)一保障數(shù)據(jù)服務(wù)和前端統(tǒng)一樣式。當前保障信息每天展現(xiàn)兩幾十億的數(shù)據(jù)量級,峰值qps達15Wqps,那么信譽披露如何在保障高性能的同時,支持這么高的qps呢?下圖(5)是信譽披露的核心實現(xiàn)。

圖(5)信譽披露核心實現(xiàn)
首先,無論保障信息披露的場景多么復雜,披露的數(shù)據(jù)維度還是相對穩(wěn)定的,主要包括通用維度userid、url、小程序appkey(主要是根據(jù)百度業(yè)務(wù)特點來的,百度的核心內(nèi)容主要來源:百度商戶userid,百度自然結(jié)果url,第三方小程序appkey)和業(yè)務(wù)方個性化維度sappid+objectid。標準化各維度的數(shù)據(jù)結(jié)構(gòu)。為了提高檢索的性能,減少檢索的邏輯,信譽披露采用讀寫分離、離線計算的形式,即在信譽信息入庫的時候根據(jù)檢索需求,先將結(jié)果檢索需要的數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu),檢索只要取出相應(yīng)的數(shù)據(jù),做簡單微調(diào)即可。
信譽披露采用多地域部署,根據(jù)信譽披露數(shù)據(jù)源入庫特點,采用一主多從的模式,數(shù)據(jù)在華北地區(qū)寫入,并同步到華北、華東、華東各從庫,減少由于地域差異給不同地域地域帶來的影響。同時采用mysql作為數(shù)據(jù)的備份,再通過binlog將數(shù)據(jù)以異步消息隊列BP 和 文件udw形式輸出,滿足不同業(yè)務(wù)方的個性化需求。
在語言選型方面,信譽披露服務(wù)采用golang實現(xiàn),并行處理各種檢索請求,最大限度提高服務(wù)的性能。當前信譽披露實時檢索服務(wù)平均響應(yīng)時長穩(wěn)定在2ms內(nèi),支持20w+qps。
3.3 點擊記錄接入
上文提到,當網(wǎng)民在百度購買使用帶有保障標記的商品或服務(wù)被騙時,可以來百度保障提供證據(jù)申請賠付,從而得到相應(yīng)的補償。而百度的賠付系統(tǒng)主要支持兩種場景的賠付開環(huán)場景和閉環(huán)場景。
開環(huán)場景是指用戶從百度獲取商家相關(guān)信息,再線下完成交易,百度對整個交易過程基本無感知,典型的開環(huán)場景是:網(wǎng)民在百度搜索某廣告,從鳳巢廣告點擊跳轉(zhuǎn)商家落地頁了解商家相關(guān)信息,并最終在線下完成整個交易過程。對于開環(huán)場景,有個很重要的信息就是網(wǎng)民在百度的行為記錄,這是網(wǎng)民申請賠付的憑證,否則無法證明是從百度了解的信息。如果百度保障的不同業(yè)務(wù)方都實現(xiàn)一套網(wǎng)民信息記錄的存儲是不可取的,為減小業(yè)務(wù)方的接入成本,同時最大限度與業(yè)務(wù)方邏輯解耦,因此保障收斂點擊接入接入服務(wù),將各業(yè)務(wù)方的點擊記錄統(tǒng)一維護在保障測。當網(wǎng)民在瀏覽商品或者服務(wù)時,業(yè)務(wù)方只要將相應(yīng)的點擊記錄接入保障,后續(xù)網(wǎng)民基于當時的點擊發(fā)起賠付申請,運營賠付處理,財務(wù)打款對于業(yè)務(wù)方都是透明的。

圖(6)保障點擊記錄接入架構(gòu)
點擊記錄接入系統(tǒng)主要處理點擊的分發(fā)、字面還原、合并入庫與存儲。
首先需要規(guī)范點擊記錄結(jié)構(gòu)(主要包括,搜索相關(guān)的query、物料title、點擊時間、點擊ip、跳轉(zhuǎn)鏈接、網(wǎng)民passportid、商戶userid等)。
點擊接入支持文件、異步消息隊列、api等多種樣式。點擊記錄系統(tǒng)兩個主要的服務(wù)bzWorker、bzMerge 組成。bzWorker主要用戶對不同業(yè)務(wù)方的點擊記錄進行自適應(yīng)處理,包括點擊日志物料的還原、無效日志過濾等,新日志源接入時,只要自適應(yīng)封裝物料還原等服務(wù)即可。bzMerge為點擊日志通用入庫邏輯。其中bzWorker和bzMerge取采用master-worker模式形式,master負責消息的分發(fā),worker負責消息的處理,可以最大限度的提高點擊日志的介入速率和資源利用率。

圖(7)bzWorker實現(xiàn)
在bzWorker和bzMerge之間加入redis緩沖區(qū),可以啟動很好的削峰作用,同時可以提高系統(tǒng)的整體穩(wěn)定性,下游bzMerge掛掉時,點擊記錄會暫存于緩存區(qū),不會造成消息的丟失。點擊記錄數(shù)據(jù)存儲分為兩部分,點擊映射數(shù)據(jù)采用gaia-x存儲,gaia-x是一種newsql 分布式數(shù)據(jù)庫(SQL on Distribute KV),是一種列式存儲數(shù)據(jù)庫相對與ddbs主要優(yōu)勢在于,節(jié)約存儲資源和可擴展性好。同時采用sndb存儲重復度高的物料基礎(chǔ)信息,最大限度的節(jié)約存儲空間。
保障點擊記錄接入系統(tǒng),滿足業(yè)務(wù)方點擊記錄秒級延時介入,支持20000+寫吞吐。
3.4 賠付申請
百度保障的賠付有兩種核心場景,分別是開環(huán)場景和閉環(huán)場景。對于開環(huán)場景的賠付,主要網(wǎng)民提交相應(yīng)的證據(jù)信息,主要靠運營把控,整個申保過程相對簡單,所以這部分主要介紹閉環(huán)場景基于訂單的賠付。

閉環(huán)場景基于訂單的賠付相對點擊記錄的賠付要復雜得多。首先開環(huán)場景的賠付憑證點擊記錄都已經(jīng)收斂到了保障,而閉環(huán)場景的訂單分散于各業(yè)務(wù)方。訂單屬于交易場景的基礎(chǔ)服務(wù),各業(yè)務(wù)方要么已經(jīng)自建、要么使用了通用的訂單服務(wù),保障如何在減小對業(yè)務(wù)方侵入的的情況下,將訂單接入賠付系統(tǒng)?同時保證同一個訂單在交易的整個過程中都可能產(chǎn)生過程中訂單?如何用戶在小店精選購買某個商品下單,首先在小店的訂單中心會有一條訂單記錄,同時為了方便用戶更方便的查找訂單,業(yè)務(wù)方的訂單數(shù)據(jù)會接入手百訂單中心,當用戶完成支付時,還會產(chǎn)生一條支付記錄,如果用戶在其他app(如百度地圖)發(fā)生交易,訂單還會進入百度地圖訂單中心,那么保障如何保證用戶無論在那處申請賠付,數(shù)據(jù)都同步更新,避免出現(xiàn)刷單等情況呢?
從上面的過程中,可以找到保障賠付的三個主要角色:保障業(yè)務(wù)方、保障平臺、手百訂單中心(訂單聚合平臺,保障的合作方)。保障平臺和手百訂單中心是兩個獨立服務(wù)提供方,不同的業(yè)務(wù)方接入維度存在差異。加入手百訂單中心的業(yè)務(wù)方不一定加入保障平臺,同樣加入保障平臺的業(yè)務(wù)方不一定加入手百訂單中心。在整個訂單賠付過程中,如何讓手百訂單中心盡量不感知保障業(yè)務(wù),從而做到新業(yè)務(wù)通過手百訂單中心加入保障賠付時,手百訂單中心可以透明無感知?
網(wǎng)民在業(yè)務(wù)方下單那一刻,只有業(yè)務(wù)方能感知當前當前對應(yīng)的商品或者商家是否已經(jīng)加入保障計劃,所以只要業(yè)務(wù)方將下單是否訂單對應(yīng)的保障快照信息baoinfo(主要包括:保障為業(yè)務(wù)方分配的原始sappid,業(yè)務(wù)方加入保障的維度 objectid,業(yè)務(wù)方原始訂單ID sorderid、當前保障狀態(tài)等),接下來會在整個訂單流轉(zhuǎn)過程中保證保證原始信息baoinfo的透傳即可。保障的賠付信息只要掛在原始保障信息上,這樣無論網(wǎng)民在什么地方發(fā)起賠付,只要訂單快照中原始保障信息不變,對應(yīng)就是同一個賠付。并且只要百度保障和手百訂單中心建立合作后,后續(xù)加入保障的業(yè)務(wù)方,只要按照約定將原始保障信息baoinfo給手百訂單中心即可完成訂單賠付接入保障,整個過程中,手百訂單中心都是透明的。

圖(9)訂單賠付實現(xiàn)
同時,在閉環(huán)訂單賠付場景,網(wǎng)民對應(yīng)賠付體驗的要求也是不一樣的。因此相對開環(huán)場景,訂單賠付引入了系統(tǒng)自動判斷邏輯,如48小時發(fā)貨,只要網(wǎng)民申請,系統(tǒng)判定商家確實晚發(fā)了,直接給網(wǎng)民賠付,不需要人工審核。對于賠付成立,財務(wù)打款,開環(huán)場景,采用財務(wù)統(tǒng)一打款,需要網(wǎng)民提供相應(yīng)的銀行卡信息、經(jīng)過財務(wù)審核、財務(wù)審批打款,打款周期長,在訂單賠付場景中,百度保障引入了快捷打款能力,直接通過提現(xiàn)小程序?qū)崟r給用戶打款。
四、電商場景實踐
電商場景的典型代表就是小店優(yōu)選。
小店優(yōu)選商家通過繳納保證金加入百度保障基礎(chǔ)保障計劃,商家根據(jù)自己的行業(yè)類目選擇相應(yīng)的高階保障項,并在商品詳情頁進行保障項露出,提升買家對商品的信任感,從而促進下單轉(zhuǎn)化,當商品質(zhì)量出現(xiàn)問題、或者商家沒有遵守承諾(如沒在承諾的48小時內(nèi)發(fā)貨),可以直接在手百訂單中心或者小店訂單中心發(fā)起賠付。從實驗數(shù)據(jù)可以看出,商品加入保障計劃后,可以在很大程度上提高商品詳情頁的提單轉(zhuǎn)化率。

圖(10)小店優(yōu)選保障實踐
五、發(fā)展與思考
未來,在業(yè)務(wù)上,我們將持續(xù)深耕電商類、服務(wù)類、醫(yī)療等垂類行業(yè)保障,讓用戶在百度獲取的內(nèi)容和服務(wù)更加可信。在技術(shù)上,信譽保障研發(fā)團隊會通過引入更多的系統(tǒng)自動判定手段來提升保障的處理效率,進一步減少運營成本,同時提升網(wǎng)民的申保體驗;在數(shù)據(jù)方面,重點建設(shè)保障B端數(shù)據(jù)能力,讓百度保障成為賦能B端的強有力的工具。
— 本文結(jié)束 —

●?漫談設(shè)計模式在 Spring 框架中的良好實踐
關(guān)注我,回復 「加群」 加入各種主題討論群。
對「服務(wù)端思維」有期待,請在文末點個在看
喜歡這篇文章,歡迎轉(zhuǎn)發(fā)、分享朋友圈


