作為國(guó)內(nèi)融資最為火爆的領(lǐng)域之一,企業(yè)級(jí)SaaS市場(chǎng)吸引了眾多風(fēng)投和創(chuàng)業(yè)者的關(guān)注。6月中旬,雅座正式對(duì)外宣布已獲得數(shù)億元人民幣C輪融資,由支付寶母公司螞蟻金服領(lǐng)投,再次引爆了整個(gè)國(guó)內(nèi)SaaS市場(chǎng)。目前,雅座累計(jì)為超過(guò)15000家餐飲門(mén)店提供精準(zhǔn)營(yíng) 銷服務(wù),而基于用戶交易和消費(fèi)行為的數(shù)據(jù)分析是精準(zhǔn)營(yíng) 銷的核心,如何快速處理海量數(shù)據(jù),進(jìn)行多維度、低延時(shí)的統(tǒng)計(jì)分析、數(shù)據(jù)挖掘,對(duì)系統(tǒng)性能和可伸縮性提出了更高的挑戰(zhàn)。本文來(lái)自雅座CTO對(duì)其CRM技術(shù)的解密分享。
以下為原文:
一. CRM云服務(wù)的系統(tǒng)瓶頸
雅座CRM歷經(jīng)9年的成長(zhǎng),累計(jì)為超過(guò)15000家餐飲門(mén)店提供精準(zhǔn)營(yíng) 銷服務(wù),管理超過(guò)5000萬(wàn)會(huì)員數(shù)據(jù),日交易流水超百萬(wàn)筆,年交易額達(dá)200億以上。
雅座提供專業(yè)的企業(yè)級(jí)SaaS云服務(wù),對(duì)系統(tǒng)的安全性、穩(wěn)定性、可靠性要求極高,這是企業(yè)的基本訴求。同時(shí),基于用戶交易和消費(fèi)行為的數(shù)據(jù)分析,是精準(zhǔn)營(yíng) 銷的核心,如何快速處理海量數(shù)據(jù),進(jìn)行多維度、低延時(shí)的統(tǒng)計(jì)分析、數(shù)據(jù)挖掘,對(duì)系統(tǒng)性能和可伸縮性提出了更高的挑戰(zhàn)。CRM的目標(biāo)是數(shù)據(jù)營(yíng) 銷,需要提供各種緯度的靈活的查詢分析。舉例來(lái)說(shuō),餐廳一個(gè)簡(jiǎn)單的需求,希望根據(jù)消費(fèi)時(shí)間、性別、消費(fèi)金額篩選出目標(biāo)客戶,隨著數(shù)據(jù)量增大,僅靠關(guān)系數(shù)據(jù)庫(kù)分庫(kù)分表和索引優(yōu)化已經(jīng)難以滿足企業(yè)的效率要求。高彈性、易擴(kuò)展的大數(shù)據(jù)處理能力,在CRM云服務(wù)中日趨重要。
二. 雅座CRM系統(tǒng)架構(gòu)
1. 目標(biāo)客戶金字塔模型 一個(gè)餐廳的輻射范圍通常覆蓋周圍3公里,這個(gè)范圍內(nèi)的??蜑椴蛷d貢獻(xiàn)了80%以上的銷售額。此外還有一些臨時(shí)聚會(huì),或手握超低價(jià)團(tuán)購(gòu)券的客人,這些客人并不能為餐廳帶來(lái)持續(xù)性消費(fèi),不斷的打折、跳樓價(jià)甚至可能會(huì)損害餐廳的正常經(jīng)營(yíng),餐廳表面看似人頭攢動(dòng),但桌均消費(fèi)大幅降低,服務(wù)員前廳后廚百米折返跑,服務(wù)不斷下降,最終導(dǎo)致把老顧客拒之門(mén)外。當(dāng)餐廳經(jīng)歷表面的繁榮,發(fā)現(xiàn)營(yíng)業(yè)額并無(wú)增長(zhǎng),試圖提高價(jià)格時(shí),圖便宜的客人一呼而散,餐廳則難以為繼。
因此,價(jià)格戰(zhàn)永遠(yuǎn)不是一個(gè)好主意,管理好目標(biāo)客戶并帶來(lái)持續(xù)性收入,才是一個(gè)健康的商業(yè)模式。雅座CRM通過(guò)用戶消費(fèi)行為分析,將目標(biāo)客戶鎖定在??秃椭艺\(chéng)客戶,降低企業(yè)營(yíng) 銷推 廣成本的同時(shí),提高營(yíng) 銷活動(dòng)的響應(yīng)率,為餐廳帶來(lái)更高的利潤(rùn)空間。所有這些用戶群體的標(biāo)簽分類,依賴離線分析 + 在線分析引擎完成,為餐廳提供更準(zhǔn)確、更及時(shí)的營(yíng) 銷決策支持。
2. 業(yè)務(wù)架構(gòu)
業(yè)務(wù)上,用戶通過(guò)POS消費(fèi)的數(shù)據(jù),上傳到CRM云端,一系列的數(shù)據(jù)處理分析后,系統(tǒng)為不同的餐廳提供特定的營(yíng) 銷活動(dòng),將微信、短信、APP做為營(yíng) 銷出口,和消費(fèi)者產(chǎn)生互動(dòng),增加消費(fèi)粘性,為餐廳帶來(lái)更多價(jià)值。
3. 技術(shù)架構(gòu)
1)數(shù)據(jù)遷移
隨著IaaS和PaaS技術(shù)成熟,國(guó)內(nèi)涌現(xiàn)出一批質(zhì)量較高的云主機(jī)提供商。雅座選擇了其中的兩家,將自有數(shù)據(jù)中心遷移到了云主機(jī)上。遷移前,雅座的數(shù)據(jù)中心機(jī)柜緊張,原有機(jī)房擴(kuò)容面臨很大問(wèn)題,一方面業(yè)務(wù)增長(zhǎng)很快,數(shù)據(jù)中心擴(kuò)容的需求日益急迫;另一方面,在線業(yè)務(wù)7x24小時(shí)不間斷,無(wú)法停機(jī)維護(hù)做系統(tǒng)遷移。運(yùn)維部制定了在線增量數(shù)據(jù)遷移方案,把數(shù)據(jù)庫(kù)、搜索引擎的數(shù)據(jù)掛到pgq上,啟動(dòng)pgq生產(chǎn)者,將變化的數(shù)據(jù)寫(xiě)入隊(duì)列。同時(shí)將數(shù)據(jù)復(fù)制到云主機(jī)上,復(fù)制完成后,啟動(dòng)pgq消費(fèi)者,從隊(duì)列讀取變化的數(shù)據(jù)增量更新。
2)高可用性
一個(gè)數(shù)據(jù)中心內(nèi),消除數(shù)據(jù)庫(kù)和應(yīng)用服務(wù)的單點(diǎn)故障比較容易,但跨數(shù)據(jù)中心的高可用性,要考慮到網(wǎng)絡(luò)拓?fù)洹⒀訒r(shí)或中斷、數(shù)據(jù)一致、處理效率等問(wèn)題,比較繁瑣。我們建立雙活數(shù)據(jù)中心,不同數(shù)據(jù)中心分擔(dān)不同的業(yè)務(wù)。按照業(yè)務(wù)響應(yīng)的優(yōu)先級(jí)別劃分為兩類:交易相關(guān)的實(shí)時(shí)業(yè)務(wù),不允許超過(guò)分鐘級(jí)中斷;CRM數(shù)據(jù)分析相關(guān)的準(zhǔn)實(shí)時(shí)業(yè)務(wù),不允許超過(guò)小時(shí)級(jí)中斷。主數(shù)據(jù)中心處理POS、微 信、安卓終端等在線交易實(shí)時(shí)相關(guān)的業(yè)務(wù),災(zāi)備數(shù)據(jù)中心處理CRM數(shù)據(jù)分析、定時(shí)任務(wù)、日志分析、Storm等準(zhǔn)實(shí)時(shí)業(yè)務(wù),通過(guò)pgq 和流復(fù)制各數(shù)據(jù)中心保持兩份完整的交易數(shù)據(jù)。當(dāng)數(shù)據(jù)中心或網(wǎng)絡(luò)出現(xiàn)異常時(shí),每一個(gè)數(shù)據(jù)中心所需的業(yè)務(wù)數(shù)據(jù)基本完整,此時(shí)有兩個(gè)選擇:a) 由一個(gè)數(shù)據(jù)中心全面接管所有業(yè)務(wù)。 b) 數(shù)據(jù)不同步,但各數(shù)據(jù)中心均可正常使用,異常解決后,繼續(xù)同步數(shù)據(jù)。按業(yè)務(wù)響應(yīng)分級(jí)容災(zāi),可以更合理的利用雙活數(shù)據(jù)中心,根據(jù)不同的異常情況,自動(dòng)或人工做出響應(yīng)。
3)數(shù)據(jù)同步秒級(jí)延時(shí)
雅座CRM的技術(shù)特點(diǎn)是數(shù)據(jù)處理手段多樣化,為了滿足靈活快速檢索、統(tǒng)計(jì)分析、日常業(yè)務(wù)、讀寫(xiě)分離等多種目的,交易數(shù)據(jù)會(huì)被同步到只讀庫(kù)、ES、Storm、GreenPlum數(shù)據(jù)倉(cāng)庫(kù),目前正在啟動(dòng)Hadoop離線處理。衡量交易系統(tǒng)性能的關(guān)鍵指標(biāo)是TPS和吞吐量,當(dāng)TPS不斷提升時(shí),每秒處理的數(shù)據(jù)量也會(huì)大幅增加,數(shù)據(jù)同步的效率就尤為關(guān)鍵。通過(guò)壓力測(cè)試和容量測(cè)試,可以計(jì)算出數(shù)據(jù)同步的效率是否符合要求。假設(shè)我們?yōu)?0000家餐飲門(mén)店提供服務(wù),單店高峰時(shí)段每小時(shí)100單,那么系統(tǒng)高峰期的吞吐量指標(biāo)設(shè)定在1000筆/秒。為了滿足效率要求,并考慮容錯(cuò)機(jī)制和可擴(kuò)展性,我們?cè)O(shè)計(jì)了基于pgq的異步隊(duì)列。Skytools是skype公司開(kāi)發(fā)的一款基于Postgres的消息套件,在skype內(nèi)部廣泛使用,開(kāi)發(fā)于2006年,2007年開(kāi)源Skytools Framework,至今一直在使用和維護(hù),使用場(chǎng)景如下:
l 異步數(shù)據(jù)傳輸
l ? 數(shù)千隊(duì)列和消費(fèi)者
l ? 監(jiān)控中心
Skytools包含三個(gè)組件:pgq、londiste、walmgr
pgq提供Python API,由異步處理機(jī)制去靈活調(diào)用。用于解決實(shí)時(shí)事務(wù)的異步批處理問(wèn)題。
pgq由Producer、Ticker、Consumer組成,支持高可用部署。Producer將Events推送到Queue中,Ticker負(fù)責(zé)對(duì)批量Queue制定相應(yīng)處理規(guī)則,Consumer從Queue中獲取Events。
基于pgq,雅座CRM設(shè)計(jì)和實(shí)現(xiàn)了協(xié)同消費(fèi)者模式,當(dāng)系統(tǒng)超負(fù)荷時(shí),一鍵式注冊(cè)新的消費(fèi)者,就可以實(shí)現(xiàn)多消費(fèi)者協(xié)同處理,提升數(shù)據(jù)同步的效率。同時(shí),根據(jù)負(fù)載水平和批大小,數(shù)據(jù)延時(shí)可以由Ticker動(dòng)態(tài)調(diào)整。通過(guò)壓力測(cè)試,我們可以驗(yàn)證部署方案是否滿足需要,調(diào)整線上消費(fèi)者節(jié)點(diǎn)數(shù)量。目前,雅座CRM可以做到多數(shù)據(jù)源同步秒級(jí)延時(shí)、水平擴(kuò)展。
4)實(shí)時(shí)分析
目前雅座CRM核心數(shù)據(jù)量達(dá)到10億級(jí)別,做為CRM云服務(wù),靈活、高效的數(shù)據(jù)檢索必不可少。一般來(lái)說(shuō),根據(jù)業(yè)務(wù)時(shí)間采用分庫(kù)分表、歷史數(shù)據(jù)遷移的方案降低活躍數(shù)據(jù)量,提升查詢效率。但CRM系統(tǒng)跨年、連鎖跨門(mén)店查詢的需求比較普遍,分庫(kù)分表會(huì)在實(shí)現(xiàn)方案上增加較高的復(fù)雜度,同時(shí)無(wú)法滿足多種緯度的靈活查詢,難以擴(kuò)展。當(dāng)分庫(kù)分表后的數(shù)據(jù)量仍在一個(gè)較高的水平時(shí),無(wú)法利用索引的全表掃描查詢效率會(huì)大幅下降。
雅座CRM采用了Elasticsearch做為解決方案。Elasticsearch是一個(gè)基于Lucene的開(kāi)源、分布式搜索框架,基本包含所有所需的特性:分布式搜索、分布式索引、零配置、自動(dòng)分片、索引自動(dòng)負(fù)載、自動(dòng)發(fā)現(xiàn)、多索引查詢,restful風(fēng)格接口。它支持插件機(jī)制,有豐富的插件。比如和mongoDB、couchDB同步的river插件,分詞插件,hadoop插件,腳本支持插件等。同時(shí)ES還是個(gè)準(zhǔn)實(shí)時(shí)的搜索引擎,索引后的數(shù)據(jù)可以實(shí)時(shí)搜索到。在ES的應(yīng)用場(chǎng)景中,更多的是將其做為非結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ),通過(guò)性能測(cè)試和實(shí)驗(yàn),ES同樣適用于結(jié)構(gòu)化數(shù)據(jù)的存儲(chǔ)和查詢。結(jié)合ES的分布式、分片、多索引聯(lián)合查詢的特性,雅座CRM將大數(shù)據(jù)量的隨機(jī)查詢效率提升了數(shù)十倍,達(dá)到秒級(jí)響應(yīng)。
CRM的另一個(gè)技術(shù)特點(diǎn)是統(tǒng)計(jì)分析業(yè)務(wù)多,通過(guò)引入Storm流計(jì)算框架,將系統(tǒng)日志和pgq做為Storm數(shù)據(jù)源,結(jié)合業(yè)務(wù)特點(diǎn),實(shí)現(xiàn)分級(jí)匯總的topology,我們將原有的T+1數(shù)據(jù)分析業(yè)務(wù)提升為實(shí)時(shí)計(jì)算,為企業(yè)提供更準(zhǔn)確、及時(shí)的數(shù)據(jù)決策支持。
5)離線處理
離線處理主要是基于GreenPlum + 定時(shí)任務(wù)完成。Greenplum是基于postgresql的分布式數(shù)據(jù)庫(kù)。其采用shared nothing架構(gòu)(MPP),主機(jī),操作系統(tǒng),內(nèi)存,存儲(chǔ)都是自我控制的,不存在共享。主要由master host,segment host,interconnect三大部分組成。配合合理的分片策略和部署方案,GP的效率可以提升十倍以上。雅座CRM將復(fù)雜、難以拆分的SQL操作移植到GP上,大數(shù)據(jù)量的統(tǒng)計(jì)分析效率得到了明顯提升。
6)SOA服務(wù)化
系統(tǒng)越復(fù)雜,耦合越緊密,可維護(hù)性和水平擴(kuò)展越困難。雅座CRM業(yè)務(wù)覆蓋短信、微信、交易、數(shù)據(jù)分析、智能終端等多個(gè)子系統(tǒng),對(duì)吞吐量、并發(fā)、穩(wěn)定性的要求很高。原有系統(tǒng)中,各業(yè)務(wù)系統(tǒng)緊密耦合是一個(gè)整體,已經(jīng)很難滿足水平擴(kuò)展的要求。根據(jù)業(yè)務(wù)拆分系統(tǒng),SOA服務(wù)化演變成系統(tǒng)升級(jí)的階段性目標(biāo)。在SOA的實(shí)現(xiàn)上,雅座CRM選擇了Dubbo,Dubbo是一個(gè)分布式服務(wù)框架,致力于提供高性能和透明化的RPC遠(yuǎn)程服務(wù)調(diào)用方案,以及SOA服務(wù)治理方案。其核心部分包含:
遠(yuǎn)程通訊: 提供對(duì)基于長(zhǎng)連接的NIO框架抽象封裝,包括多種線程模型,序列化,以及“請(qǐng)求-響應(yīng)”模式的信息交換方式,比常規(guī)HTTP等短連接協(xié)議更快。
集群容錯(cuò): 提供基于接口方法的透明遠(yuǎn)程過(guò)程調(diào)用,包括多協(xié)議支持,以及軟負(fù)載均衡,失敗容錯(cuò),地址路由,動(dòng)態(tài)配置等集群支持。
自動(dòng)發(fā)現(xiàn): 基于注冊(cè)中心目錄服務(wù),使服務(wù)消費(fèi)方能動(dòng)態(tài)的查找服務(wù)提供方,使地址透明,使服務(wù)提供方可以平滑增加或減少機(jī)器。
基礎(chǔ)業(yè)務(wù)上,雅座CRM在Dubbo服務(wù)框架上做了分布式緩存同步機(jī)制,保證用戶和權(quán)限及時(shí)刷新,為所有應(yīng)用提供統(tǒng)一的用戶服務(wù);運(yùn)維部署上,實(shí)現(xiàn)了跨機(jī)房就近調(diào)用、高可用、監(jiān)控的目的,也為系統(tǒng)持續(xù)集成打下了更好的基礎(chǔ)。
7)監(jiān)控和預(yù)警
SaaS云服務(wù)對(duì)運(yùn)維提出了更高的要求,因?yàn)檠抛鵆RM系統(tǒng)服務(wù)的不僅是一個(gè)客戶,而是成千上萬(wàn)的餐飲企業(yè),系統(tǒng)每一次故障中斷,都可能引起餐廳的直接經(jīng)濟(jì)損失,進(jìn)而損害雅座的品牌形象。在雅座,系統(tǒng)穩(wěn)定性被定義為最高優(yōu)先級(jí),是公司業(yè)務(wù)的基石,要在問(wèn)題潛伏期提早發(fā)現(xiàn),盡早解決。在運(yùn)維環(huán)節(jié),雅座自主開(kāi)發(fā)和整合開(kāi)源監(jiān)控工具,7x24小時(shí)監(jiān)控系統(tǒng)的各項(xiàng)性能指標(biāo),當(dāng)性能指標(biāo)超出伐值時(shí),系統(tǒng)自動(dòng)報(bào)警,通過(guò)短信、郵件及時(shí)通知運(yùn)維中心,并做相應(yīng)處理。
三. SaaS云服務(wù)的感悟
SaaS的出現(xiàn),改變的不僅是軟件體系架構(gòu),更多是企業(yè)服務(wù)的思維方式。傳統(tǒng)軟件的商業(yè)模式中,我們提供的僅僅是應(yīng)用程序,用戶去做運(yùn)維、使用和學(xué)習(xí),成本高、運(yùn)維難、升級(jí)難、無(wú)服務(wù)、和用戶無(wú)溝通是所有企業(yè)軟件很難改變的現(xiàn)狀。在傳統(tǒng)軟件模式下,軟件開(kāi)發(fā)商系統(tǒng)不斷升級(jí)換代,但老用戶卻無(wú)法從中受益。當(dāng)用戶出現(xiàn)系統(tǒng)問(wèn)題或使用問(wèn)題時(shí),軟件企業(yè)無(wú)法快速定位問(wèn)題、解決問(wèn)題。軟件企業(yè)不敢面對(duì)客戶,因?yàn)榭蛻羰冀K不滿意,對(duì)系統(tǒng)不滿意,對(duì)服務(wù)不滿意,用戶在不斷的抱怨中忍受軟件系統(tǒng)帶來(lái)的各種“災(zāi)難”。SaaS-軟件即服務(wù),為我們帶來(lái)了新的思路,企業(yè)級(jí)市場(chǎng)中軟件+服務(wù)缺一不可。軟件的改變?cè)谠贫耍S著快速迭代的開(kāi)發(fā)模式,用戶不斷享受無(wú)感知的系統(tǒng)升級(jí)帶來(lái)的紅利,通過(guò)產(chǎn)品運(yùn)營(yíng)和服務(wù)體系,雅座將快速幫助餐飲企業(yè)解決各種問(wèn)題,讓企業(yè)用戶用的放心、滿意。