千萬(wàn)級(jí)消息中臺(tái)設(shè)計(jì)的道與術(shù)(上)

8 評(píng)論 9238 瀏覽 77 收藏 14 分鐘

編輯導(dǎo)語(yǔ):作為一名產(chǎn)品架構(gòu)師,你研究過(guò)市面上哪些消息中臺(tái)產(chǎn)品?這些產(chǎn)品在設(shè)計(jì)方面又有怎么樣的獨(dú)到之處?作者分析歸納了消息中臺(tái)的三大設(shè)計(jì)要素,總結(jié)了萬(wàn)級(jí)消息中臺(tái)設(shè)計(jì)的道與術(shù)。

一、為什么要做消息中臺(tái)?

這個(gè)話題說(shuō)起來(lái)很窘,在產(chǎn)品業(yè)內(nèi)紛紛宣布需重新審視中臺(tái)的今天,再談建消息中臺(tái)不免有些下頭。

但其實(shí)是也不是。

以阿里巴巴為例,阿里拆中臺(tái),究其原因,是因?yàn)橹信_(tái)太大,牽一發(fā)而動(dòng)全身,如果中臺(tái)不能做到自我解耦,當(dāng)業(yè)態(tài)產(chǎn)生變化時(shí),它是很難做到快速響應(yīng)業(yè)務(wù)變化。當(dāng)前阿里中臺(tái)對(duì)阿里巴巴仍是其支持天貓、淘寶、聚劃算、1688對(duì)應(yīng)其B2C、C2C、C2B、B2B等各類業(yè)態(tài)平臺(tái)的重要載體,其中訂單、消息、用戶、促銷等共享中心能力不但仍最大限度支撐著阿里巴巴全域業(yè)務(wù)運(yùn)行,還為其留存了千億級(jí)數(shù)據(jù)資產(chǎn)、也為其大數(shù)據(jù)、機(jī)器識(shí)別技術(shù)發(fā)展提供了寶貴基礎(chǔ)。

以茅臺(tái)為例,一方面因?yàn)榫扑袠I(yè)線上滲透率低,對(duì)于強(qiáng)依賴2C內(nèi)數(shù)據(jù)資產(chǎn)沉淀的零售中臺(tái)無(wú)法發(fā)力,另一方面白酒的重度消費(fèi)群體,更多以通過(guò)2B(公司、單位)的方式來(lái)銷售的,這些不是簡(jiǎn)單的線上流程可以替代的,僅就線上部分而言,全域的訂單和營(yíng)銷追蹤在這樣一種業(yè)態(tài)中是很難發(fā)揮最大價(jià)值的,中臺(tái)在其中也只是起到了類MDM的作用,更不談能在這類傳統(tǒng)的業(yè)務(wù)中起到快速響應(yīng)迭代的作用。

而消息中臺(tái)作為一種與業(yè)務(wù)較為獨(dú)立的系統(tǒng),可以做到以下三點(diǎn):

  1. 開發(fā)成本:最大程度的完成消息分發(fā)系統(tǒng)與業(yè)務(wù)系統(tǒng)的解耦,最大程度減少開發(fā)資源的浪費(fèi)與重復(fù)造輪子的問(wèn)題;
  2. 拓展性:與放在業(yè)務(wù)系統(tǒng)單獨(dú)開發(fā)不同,消息中臺(tái)可接入各類消息媒介接口,建立消息模板體系,具備極強(qiáng)橫向擴(kuò)展屬性;
  3. 適應(yīng)性:與營(yíng)、促銷和訂單中臺(tái)等需結(jié)合業(yè)務(wù)做三開的產(chǎn)品不同,消息中臺(tái)對(duì)于各種業(yè)態(tài)有極強(qiáng)的適應(yīng)性,這也是得力于其僅僅承擔(dān)了業(yè)務(wù)當(dāng)中消息分發(fā)的能力;

二、消息的三大要素

講完了消息中臺(tái)的價(jià)值,下面我們簡(jiǎn)要談?wù)勏⑦@個(gè)東西。

1. 消息的本質(zhì)

