目錄
聚合外賣訂單構(gòu)架
小程序下單構(gòu)架
統(tǒng)一訂單服務(wù)構(gòu)架
中臺(tái)構(gòu)架
總結(jié)
通過上面的介紹,我們?cè)缫押芮宄斯蚕矸?wù)和中臺(tái)的價(jià)值,但在實(shí)踐中,要不要對(duì)系統(tǒng)做這樣的升級(jí),我們還須要結(jié)合業(yè)務(wù)來(lái)判定,比如說(shuō):
1.
業(yè)務(wù)上有哪些重大變化,導(dǎo)致當(dāng)前系統(tǒng)的弊病早已很明顯,不能適應(yīng)業(yè)務(wù)發(fā)展了呢?
2.
架構(gòu)整修時(shí),如何在業(yè)務(wù)、系統(tǒng)、資源兩者之間做好平衡,對(duì)系統(tǒng)進(jìn)行分步式的改建
呢?
我們曉得,架構(gòu)沒有最好,只有最合適的。隨著業(yè)務(wù)的發(fā)展,系統(tǒng)須要不斷地升級(jí),這是一 個(gè)螺旋式上升的過程,如何結(jié)合當(dāng)前的業(yè)務(wù)發(fā)展階段,適時(shí)地推動(dòng)構(gòu)架改建,并能比較接地氣地落地,是我們要追求的目標(biāo)。
接下來(lái),我以實(shí)際的訂單系統(tǒng)改建為例,結(jié)合訂單業(yè)務(wù)的發(fā)展和系統(tǒng)的痛點(diǎn),為你介紹,如 何推動(dòng)構(gòu)架從單體到共享服務(wù)、再到中臺(tái)的改建過程,保證系統(tǒng)才能不斷適配業(yè)務(wù)的升級(jí)。
先說(shuō)下項(xiàng)目背景。公司作為供應(yīng)商,為小型餐飲連鎖企業(yè)構(gòu)筑 O2O 交易平臺(tái),包括三方聚合外賣、自有小程序、App 點(diǎn)餐,這些線上用戶的訂單最終會(huì)落到分店的收銀系統(tǒng),由門 店進(jìn)行履單。
公司的業(yè)務(wù)發(fā)展有一個(gè)變化過程,一開始只提供聚合外賣服務(wù),后來(lái)進(jìn)一步提供小程序App 下單服務(wù)。你可以發(fā)覺,整個(gè)訂單處理的構(gòu)架也是隨著業(yè)務(wù)的變化而不斷演化的,下面我就為你一一介紹。
聚合外賣訂單構(gòu)架
一開始,我們提供的是聚合外賣服務(wù),相應(yīng)地,系統(tǒng)整體構(gòu)架如下圖所示:
這里一共有三個(gè)系統(tǒng),分別是三方外賣平臺(tái)、門店收銀系統(tǒng)以及外賣系統(tǒng)。其中,外賣系統(tǒng) 是我們開發(fā)的,其他兩個(gè)都是我們要對(duì)接的外部系統(tǒng),接下來(lái),我說(shuō)下系統(tǒng)具體的交互過程。
首先,用戶在三方外賣平臺(tái)(如美團(tuán)、餓了么)下單;然后,我們的外賣系統(tǒng)通過外賣平臺(tái)的 API 拉取用戶的訂單,把訂單落到本地?cái)?shù)據(jù)庫(kù);最后,門店的收銀系統(tǒng)訪問外賣系統(tǒng)提供的插口獲取訂單,在店面內(nèi)部完成履單。當(dāng)然,門店履單后,收銀系統(tǒng)會(huì)反過來(lái)同步訂單狀態(tài)給外賣系統(tǒng),外賣系統(tǒng)再同步訂單狀態(tài)到第三方外賣平臺(tái)。
你可以看見,這里的外賣系統(tǒng)是一個(gè)單體應(yīng)用,內(nèi)部包含外賣同步插口和 POS 接口兩個(gè)模塊。其中,
外賣同步插口
負(fù)責(zé)和第三方外賣平臺(tái)對(duì)接,它主要是針對(duì)不同的外賣平臺(tái)做插口適配;而
POS 接口
負(fù)責(zé)和店面的收銀系統(tǒng)對(duì)接。這兩個(gè)模塊都是使用同一個(gè)外賣訂單數(shù)庫(kù)。
從
數(shù)據(jù)模型
上看,系統(tǒng)的訂單模型也是完全依照外賣訂單的需求設(shè)計(jì)的,訂單狀態(tài)管理也相對(duì)比較簡(jiǎn)單,因?yàn)檫@種訂單都是用戶在第三方外賣平臺(tái)早已完成支付的。所以,我們的外賣系統(tǒng),主要是負(fù)責(zé)管理店面履單過程中帶來(lái)的訂單狀態(tài)變化。
從
系統(tǒng)構(gòu)架
上看,外賣系統(tǒng)從外賣平臺(tái)接單,然后把訂單推送給前面的收銀系統(tǒng),只須要一個(gè)應(yīng)用、一個(gè)數(shù)據(jù)庫(kù)、兩套插口就可以支持,使用單體構(gòu)架才能挺好地滿足外賣的接單需求。
小程序下單構(gòu)架
接下來(lái),隨著公司業(yè)務(wù)的升級(jí),除了提供聚合外賣服務(wù)之外,公司還提供自有小程序的下單服務(wù)。這樣,消費(fèi)者既可以在三方外賣平臺(tái)下單,也可以在品牌自有的小程序里下單。
不同于三方外賣訂單,小程序下單平臺(tái)是一個(gè)完整的業(yè)務(wù)
,它包括小程序用戶注冊(cè)、商品和菜單瀏覽、商品加購(gòu)物車、在線支付等等。相應(yīng)地,這里會(huì)有多個(gè)基礎(chǔ)服務(wù)對(duì)應(yīng)具體業(yè)務(wù)的處理。比如,商品服務(wù)提供前臺(tái)的商品瀏覽功能,支付服務(wù)提供用戶的支付功能,這些基礎(chǔ)服務(wù)都是由獨(dú)立的小程序服務(wù)端負(fù)責(zé)整合,然后提供插口供小程序前端訪問。
當(dāng)用戶在小程序提交訂單后,小程序前端會(huì)調(diào)用服務(wù)端的下單插口,然后服務(wù)端調(diào)用訂單服務(wù),在小程序的訂單庫(kù)里落地訂單?,F(xiàn)在我們?cè)缫淹瓿闪饲芭_(tái)用戶的下單,但后臺(tái)的訂單履行如何處理呢?這里有兩種選擇:
小程序訂單和外賣訂單的處理類似,收銀系統(tǒng)不僅對(duì)接外賣系統(tǒng),同時(shí)也對(duì)接小程序的訂單服務(wù)。但這樣一來(lái),收銀系統(tǒng)須要同時(shí)對(duì)接兩套訂單插口,它須要做大的整修。由于這是第三方的系統(tǒng),我們?cè)趯?shí)踐中很難落地。 我們把小程序訂單當(dāng)成一個(gè)特殊的外賣渠道,把小程序訂單推送到外賣訂單庫(kù)里,最終還是由外賣系統(tǒng)來(lái)對(duì)接收銀系統(tǒng),也就是相當(dāng)于小程序訂單直接借用了外賣訂單的履單通道。
當(dāng)時(shí)因?yàn)轫?xiàng)目上線的時(shí)間比較緊急,同時(shí)從系統(tǒng)穩(wěn)定性的角度出發(fā),避免對(duì)收銀系統(tǒng)做大的整修,我們采用了
第二種形式
,小程序的訂單處理就嫁接在已有的外賣系統(tǒng)上,整個(gè)系統(tǒng)構(gòu)架如下圖所示:
你可以看見,小程序下單平臺(tái)和外賣系統(tǒng)相對(duì)獨(dú)立,同時(shí)為了更好地前饋,小程序訂單服務(wù)和外賣系統(tǒng)之間是通過
消息系統(tǒng)
同步訂單數(shù)據(jù)的。
這個(gè)方案是一個(gè)比較務(wù)實(shí)的選擇,通過復(fù)用外賣訂單的履單通路,我們也實(shí)現(xiàn)了小程序訂單的閉環(huán)處理。表面上看,我們節(jié)約了重新搭建系統(tǒng)的成本,也快速落地了小程序交易這條新業(yè)務(wù)線。
但這樣的構(gòu)架
實(shí)際上是一種妥協(xié)
,在后續(xù)的系統(tǒng)運(yùn)行過程中,給我們帶來(lái)了好多問題:
1. 這里有兩套訂單系統(tǒng),一套針對(duì)小程序訂單,一套針對(duì)外賣訂單。我們曉得,兩者的數(shù)組屬性和訂單狀態(tài)定義都有不同的地方,我們把小程序的訂單硬生玄參套在了外賣訂單的模型里,這樣限制了小程序訂單能力的擴(kuò)充。
2. 小程序訂單處理鏈路過長(zhǎng),從小程序服務(wù)端 -> 訂單服務(wù) -> 小程序訂單數(shù)據(jù)庫(kù) -> 消息系統(tǒng) -> 外賣同步插口 -> 外賣訂單數(shù)據(jù)庫(kù) -> POS 接口 -> 收銀系統(tǒng),一共包含了 8 個(gè)處理環(huán)節(jié),系統(tǒng)整體的性能和可用性都存在很大問題。比如,取餐碼早已從收銀系統(tǒng)同步給了外賣系統(tǒng),但因?yàn)橄㈥?duì)列堵塞,外賣系統(tǒng)不能及時(shí)同步給小程序的訂單服務(wù),這樣造成了小程序用戶不能及時(shí)地看見取餐碼。
3. 為了使兩套訂單系統(tǒng)前饋,我們使用了消息隊(duì)列在兩個(gè)庫(kù)之間同步訂單數(shù)據(jù),這增加了系統(tǒng)整體的穩(wěn)定性。實(shí)踐中,也發(fā)生過多起消息隊(duì)列故障造成的線上車禍。
你可以發(fā)覺,出現(xiàn)這種問題的癥結(jié)是我們把小程序訂單硬塞給外賣系統(tǒng),一方面訂單數(shù)據(jù)模型不匹配,另一方面因?yàn)檫@是兩個(gè)系統(tǒng)的簡(jiǎn)單拼接,導(dǎo)致系統(tǒng)調(diào)用鏈路很長(zhǎng),影響了業(yè)務(wù)的擴(kuò)充和系統(tǒng)的穩(wěn)定性。
那有沒有更好的辦法,能夠把這兩個(gè)系統(tǒng)有機(jī)地結(jié)合上去呢?
接下來(lái),我們就來(lái)看下,如何通過一個(gè)統(tǒng)一的訂單服務(wù)對(duì)兩個(gè)系統(tǒng)進(jìn)行深度的融合,從而靈活地支持多種訂單業(yè)務(wù)。
統(tǒng)一訂單服務(wù)構(gòu)架
這里,我們把小程序訂單服務(wù)提高為統(tǒng)一共享的訂單服務(wù),由它來(lái)落地所有類型的訂單。對(duì)于這個(gè)統(tǒng)一的訂單服務(wù)來(lái)說(shuō),外賣訂單、小程序訂單,或者是其他的新訂單,都是它的下單來(lái)源,所有訂單匯總在訂單服務(wù)里,然后統(tǒng)一提供給收銀系統(tǒng)進(jìn)行履單。具體構(gòu)架如下圖所示:
你可以看見,系統(tǒng)構(gòu)架經(jīng)過調(diào)整,有兩個(gè)大的變化:
1. 原來(lái)外賣和小程序各自有一個(gè)訂單庫(kù),現(xiàn)在合并為了一個(gè)訂單庫(kù),由這個(gè)訂單服務(wù)統(tǒng)一對(duì)外提供訂單數(shù)據(jù)的訪問和狀態(tài)管理。
2. 原來(lái)外賣系統(tǒng)的兩個(gè)模塊“外賣同步插口”和“POS 接口”,升級(jí)為了兩個(gè)獨(dú)立的應(yīng)用。外賣同步插口弄成外賣同步服務(wù),對(duì)接外賣平臺(tái);POS 接口弄成 POS 服務(wù),對(duì)接分店的收銀系統(tǒng)。它們都是通過統(tǒng)一訂單服務(wù)存取訂單數(shù)據(jù)。
經(jīng)過升級(jí),新的構(gòu)架具備了顯著的層次結(jié)構(gòu)本地外賣系統(tǒng),自上而下分為三層:
首先是各個(gè)渠道端,包括三方外賣平臺(tái)、小程序前端和 POS 收銀系統(tǒng);然后,每個(gè)端都有相應(yīng)的服務(wù)端來(lái)對(duì)接,比如外賣同步服務(wù)對(duì)接外賣平臺(tái)、小程序服務(wù)端對(duì)接小程序、POS 服務(wù)對(duì)接收銀系統(tǒng);最后,這些服務(wù)端都統(tǒng)一調(diào)用底層的訂單服務(wù)。
在這個(gè)構(gòu)架里,如果我們要降低新的下單渠道,就十分便捷,比如要支持 App 下單,我們提供 App 服務(wù)端即可;要新降低后臺(tái)履單方法也十分便捷,比如對(duì)于新的電子卡券類訂單,它不需要經(jīng)過收銀系統(tǒng),可以直接由企業(yè)的 OMS 系統(tǒng)(Order ,訂單管理系統(tǒng))處理,要實(shí)現(xiàn)這樣的業(yè)務(wù),我們只需新降低一個(gè)和 OMS 系統(tǒng)的適配應(yīng)用就可以了。所以,
這里就不僅僅是一個(gè)外賣訂單和小程序訂單的處理平臺(tái),而是升
級(jí)成了一個(gè)完整的全渠道交易平臺(tái)。
同時(shí),訂單處理的鏈路大大減短,從小程序服務(wù)端 -> 訂單服務(wù) -> 訂單數(shù)據(jù)庫(kù) -> POS 服務(wù) -> 收銀系統(tǒng),只有 5 個(gè)節(jié)點(diǎn),相比之前減輕了 3 個(gè)本地外賣系統(tǒng),系統(tǒng)的可用性和端到端的性能得到了大幅度的提高。
最后,統(tǒng)一訂單服務(wù)實(shí)現(xiàn)了統(tǒng)一的訂單屬性定義、統(tǒng)一的訂單狀態(tài)管理,以及訂單數(shù)據(jù)的集中儲(chǔ)存,這對(duì)后續(xù)的 BI 分析和數(shù)據(jù)中臺(tái)建設(shè)十分有幫助。它們處理數(shù)據(jù)時(shí),只須要從一個(gè)訂單庫(kù)拉取數(shù)據(jù),解析一個(gè)訂單數(shù)據(jù)模型就可以了。
中臺(tái)構(gòu)架
上面的統(tǒng)一訂單服務(wù)整合了外賣和小程序的訂單,并且為新的下單渠道預(yù)留擴(kuò)充。按照同樣 的思路,我們可以建立統(tǒng)一的商品服務(wù),同時(shí)滿足外賣和小程序上商品的管理;可以建立統(tǒng) 一的促銷服務(wù),同時(shí)支持線上和線下的促銷活動(dòng);也可以建立統(tǒng)一的庫(kù)存服務(wù),實(shí)現(xiàn)線上和 線下庫(kù)存的同步和共享等等。
通過建立這樣一系列的共享服務(wù),我們就實(shí)現(xiàn)了各個(gè)渠道業(yè)務(wù)規(guī)則和業(yè)務(wù)數(shù)據(jù)的統(tǒng)一管理,
最終我們落地了一個(gè)強(qiáng)悍的業(yè)務(wù)中臺(tái),可以很方便地?cái)U(kuò)充各個(gè)業(yè)務(wù),實(shí)現(xiàn)企業(yè)整體業(yè)務(wù)能力
的復(fù)用。
最后,實(shí)際項(xiàng)目的中臺(tái)構(gòu)架如下圖所示:
在這個(gè)構(gòu)架中,
前端
有 3 個(gè)業(yè)務(wù)場(chǎng)景,分別是小程序點(diǎn)單、App 商城下單、外賣平臺(tái)下單,每個(gè)業(yè)務(wù)場(chǎng)景都有相應(yīng)的
服務(wù)端
負(fù)責(zé)對(duì)接。在各個(gè)服務(wù)端下邊,還有一些
輔助的應(yīng)用
, 如購(gòu)物車、秒殺、拼團(tuán)等等。同時(shí)這兒還有一個(gè)
訂單控制服務(wù)
(Order , OCS),負(fù)責(zé)訂單邏輯的編排以及前后臺(tái)之間的狀態(tài)同步,你可以把它看作是基礎(chǔ)服務(wù)之上的聚合服務(wù)。
再下邊就是核心的
業(yè)務(wù)中臺(tái)
,它由 9 大服務(wù)中心組成,這些中心和商戶內(nèi)部系統(tǒng)進(jìn)行對(duì)接。其中,商品中心和庫(kù)存中心對(duì)接 ERP 系統(tǒng),會(huì)員中心對(duì)接 CRM 系統(tǒng),訂單中心對(duì)接POS 收銀系統(tǒng),這里的對(duì)接分別由對(duì)應(yīng)的適配插件負(fù)責(zé)。
通過這個(gè)訂單業(yè)務(wù)改建落地后的中臺(tái)構(gòu)架,你可以聽到,中臺(tái)由各個(gè)通用的基礎(chǔ)服務(wù)構(gòu)成, 它是相對(duì)標(biāo)準(zhǔn)的;而插件是定做的,具體和每位企業(yè)的后臺(tái)系統(tǒng)有關(guān)。這樣,通過共享服務(wù)和中臺(tái),我們就把企業(yè)內(nèi)部基礎(chǔ)設(shè)施和線上業(yè)務(wù)場(chǎng)景有效地打通了,從系統(tǒng)構(gòu)架的層面,為企業(yè)的全面數(shù)字化變革打下了良好的基礎(chǔ)。
總結(jié)
今天,我從一個(gè)企業(yè)的訂單業(yè)務(wù)變化出發(fā),為你介紹了為何要落地一個(gè)統(tǒng)一的訂單服務(wù), 以及怎樣落地,并通過構(gòu)建一系列類似的共享服務(wù),逐步升級(jí)系統(tǒng)到中臺(tái)構(gòu)架。
相信通過這個(gè)實(shí)際案例,你進(jìn)一步理解了怎樣通過共享服務(wù)和中臺(tái),實(shí)現(xiàn)業(yè)務(wù)能力的復(fù)用, 并能按照公司的業(yè)務(wù)發(fā)展階段,選擇合適的時(shí)機(jī)、合適的構(gòu)架,以接地氣的方法對(duì)系統(tǒng)進(jìn)行逐漸改建。
最后,給你留一道思考題:
目前你的公司有沒有落地共享服務(wù),它是如何逐漸演化過來(lái)的呢?
免責(zé)聲明:部分文章信息來(lái)源于網(wǎng)絡(luò)以及網(wǎng)友投稿,本站只負(fù)責(zé)對(duì)文章進(jìn)行整理、排版、編輯,出于傳遞更多信息之目的,并不意味著贊同其觀點(diǎn)或證實(shí)其內(nèi)容的真實(shí)性,如本站文章和轉(zhuǎn)稿涉及版權(quán)等問題,請(qǐng)作者在及時(shí)聯(lián)系本站,我們會(huì)盡快為您處理。
- 鄉(xiāng)村小鎮(zhèn)外賣騎手的故事:互聯(lián)網(wǎng)快車下的新生活與兼職收入
- 掃碼點(diǎn)餐成電子時(shí)代新常態(tài),消費(fèi)者體驗(yàn)與隱私保護(hù)需平衡
- 了解外賣平臺(tái)發(fā)展前景后,作者發(fā)表看法,技術(shù)推動(dòng)平臺(tái)升級(jí)
- 同城活動(dòng)報(bào)名系統(tǒng):連接你我,開啟無(wú)限可能
- 校園外賣_配送系統(tǒng):打造本地智慧生活服務(wù)的專業(yè) SaaS 系統(tǒng)
- 外賣小程序開發(fā)攻略:從需求明確到平臺(tái)選擇,全方位指南
熱門資訊
- 美團(tuán)外賣的抽成規(guī)則 餓了么抽點(diǎn)比例是多少
- 外賣好評(píng)30字有哪些 常見的外賣評(píng)語(yǔ)大全
- 木屋燒烤價(jià)目表一覽 微信外賣訂餐系統(tǒng)推薦
- 海底撈排隊(duì)取號(hào)微信是多少 海底撈是怎么預(yù)約排隊(duì)
- 如何通過微信掃碼支付找到支付人微信號(hào)?看這里!
- 胡桃里消費(fèi)人均大概是多少錢 二維碼掃碼點(diǎn)餐系統(tǒng)哪個(gè)好用
- 美團(tuán)外賣怎么點(diǎn)兩份?步驟及注意事項(xiàng)??!
- 肯德基優(yōu)惠券怎么獲得 肯德基微信外賣怎么點(diǎn)
- 連鎖收銀系統(tǒng)對(duì)連鎖門店運(yùn)營(yíng)會(huì)有怎么樣的影響?
- 微信公眾號(hào)點(diǎn)餐是怎么實(shí)現(xiàn) 餐飲商家怎么制作外賣訂餐系統(tǒng)