談談中臺架構之交易中臺

{"type":"doc","content":[{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"中臺的概念說了好多年了,起源就是芬蘭的遊戲公司","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"supercell","attrs":{}}],"attrs":{}},{"type":"text","text":",之後阿里就提出了大中臺小前臺的戰略,然後和瘋狗一樣侵蝕了中國。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"很多小公司爲了顯得牛逼,管他呢,幹他,就要硬懟箇中臺出來,反正有個名字叫出來就顯得很叼的樣子。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其實然並卵,中臺的目的還是爲了更快的能承接業務的需求,釋放開發的重複勞動。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這些年也經歷了從交易到金融中臺的體驗,對中臺也算是有個比較粗略的理解,這些年的中臺真的有沒有那麼好,甚至於現在想到什麼業務就想搞中臺,想做什麼就想往中臺遷移,好像中臺就是萬能的,沒有中臺既不能顯示自己的能力,又不能突出自己的水平。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"今天,我就談談中臺,先談談交易中臺吧。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"中臺架構","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"任何一個新生事物的誕生,隨之而來都會引發一系列的問題。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"就拿中臺來說,最開始的探索我想無非就是沉澱、抽象通用的業務能力,達到快速交付的目的,而後隨着架構的調整,又會衍生出對應的組織中臺、技術中臺、數據中臺等等。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"通常,我們平時最多說的中臺能力就是業務中臺,比如用戶中臺、商品中臺、交易中臺、庫存中臺、營銷中臺、金融中臺等等,這些通用的能力無論對於哪個公司的業務來說都應該是不可或缺的一部分。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/ed/edcd82c786e8dca0b07f6d2955e59ad4.jpeg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"對於前臺來說,存在一點改變,比如BFF(backend for frontend)的概念,也叫做面向前端的後端。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"通常,對於C端APP、PC、H5、開放平臺等這些不同的前臺對於數據的要求是不太一樣的,爲了適應這些變化,針對每個端都整一個BFF作爲數據的聚合、裁剪,也可以承載鑑權、限流等一些通用的能力。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/d2/d2e06db54dccd137da313f81e2c2eaeb.jpeg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這樣的架構方式就把傳統的一些網關的能力和BFF放在了一起,當然也可以剝離開,更優的解法我想還是通過中間件的能力配置方式就能達到數據聚合、裁剪的能力,同時可以兼有路由、鑑權、限流等等。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/64/642a16a7b4a5687957c2e8b4285555c8.jpeg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"中臺沉澱的是通用和抽象能力,原本雜糅在一起的業務邏輯和能力就有了清晰的界定,一些傳統的業務能力將會被劃分到","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"業務後臺","attrs":{}},{"type":"text","text":"的概念中,比如一些CRM系統,財務管理系統,用戶管理這些。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"架構就是類似這樣,接下來說具體的交易中臺的建設。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":1},"content":[{"type":"text","text":"交易中臺","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"交易中臺核心的3個部分就是","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"正向交易","attrs":{}},{"type":"text","text":"、","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"逆向交易","attrs":{}},{"type":"text","text":"、","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"履約","attrs":{}},{"type":"text","text":",無論做哪些抽象的能力,都離不開這3個模塊。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/bd/bd148b7bab7241bad778462c2c9b1506.jpeg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"一般在團隊規模不大的時候,這3個能力都可以放在一起維護,完全沒有什麼問題,主要服務本身可以承載不用業務線的需求,能夠對外輸出通用的3個能力即可。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當然,更加具體的業務應該由業務本身來決定是什麼,這裏只會描述最基礎應該具有的能力。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而當業務的體量上升之後,就會面臨更多的拆分的必要,比如訂單查詢、下單、支付、逆向取消退款、履約拆分形式。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"正向交易","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"讓我從提單頁、訂單確認頁開始說起,一般來說,提單頁的信息非常多,我們要顯示購買的商品信息、還有用戶的等級、積分、能用的優惠券、價格、剩餘的庫存、支付方式等等,有的還有一些搭售的商品,具體還有怎麼選擇最優的組合方式,搭售商品的展示邏輯等等。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"提單頁涉及到的接口可謂是複雜的變態,而且QPS還高,通常這個界面的邏輯會由專門的","attrs":{}},{"type":"text","marks":[{"type":"strong","attrs":{}}],"text":"導購服務","attrs":{}},{"type":"text","text":"來做聚合,當然也有的是讓交易本身做這個聚合的邏輯,不過我認爲由導購的服務來聚合更爲合理一點。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/cb/cbf4e7608ef2a2b71e071add90e62f8c.jpeg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"其他的變化都比較好說,單純的調用其他服務的接口應該就可以滿足,由於這個界面的QPS會非常高,所以要做好熔斷降級的措施,對於非主鏈路的服務在高併發的時候該降級的就一定要降級,絕對不能拖累到主鏈路的下單流程。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"這裏搭售單其實是一個比較複雜的部分,這個實現方式一般是用子訂單的形式來實現,也有的實現方式是一個獨立的平行訂單,還有的是獨立到另外一個服務,具體實現方式不做評價,但是複雜是真的複雜,幾個訂單交雜在一起,要保證最終下單一致性,必須都下單成功,而且對於支付來說合並支付、逆向退款也是非常複雜的一件事情。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/94/948d11b02812de5328042c0e1d2d60c0.jpeg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"提單頁之後,就進入到真正的下單支付環節,下單的流程對於不同的業務來說可能不太一致,能力支持到位的話藉助流程編排可能稍微輕鬆一點,反之爲了兼容多種不同的業務必然需要抽象出足夠通用的邏輯,但是這樣也會使得簡單的業務變得更加複雜。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"而如果爲了圖簡單,全部都是","attrs":{}},{"type":"codeinline","content":[{"type":"text","text":"if else","attrs":{}}],"attrs":{}},{"type":"text","text":"的話,也能快速搭起來架子,但是後續承載更多不同業務場景將會變得無比被動。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"所以中臺的能力應該是對現有的業務足夠清晰之後再做的抽象,而不是啥也沒有上來就要幹塔喵的中臺。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"逆向交易","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"通常的考量肯定是要閉環的,這個詞倒是很好,包括我們平時做設計方案的時候肯定也是如此,光進不出的那是貔貅,衆所周知,貔貅是沒有菊花的,難受。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"訂單的取消、退款更多的時候和支付的交互,對於複雜的業務邏輯,存在各種優惠券、紅包、積分、會員權益扣減一大堆的就會讓支付變得非常複雜。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"支付的時候很爽,反正傳參就完了,真正到了退款的時候,對於各種不同類型的權益使用、分潤規則將會導致退款非常難,對於支付來說這一部分的能力並不好抽象,更多的計算的邏輯還是會被交易承載。","attrs":{}}]},{"type":"heading","attrs":{"align":null,"level":3},"content":[{"type":"text","text":"履約","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"履約一般而言異步的形式會比較更好一點,下單後發放積分、優惠券、紅包屬於履約,之後安排配送、發貨、簽收也都屬於履約。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"通常的形式是監聽下單或者支付成功的消息,消費之後調用下游服務的接口,只要調用成功就代表履約成功,履約的最終成功應該由下游服務來保證。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/91/91dce8fbd7aadd7071e14c262c6550d9.jpeg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null},"content":[{"type":"text","text":"當然,對於比如複雜的履約流程,涉及到物流配送等,那就不是這麼簡單了。","attrs":{}}]},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}},{"type":"image","attrs":{"src":"https://static001.geekbang.org/infoq/0c/0c80bda59d21b145dee16b6b47644d74.jpeg","alt":null,"title":null,"style":[{"key":"width","value":"75%"},{"key":"bordertype","value":"none"}],"href":null,"fromPaste":true,"pastePass":true}},{"type":"paragraph","attrs":{"indent":0,"number":0,"align":null,"origin":null}}]}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章