大家可以想一想,正如促銷系統(tǒng)本質(zhì)是一個(gè)改價(jià)系統(tǒng)一樣,消息系統(tǒng)的本質(zhì)是什么?這個(gè)問(wèn)題其實(shí)可以通過(guò)標(biāo)定我們?nèi)粘I钪邢⑹褂脠?chǎng)景的固定要素來(lái)理解。

從前沒(méi)有電話的時(shí)候我們使用信鴿進(jìn)行通訊,傳遞消息的人需要將信綁在鴿子腿上,這是消息內(nèi)容。而鴿子知道旅程去返地點(diǎn),這是確認(rèn)了消息發(fā)送的對(duì)象,也確定了發(fā)送方的信息。鴿子送信本身是一種媒介,如果不采取鴿子,還可以用馬匹傳遞信件,可以類比于選擇用微信還是打電話去告訴某人他被開除了一樣。而消息策略則指的是要選擇半日達(dá)、次日達(dá)或者是否需要其他方式補(bǔ)送信件之類的傳遞方法。

基于上面的一個(gè)描述,我們可以看到在整個(gè)消息分發(fā)的流程中,從角色上來(lái)看只存在三個(gè)對(duì)象:即發(fā)送方、媒介方、觸達(dá)方

從要素上來(lái)看:消息內(nèi)容、消息對(duì)象、消息策略。

所以其實(shí)消息分發(fā)系統(tǒng)其實(shí)只是一個(gè)快遞系統(tǒng),想要發(fā)送消息的用戶只需要在系統(tǒng)中輸入消息內(nèi)容、消息對(duì)象、選擇好消息媒介、設(shè)置好消息策略(可跳過(guò))就可以將信息這個(gè)東西快遞到指定的觸達(dá)方。

三、消息中臺(tái)的雜與簡(jiǎn)

1. 消息中臺(tái)的簡(jiǎn)

前面講了消息的三大要素:消息內(nèi)容、消息對(duì)象、消息策略,其實(shí)我們發(fā)現(xiàn)在消息分發(fā)的全流程看來(lái)似乎涉及對(duì)象很是簡(jiǎn)單,但是一個(gè)成熟的消息中臺(tái)產(chǎn)品真的是這樣簡(jiǎn)單架構(gòu)起來(lái)的嗎?

答案顯然是否定的,其實(shí)在這里可以借用梭羅的一句話“當(dāng)我們用教義問(wèn)答法的方式,思考著什么是人生的宗旨,什么是生活的真正的必需品與資料時(shí),仿佛人們還曾審慎從事地選擇了這種生活的共同方式,而不要任何別的方式似的。”來(lái)隱喻我們我們?cè)诋a(chǎn)品設(shè)計(jì)當(dāng)中的一些基本原則,即我們?cè)谧霎a(chǎn)品設(shè)計(jì)時(shí)候必須錨定一些最普適的原則,例如上述所言的消息要素,而在設(shè)計(jì)時(shí)候卻又要審慎地去設(shè)計(jì)與拓展性相關(guān)的功能。

而為什么說(shuō)這樣一個(gè)產(chǎn)品是簡(jiǎn)單的呢?

主要有以下幾個(gè)原因:

  1. 系統(tǒng):產(chǎn)品與業(yè)務(wù)系統(tǒng)本身是幾乎零耦合的狀態(tài),不需和業(yè)務(wù)系統(tǒng)進(jìn)行大量數(shù)據(jù)交互,以PC來(lái)比喻,其實(shí)消息中臺(tái)扮演了PC的CPU和內(nèi)存兩個(gè)PART的作用,甚至連INPUT也是由消息中臺(tái)自己來(lái)扮演,業(yè)務(wù)系統(tǒng)僅僅是調(diào)用消息中臺(tái),揮一揮衣袖,把云彩全部留在了這里;
  2. 業(yè)務(wù):業(yè)務(wù)層上涉及業(yè)務(wù)角色較少,所需要進(jìn)行的功能設(shè)計(jì)較少,大部分是以一種上帝視角或者說(shuō)管理員視角進(jìn)行全流程的消息功能設(shè)計(jì)便可以完成全流程功能貫通,在有業(yè)務(wù)角色介入的時(shí)候,只需要對(duì)某些能力加以封裝就基本完全滿足對(duì)于業(yè)務(wù)的個(gè)性需求了。

