二維火營銷底層實踐

2021-09-13 18:48:08 字數 2704 閱讀 1044

營銷是餐飲行業非常重要的一環,如何通過各種營銷幫助商戶實現老客回流,潛在客戶的推廣引流,以及店內客流的數位化轉變和資料沉澱等,是餐飲行業公司的核心競爭力。隨著二維火會員營銷業務的快速發展,營銷活動業務需求越來越多,每次對接營銷活動需求,對於開發人員來說,重新開發一套,都是乙個費時費力,成本巨大的工作,上線的活動伴隨著也越來越難維護,乙個小改動也會導致系統不穩定。如何快速,靈活的去對接活動需求以及容易維護是當前面臨的乙個挑戰。

為了應對這個挑戰,會員營銷底層研發團隊啟動了營銷底層改造專案,主要圍繞以下幾個方面進行展開:

在明確改造點之後,我們就開始了營銷底層系統的設計,具體的系統架構圖如下所示。下面我們開始逐層的介紹。

框架流程統一

在框架流程統一之前,每個活動單獨一套**,因為歷史原因,是由不同開發人員去開發。導致**風格不一,**鏈路也很長,後期維護人員比較難維護,乙個小改動可能也會造成鏈路不穩定,引出其他問題。

因此,我們根據不同活動流程,梳理核心主鏈路,統一流程,不同活動統一流程接入。以下是部分時序圖。

這裡簡單說下典型的兩條主鏈路:

發布活動場景下:

發放優惠場景下:

規則解析引擎

之前規則條件判斷這塊比較分散,規則條件判斷與其他系統**耦合在一起,改動起來也比較容易出問題。另一方面,每乙個營銷活動的接入都涉及到規則的開發,規則唯一不變的就是"多變"。出於規則統一的角度,以及後續平台規則可以讓業務運營方定製化配置角度的考慮,引入了規則解析引擎。

規則引擎這塊還是比較複雜的,不過目前我們規則這塊還是比較簡單的,主要還是涉及到condition條件與action動作。舉個例子,比如判斷是否新人,送禮品。

規則的判斷通過condition註解標記方法去控制,規則通過的話,觸發相應action標記的方法行為。

上面只是個簡單的舉個例子。實際上規則判斷這塊,沒這麼簡單。一般規則涉及到多個規則組合觸發行為,以及多個規則有乙個規則通過(可能涉及優先順序@priority),就觸發行為,後續規則直接中斷等。目前營銷底層規則策略主要還是單個以及組合策略,還是比較簡單的, 可以滿足現在的需求。後面隨著業務越來越複雜,以及營銷活動平台開放出去的發展,運營配置化等,我們會去考慮規則動態化配置,規則策略的完善,規則表示式解析等等。

優惠元件化以及優惠自動化

優惠元件化,主要還是出於模組重用性以及**復用性考慮,優惠之間如何執行互不影響,各自維護自己的業務以及保持自己的穩定性。目前我們優惠元件主要還是包含下面這幾個:

這裡提到的自動化主要還是指,基於規則觸發優惠自動化傳送這塊。上面已經提到過,營銷活動業務自己定義一些規則,判斷使用者是否傳送優惠,主要先經過規則解析引擎,滿足後觸發底層優惠傳送介面。後續給使用者傳送什麼優惠,以及傳送多少,失敗重試以及補償,底層自動化處理,業務方不用關心,只需要簡單觸發一下。當然我們也開放出去了介面,支援業務方去自定義傳送什麼,流水記錄是否記錄等。

工具化目前我們營銷業務這塊正在快速發展中,隨之伴隨著線上大量業務的問題諮詢以及答疑。開發往往在這方面花費不少時間與精力去排查。工具化就是基於此誕生的,簡單說就是用產品的思維開發出這套工具,讓工程團隊等去查詢問題,知道問題出在哪一步,極大解放出來了研發。

上面說到我們目前框架流程統一,這樣其實讓工具化更好統一了。那究竟工具化是怎樣的呢?

比如,優惠發放整個流程節點如下圖:

工程團隊在使用工具化後台的話,要檢視某個使用者的權益發放情況。輸入店鋪編碼與手機號,出現活動列表,選擇商家相應的活動,進入到類似上面的節點圖。工程團隊可以檢視每一步的執**況,比如step3,觸發領卡動作,可能這一步會失敗,那結點上會顯示為什麼失敗,具體原因可能是會員卡刪除了還是其他的什麼。簡單說就是整個業務流程視覺化了,可以看每乙個結點的執**況,當然業務方可以自行定義結點,在流程展示出來。不僅僅對於工程團隊,對於研發來說,其實也很大減輕了排查問題的效率。

從技術層面考慮,工具化實現,除了本身框架流程自行會記錄下來關鍵資料,我們在資料底層提供了相應的服務介面暴露開放出來,可以讓業務自行自定義結點,埋點記錄下來業務執行資料。目前業務結點關鍵資料是儲存在tidb,主要還是因為tidb既能像mysql一樣便於使用,能讓業務幾乎不用做任何修改,又能滿足分布式的儲存需求,同時還能保證查詢效能。這裡提到一點,隨著業務的接入,這個介面後期可能qps還是很高的,我們目前還是通過mq去削峰,以及併發控制。

營銷底層其實很大程度上提高研發效率,以及系統穩定性。除了上面提到的一些點以外,營銷底層其實還做了很多,比如動態日誌級別輸出等。後續隨著業務的遷入,營銷底層後面主要還是更多的考慮怎麼去完善底層鏈路,規則策略,動態配置化,以及平台化開放等。

最後插播乙個招聘廣告,會員營銷部門是乙個崇尚自由、開放、互通的部門,對營銷產品開發感興趣的可以發郵件給 [email protected]

如果你覺得我分享的東西有所幫助,不妨關注下。

搜尋二維矩陣 II DFS的實踐

編寫乙個高效的演算法來搜尋 m x n 矩陣 matrix 中的乙個目標值 target。該矩陣具有以下特性 每行的元素從左到右公升序排列。每列的元素從上到下公升序排列。dfs 標記 只要懂dfs的感覺這個題還是蠻好解決的,也算是dfs裡面簡單的一種了 從左上角開始沿著右側 下側進行dfs 這樣保證...

二維陣列與二維指標

1.二維陣列的儲存是線性的,可以通過一維指標的方式訪問。如一下 int map 5 5 int mapd map 0 0 則 map i j mapd i 5 j 而利用二維陣列線性儲存的特性,可以將二維陣列當作一維指標方便的在函式之間傳遞 如 將乙個二維陣列賦值給乙個動態二維陣列,引數設定為一維指...

二維指標和二維陣列

二維指標和二維陣列有三種形式 1,type ptr 2,type ptr或者type prt 3,type prt 三種形式意思相近,也有區別。首先三種形式都能表示二維的資料結構。1,type ptr 表示乙個指向指標的指標 但是在一開始宣告的時候 type ptr ptr到底指向幾個指標是不知道的...