轉(zhuǎn)載字?聊聊架構(gòu)?微信公眾號
蘇寧集團(tuán)業(yè)務(wù)涉獵非常廣,主要包括:蘇寧易購里初,蘇寧金融啃勉,蘇寧體育,蘇寧文創(chuàng)双妨,蘇寧置業(yè)淮阐,蘇寧門店等業(yè)務(wù)領(lǐng)域叮阅。本文所闡述的是從 2015 年至今,蘇寧金融營銷系統(tǒng)的發(fā)展歷程泣特。蘇寧金融營銷系統(tǒng)不僅支撐了蘇寧金融營銷業(yè)務(wù)浩姥,也支撐了蘇寧易購,蘇寧體育状您,蘇寧門店等部分營銷業(yè)務(wù)勒叠。
一切源頭:業(yè)務(wù)發(fā)展
2015 年至今,為了適應(yīng)蘇寧集團(tuán)的發(fā)展膏孟,蘇寧金融營銷業(yè)務(wù)方陸續(xù)提出了很多目標(biāo)眯分。
可以總結(jié)為五大功能目標(biāo):
建立營銷活動全流程的閉環(huán)管控。
現(xiàn)有的滿減柒桑,立減弊决,返券等促銷形式遠(yuǎn)不夠,支持更多的營銷形式魁淳。
實(shí)現(xiàn)營銷活動數(shù)據(jù)可視化飘诗。
實(shí)現(xiàn)從活動申請、預(yù)算先改、結(jié)算疚察、到效果評估的自動化。
與蘇寧易購仇奶,蘇寧體育貌嫡,蘇寧門店等進(jìn)行深度配合。
為了適應(yīng)業(yè)務(wù)的發(fā)展该溯,解決業(yè)務(wù)的需求岛抄,我們團(tuán)隊開啟了蘇寧金融營銷系統(tǒng)重構(gòu)之路。
混沌時代:蘇寧金融營銷系統(tǒng)架構(gòu) V1.0
2015 年狈茉,系統(tǒng)架構(gòu) V1.0 時代夫椭,蘇寧金融營銷系統(tǒng)包括:促銷服務(wù)、電子券服務(wù)氯庆、任務(wù)服務(wù)蹭秋。
促銷服務(wù):提供促銷活動查詢、扣減堤撵、管理仁讨、規(guī)則處理、活動配置等功能实昨。
電子券服務(wù):提供電子券管理洞豁、查詢、使用、退券丈挟、規(guī)則處理刁卜、活動配置等功能。
任務(wù)服務(wù):提供判斷用戶是否滿足任務(wù)的規(guī)則曙咽,且事后發(fā)放營銷福利的功能蛔趴。
經(jīng)過梳理上述系統(tǒng)的上下文,應(yīng)用架構(gòu)例朱,核心功能夺脾。針對架構(gòu)方面分析出如下問題:
1. 職責(zé)不清晰。
當(dāng)時系統(tǒng)架構(gòu)茉继,電子券服務(wù)與促銷服務(wù)咧叭,互相調(diào)用,兩者的上下游系統(tǒng)基本一致烁竭。其實(shí)電子券服務(wù)和促銷服務(wù)都是一種營銷“實(shí)體”菲茬,它們只需要具備“實(shí)體”管理的基本功能,而且相對獨(dú)立派撕,各自為政婉弹。
2. 缺乏統(tǒng)一的活動管理。
當(dāng)時系統(tǒng)架構(gòu)终吼,電子券服務(wù)和促銷服務(wù)都包含活動管理和配置镀赌,并且分散管理。
這種情況下际跪,無法滿足活動全流程閉環(huán)管控商佛,活動申請、預(yù)算控制等需求姆打。
3. 缺乏營銷數(shù)據(jù)分析良姆。
當(dāng)時系統(tǒng)架構(gòu),所有的營銷行為數(shù)據(jù)都未記錄幔戏,或者是分散記錄玛追。
這種情況下,無法滿足營銷數(shù)據(jù)可視化闲延,活動效果數(shù)據(jù)分析等需求痊剖。
規(guī)則引擎引發(fā)的“血案”。
規(guī)則引擎及規(guī)則資格校驗(yàn)是一個計算資源消耗非常大的功能垒玲。營銷前臺陆馁、促銷服務(wù)、電子券侍匙、任務(wù)服務(wù)都包含此功能氮惯。隨著活動形式的持續(xù)增長,消耗的計算資源也持續(xù)上升想暗。多個系統(tǒng)同時申請資源妇汗,導(dǎo)致資源的浪費(fèi)。尤其是 818说莫、1111 大促期間杨箭。資源申請需要與資源管理部進(jìn)行博弈,有時會引發(fā)‘血案’储狭。
大刀闊斧:蘇寧金融營銷系統(tǒng)架構(gòu) V2.0
對癥下藥
2015 年至今互婿,針對系統(tǒng)架構(gòu)問題,系統(tǒng)不斷的迭代辽狈,我們采用了很多針對性的解決方法慈参。
1. 分工明確化。
電子券服務(wù)和促銷服務(wù)作為一種營銷“實(shí)體”刮萌,它們只需要具備“實(shí)體”管理的基本功能驮配,而且相對獨(dú)立。在它們的上層抽出一個統(tǒng)一營銷服務(wù)着茸,統(tǒng)一的對外服務(wù)壮锻。
2. 建設(shè)統(tǒng)一活動中心。
建設(shè)統(tǒng)一活動中心涮阔,包括:營銷活動管理猜绣、營銷活動審批、預(yù)算管控敬特、促銷狀態(tài)管理掰邢、促銷結(jié)算等。滿足活動全流程閉環(huán)管控伟阔,活動申請尸变、預(yù)算控制等需求。
3. 建設(shè)營銷數(shù)據(jù)中心减俏。
建設(shè)營銷數(shù)據(jù)中心恤煞,包括:營銷行為數(shù)據(jù)都采集,存儲茅姜,分析桩匪,報表。滿足營銷數(shù)據(jù)可視化历筝,活動效果數(shù)據(jù)分析等需求酗昼。
4. 拆分出規(guī)則引擎。
獨(dú)立的規(guī)則引擎系統(tǒng)梳猪,承載上游所有促銷形式的規(guī)則計算麻削,節(jié)省資源蒸痹。
整體“藥方”
現(xiàn)在,蘇寧金融營銷系統(tǒng)架構(gòu) V2.0 時代呛哟,總體架構(gòu)圖如下叠荠,蘇寧金融營銷系統(tǒng)以整體的形式一致對外服務(wù),不再是“單干”扫责。
圖 1:整體系統(tǒng)架構(gòu) V2.0
核心系統(tǒng)包括:營銷統(tǒng)一服務(wù)榛鼎、促銷服務(wù)、電子券服務(wù)鳖孤、任務(wù)服務(wù)者娱、商品詳情頁促銷前置服務(wù)、營銷規(guī)則引擎苏揣、營銷規(guī)則資格校驗(yàn)黄鳍、營銷活動中心、營銷數(shù)據(jù)中心平匈。
營銷統(tǒng)一服務(wù):促銷查詢际起、扣減;電子券查詢吐葱、使用街望、退券等統(tǒng)一對外服務(wù)。
促銷服務(wù):提供促銷活動查詢弟跑、扣減等功能灾前。
電子券服務(wù):提供電子券管理、查詢孟辑、使用哎甲、退券等功能。
任務(wù)服務(wù):提供判斷用戶是否滿足任務(wù)的規(guī)則饲嗽,且事后發(fā)放營銷福利的功能炭玫。
商品詳情頁促銷前置服務(wù):應(yīng)對流量較高的商品詳情頁、搜索等頁面提供的促銷查詢服務(wù)貌虾。
營銷規(guī)則引擎:提供促銷吞加、電子券、任務(wù)等規(guī)則引擎處理服務(wù)
營銷規(guī)則資格校驗(yàn):提供促銷尽狠、電子券衔憨、任務(wù)等規(guī)則資格校驗(yàn)服務(wù)
營銷活動中心:包括營銷活動管理、營銷活動審批袄膏、預(yù)算管控践图、促銷狀態(tài)管理、促銷結(jié)算沉馆、規(guī)則分發(fā)码党、促銷活動下發(fā)德崭。
部分系統(tǒng)上下文如下:
圖 2:統(tǒng)一營銷服務(wù)系統(tǒng)上下文 V2.0
圖 3: 任務(wù)服務(wù)系統(tǒng)上下文 V2.0
圖 4: 商品詳情頁促銷前置服務(wù)系統(tǒng)上下文 V2.0
各個突破:解決問題的方法論
自蘇寧金融營銷系統(tǒng)建立以來,尤其是 2015 年開始至今揖盘,業(yè)務(wù)迅猛發(fā)展眉厨,團(tuán)隊在實(shí)際系統(tǒng)運(yùn)行過程中,遇到了不少麻煩扣讼,但我們的小伙伴堅忍不拔,各個突破缨叫,讓系統(tǒng)穩(wěn)定的度過每個大促節(jié)點(diǎn)椭符。
1. 用戶流量上升,活動種類增加耻姥,導(dǎo)致規(guī)則引擎與資格校驗(yàn)性能下降
2015 年销钝,同一時間同時生效的營銷活動已經(jīng)接近 300 個。由于蘇寧集團(tuán)業(yè)務(wù)復(fù)雜琐簇,涉及線上蒸健,線下。因此婉商,業(yè)務(wù)的活動種類訴求會越來越多似忧。另一方面,蘇寧金融與蘇寧易購合作之后丈秩,用戶訪問量爆發(fā)性增長盯捌,業(yè)務(wù)及產(chǎn)品層面上,越來越重視用戶體驗(yàn)蘑秽。
2015 年饺著,蘇寧金融營銷系統(tǒng)架構(gòu) V1.0 時代,未對營銷場景做細(xì)致的區(qū)分肠牲,導(dǎo)致每次匹配相關(guān)規(guī)則是全量匹配幼衰,全量匹配結(jié)束后的資格校驗(yàn)也是全量校驗(yàn),導(dǎo)致單人次請求后缀雳,系統(tǒng)過濾規(guī)則數(shù)據(jù)量較大渡嚣,并且校驗(yàn)次數(shù)增多,特別是大促中活動增加的情況肥印,單次用戶請求严拒,規(guī)則校驗(yàn)平均需要執(zhí)行大約 1000 次以上方能匹配到用戶實(shí)際能夠享受的營銷活動信息。
圖 5:營銷活動規(guī)則校驗(yàn)流程 V1.0
另外竖独,規(guī)則引擎和資格校驗(yàn)服務(wù)未獨(dú)立裤唠,促銷服務(wù)、電子券服務(wù)莹痢、任務(wù)服務(wù)只能不斷通過橫向擴(kuò)容种蘸,提高系統(tǒng)并發(fā)能力墓赴。顯然這樣做,一方面資源浪費(fèi)航瞭,另一方面當(dāng)活動種類增加后诫硕,單機(jī)的計算耗時上升,橫向擴(kuò)容能夠提升的并發(fā)能力有限刊侯。
現(xiàn)在章办,蘇寧金融營銷系統(tǒng)架構(gòu) V2.0 時代,統(tǒng)一活動中心配置營銷活動滨彻,且區(qū)分實(shí)時營銷藕届、事后營銷(任務(wù)),同時區(qū)分線上活動亭饵、線下活動休偶、全渠道活動。規(guī)則服務(wù)在接收營銷活動配置后根據(jù)相關(guān)配置來生成不同的規(guī)則文件辜羊,以此減少規(guī)則匹配中的數(shù)據(jù)量問題踏兜,并且根據(jù)不同類型和渠道分開存儲資格校驗(yàn)數(shù)據(jù)。統(tǒng)一營銷服務(wù)和任務(wù)服務(wù)統(tǒng)一對外服務(wù)八秃,請求數(shù)據(jù)區(qū)分系統(tǒng)碱妆、及區(qū)分線上、線下活動昔驱,降低規(guī)則匹配和資格校驗(yàn)的復(fù)雜度山橄。
當(dāng)然在系統(tǒng)架構(gòu)層面上,還有規(guī)則服務(wù)獨(dú)立舍悯。規(guī)則服務(wù)的資源擴(kuò)容航棱,完全根據(jù)規(guī)則的性能需求。
圖 6:營銷活動規(guī)則校驗(yàn)流程 V2.0
2. 活動總數(shù)的校驗(yàn)存在數(shù)據(jù)熱點(diǎn)問題
2016 年萌衬,蘇寧金融營銷系統(tǒng)架構(gòu) V1.0 時代饮醇,有些活動允許所有會員參與,但有總次數(shù)秕豫、金額限制朴艰。這種類型的活動,每次用戶請求必須校驗(yàn)混移,為了避免數(shù)據(jù)不一致性祠墅,總次數(shù)、金額需要集中存儲歌径,根據(jù) key= 活動 ID 存儲到某臺緩存設(shè)備毁嗦,一旦活動訪問流量比較大,那么就會導(dǎo)致緩存熱點(diǎn)問題回铛。還有些配置了月次數(shù)狗准、金額克锣;周次數(shù)、金額腔长;日次數(shù)袭祟、金額的活動,均會出現(xiàn)緩存熱點(diǎn)問題捞附。
現(xiàn)在巾乳,蘇寧金融營銷系統(tǒng)架構(gòu) V2.0 時代,緩存設(shè)備申請一主兩從多組方式鸟召,并且設(shè)置 slave 參與讀模式減少讀取熱點(diǎn)胆绊,而且通過類型及渠道的緩存分組,提高系統(tǒng)整體的緩存服務(wù)能力药版。
圖 7:數(shù)據(jù)熱點(diǎn)解決方案 V2.0
3. 面向會員的 6 個唯一資格校驗(yàn)問題
2016 年辑舷,蘇寧金融營銷系統(tǒng)架構(gòu) V1.0 時代喻犁,參與營銷活動的會員的唯一校驗(yàn)槽片,活動參與次數(shù)限定到個人。手機(jī)號肢础、帳號还栓、設(shè)備、身份證传轰、銀行卡剩盒、銀行綁定手機(jī)號。
針對此種校驗(yàn)慨蛙,單次請求數(shù)據(jù) 6 個唯一條件都需要一一進(jìn)行判斷辽聊,這樣就對同一個活動增加了跟緩存交互次數(shù)∑谄叮活動越多跟匆、應(yīng)用跟緩存交互次數(shù)越多,耗時就越長通砍,系統(tǒng)性能必然降低。同時為了保證相關(guān)唯一校驗(yàn)的可靠性封孙,系統(tǒng)在處理中還對唯一數(shù)據(jù)入庫處理,增加了系統(tǒng)負(fù)擔(dān)虎忌。
現(xiàn)在泡徙,系統(tǒng)架構(gòu) V2.0 時代锋勺,通過合并請求蚀瘸,同一個活動相關(guān)的唯一性查詢進(jìn)行合并庶橱,減少跟緩存的請求次數(shù),且應(yīng)用的緩存采用持久化策略苏章。
4. 活動存儲數(shù)據(jù)已經(jīng)約 1 億
2017 年,蘇寧金融營銷系統(tǒng)架構(gòu) V1.0 時代枫绅,做了分表處理,由于營銷活動較多并淋,用戶使用較多。促銷活動雖然做了歷史數(shù)據(jù)規(guī)整處理县耽,但仍然存在單表數(shù)據(jù)量過大問題,導(dǎo)致對表操作產(chǎn)出性能瓶頸兔毙;尤其是撤銷支付功能。撤銷支付功能為了能取消用戶占用資格澎剥,還需要對用戶占用的資格數(shù)據(jù)進(jìn)行回退,那么撤銷操作會涉及歷史表哑姚,而歷史表數(shù)據(jù)量非常大,已經(jīng)約 1 億叙量,因此影響到整體的性能。
現(xiàn)在宛乃,蘇寧金融營銷系統(tǒng)架構(gòu) V2.0 時代,活動業(yè)務(wù)數(shù)據(jù)進(jìn)行業(yè)務(wù)分庫分表操作(大約分為 10 個庫征炼,約 2000 張表),通過這樣的分配減少單表數(shù)據(jù)量谆奥,提高數(shù)據(jù)庫并發(fā)處理能力眼坏。
圖 8:數(shù)據(jù)存儲分片方案 V2.0
底盤扎實(shí):完善的基礎(chǔ)設(shè)施
2015 年至今,蘇寧金融營銷系統(tǒng)重構(gòu)宰译,居于微服務(wù)架構(gòu)思路檐蚜。對于微服務(wù)架構(gòu),有人認(rèn)為是銀彈沿侈,有人認(rèn)為是焦油坑闯第。
認(rèn)為是焦油坑的人,一般都陷入微服務(wù)架構(gòu)的幾個坑缀拭,第一咳短,服務(wù)數(shù)量太多,團(tuán)結(jié)效率下降蛛淋;第二咙好,調(diào)用鏈路太長,性能下降褐荷;第三勾效,調(diào)用鏈太長,問題定位困難叛甫;第四层宫,沒有自動化支持,無法快速交付合溺∽涿埽總之缀台,基礎(chǔ)設(shè)施不健全棠赛。
幸運(yùn)的是,對于蘇寧金融團(tuán)隊來說膛腐,微服務(wù)架構(gòu)被認(rèn)為是銀彈睛约。這得歸功于蘇寧金融研發(fā)團(tuán)隊小伙伴們,提供了完整的基礎(chǔ)設(shè)施哲身,公共組件辩涝,基礎(chǔ)服務(wù),中間件勘天;解決了微服務(wù)的坑怔揩。
簡單介紹下蘇寧具備的微服務(wù)基礎(chǔ)設(shè)施:
自動化測試:蛙測
自動化部署(持續(xù)交付):蘇寧開放云
配置中心:SCM
接口框架: 魔客平臺
API 網(wǎng)關(guān):金融一站式網(wǎng)關(guān)
服務(wù)發(fā)現(xiàn)、服務(wù)路由脯丝、服務(wù)容錯商膊、服務(wù)調(diào)用:RSF
服務(wù)監(jiān)控:穆加、紫金大盤
服務(wù)跟蹤:穆加
服務(wù)安全:金融開放平臺
展望未來
2017 年 -2018 年初蘇寧提出了數(shù)據(jù)驅(qū)動經(jīng)營戰(zhàn)略宠进。蘇寧金融營銷系統(tǒng)也沿著這個思路發(fā)展晕拆,規(guī)劃系統(tǒng)的發(fā)展方向,未來規(guī)劃包含:營銷流程全閉環(huán)材蹬,營銷過程實(shí)時數(shù)據(jù),智能報表昆庇,營銷數(shù)據(jù)挖掘,營銷活動推薦未舟,營銷活動預(yù)算自控掂为。
圖 9 展望未來
作者介紹
王清平勇哗,蘇寧金融研發(fā)中心資深架構(gòu)師欲诺,精通微服務(wù)架構(gòu)模式,熟悉 Java 領(lǐng)域技術(shù)架構(gòu)蛹含。在廣告塞颁、營銷祠锣、電商領(lǐng)域的技術(shù)研發(fā)、架構(gòu)設(shè)計等方面擁有多年實(shí)戰(zhàn)經(jīng)驗(yàn)蓬推,擅長提升系統(tǒng)的高可用沸伏,高性能动分,擴(kuò)展性等能力〈汤玻現(xiàn)在主要負(fù)責(zé)蘇寧金融會員及互聯(lián)網(wǎng)研發(fā)中心的應(yīng)用架構(gòu)與技術(shù)架構(gòu)工作。
王海民蜕青,蘇寧金融研發(fā)中心高級技術(shù)經(jīng)理右核,主要負(fù)責(zé)蘇寧金融會員及互聯(lián)網(wǎng)研發(fā)中心的營銷部門工作。具有營銷贺喝、電商躏鱼、支付、金融等相關(guān)領(lǐng)域 10 年以上工作經(jīng)歷鹊漠;擅長互聯(lián)網(wǎng)產(chǎn)品服務(wù)端應(yīng)用技術(shù)架構(gòu)躯概。