2. 消息中臺(tái)的雜

前面談完了消息中臺(tái)的簡(jiǎn),下面我們來(lái)談一談消息中臺(tái)的雜。

前面談了它的簡(jiǎn)單之處,是在功能架構(gòu)時(shí)的要素少,角色少,功能較少,數(shù)據(jù)交互少等幾大原因,但是在進(jìn)行業(yè)務(wù)和產(chǎn)品架構(gòu)設(shè)計(jì)中,我們發(fā)現(xiàn)在也有他的復(fù)雜性存在:

(1)接口統(tǒng)一

一般的系統(tǒng)設(shè)計(jì)是需要與業(yè)務(wù)系統(tǒng)有耦合的,但是我們?cè)谠O(shè)計(jì)消息中臺(tái)產(chǎn)品時(shí),從架構(gòu)之初就確定了其只承擔(dān)消息分發(fā)能力,所以其模式是完全與業(yè)務(wù)系統(tǒng)解耦的一種類型,這個(gè)模式可以這樣理解:

從圖上來(lái)看,業(yè)務(wù)系統(tǒng)在進(jìn)行請(qǐng)求時(shí),每一次請(qǐng)求的渠道和模板都會(huì)有異同,若是各自獨(dú)立進(jìn)行接口設(shè)計(jì)的話,屆時(shí)API的對(duì)接一定是存在巨大隱患的,另一方面,接口需要設(shè)計(jì)哪一些關(guān)鍵參數(shù)也是維持接口統(tǒng)一性的重要保障。

基于上述的分析,筆者建議在消息中臺(tái)建立標(biāo)準(zhǔn)接口機(jī)制,規(guī)范接口的入?yún)?,如筆者所參與的系統(tǒng)是將:

  • 規(guī)范入?yún)椋合⒛0錓D、變量PARAM
  • 入?yún)⑥D(zhuǎn)義有:模板ID轉(zhuǎn)義、消息對(duì)象ID轉(zhuǎn)義、消息內(nèi)容變量PARAM轉(zhuǎn)義

這些放在了接口當(dāng)中,除了一些基礎(chǔ)的鑒權(quán)入?yún)⒅?,其?shí)只保留了兩個(gè)較為有效的入?yún)ⅰ?/p>

做到了這些,消息發(fā)送的入口便統(tǒng)一,接口具備擴(kuò)展性,無(wú)需任何改動(dòng),即可實(shí)現(xiàn)消息通道的橫向擴(kuò)充。

(2)消息模板與組合模板

  • 為什么要做消息模板
  • 什么又是組合模板?

按道理不存在消息模板機(jī)制的話,業(yè)務(wù)系統(tǒng)在調(diào)用時(shí)候,是需要傳遞包括一條完整消息內(nèi)容的全部相關(guān)參數(shù),若是我們將包括像渠道、內(nèi)容(變量、文本)、對(duì)象等之類的都打包城一個(gè)包裹,給他命名一個(gè)ID,這樣在下次業(yè)務(wù)系統(tǒng)需要調(diào)用的時(shí)候不就可以直接使用了嗎?

其實(shí)這里我們也可以看看微信的模板消息是怎么做的:

(但是這里也要考慮微信模板消息的特殊性,因?yàn)槠洳皇侵信_(tái)架構(gòu)的產(chǎn)品,所以調(diào)用的時(shí)候還是需要傳參接收ID等內(nèi)容,中臺(tái)系統(tǒng)便其實(shí)不需要這樣進(jìn)行設(shè)計(jì)了)

既然已經(jīng)有了模板的概念了,為什么還要有組合模板呢?其實(shí)很容易理解,我們前面所談的消息模板都是掛在渠道下面的,也就是說(shuō)一個(gè)模板只可以對(duì)應(yīng)一個(gè)渠道,如果出現(xiàn)同樣的分發(fā)內(nèi)容,分發(fā)對(duì)象需要分發(fā)兩次的情況,那不就意味著業(yè)務(wù)系統(tǒng)要調(diào)用兩個(gè)模板嗎?所以我們我可以把兩個(gè)模板打包到一起形成一個(gè)新的模板,這樣一種方式在某些中臺(tái)里也稱作通道授權(quán)。

(3)通道與模板:什么是通道?(業(yè)內(nèi)也有各自YY的取名)

通道指的是業(yè)務(wù)維度的分發(fā)劃分,比如營(yíng)銷中心營(yíng)銷通道,供應(yīng)鏈通知通道這一類的;那為什么要提出這樣一個(gè)概念呢?其實(shí)也很容易理解,消息中臺(tái)按照前面的論述是被設(shè)計(jì)出來(lái)了,但是我們會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題:這么多消息模板怎么管理?

其實(shí)很顯然,不管我們的消息中臺(tái)怎么解耦,最終它都會(huì)被帶上業(yè)務(wù)屬性。我們不妨再把這些模板聚一個(gè)類,用于某個(gè)目的的模板都放在這樣一個(gè)業(yè)務(wù)通道下面,這樣一個(gè)賬號(hào)可以附帶多個(gè)通道,每個(gè)通道也可以覆蓋多個(gè)模板,這樣子后期再做子賬號(hào)體系打通和權(quán)限資源樹配置的時(shí)候也恰好可以做到一一對(duì)應(yīng),一舉兩得。

(4)功能拓展

  • 從終局來(lái)看,消息三大要素每一部分都是可以單獨(dú)拎出來(lái)做成分布式的功能模塊的;
  • 以對(duì)象要素為例,就可以拆解出黑、白名單、周期活躍用戶篩選等一系列功能;
  • 以消息數(shù)據(jù)查看為例,通道覆蓋率、折損分析 、發(fā)送趨勢(shì)、點(diǎn)擊率等進(jìn)行一系列運(yùn)營(yíng)功能也是能輕易被構(gòu)建出來(lái);
  • 以消息策略為例,也可以形成如下圖所示的一系列拓展。

(5)技術(shù)指標(biāo)

筆者當(dāng)前所處公司對(duì)于該塊業(yè)務(wù)域的并發(fā)量推送與查詢的數(shù)量級(jí)并不高,當(dāng)前并不存在所述的這些風(fēng)險(xiǎn),但是當(dāng)消息媒介渠道逐漸拓展,接入系統(tǒng)增加,系統(tǒng)調(diào)用頻率增高的情況產(chǎn)生時(shí),則不得不考慮這些問(wèn)題了。對(duì)于即將產(chǎn)生的這些問(wèn)題,也要不斷和技術(shù)溝通,識(shí)別哪些需要異步,哪些需要做分布式設(shè)計(jì),是否又需要做讀寫分離,伴隨著業(yè)務(wù)的不斷豐富去迭代我們的技術(shù)框架。

四、消息中臺(tái)的困局與出路

這一部分的內(nèi)容,我就放在下篇來(lái)講吧。

歡迎訂閱,下篇:《千萬(wàn)級(jí)消息中臺(tái)設(shè)計(jì)的道與術(shù)(下)》。

注:以上內(nèi)容與我的任職機(jī)構(gòu)無(wú)關(guān),不代表任職機(jī)構(gòu)意見(jiàn),也不涉及投資建議。

 

本文由 @羅鏞 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載。

題圖來(lái)自 Pexels,基于CC0協(xié)議。

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 期待下篇,還有嗎

    來(lái)自江蘇 回復(fù)
  2. 大神,等你的下篇!

    來(lái)自江蘇 回復(fù)
  3. 寫的太好了!?。偤孟肓私膺@一塊,求更哇?。?!

    回復(fù)
  4. 催更!感謝

    來(lái)自江蘇 回復(fù)
  5. 催更!感謝

    回復(fù)
  6. 催更~ 感謝??

    來(lái)自上海 回復(fù)
  7. 寫的非常不錯(cuò),贊一個(gè)

    來(lái)自廣東 回復(fù)
  8. 不錯(cuò),學(xué)習(xí)了,趕緊寫消息中臺(tái)的下部分

    來(lái)自四川 回復(fù)