“旧城改造”的背后——银泰新零售阿里云解决方案(上)
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
相關(guān)免費(fèi)課程《銀泰新零售上云解決方案精講》上線中
立足實戰(zhàn) 講透經(jīng)典案例 助你快速理解新零售
第一節(jié)學(xué)習(xí)地址
第二節(jié)學(xué)習(xí)地址
傳統(tǒng)線下商業(yè)體上云的案例
與其說銀泰上云,倒不如說銀泰“舊城改造”,銀泰線下商業(yè)體擁有一座龐大的IDC,這個十年的“老”IDC已經(jīng)無法支撐現(xiàn)有銀泰如此龐大的業(yè)務(wù)規(guī)模,目前銀泰IDC最大的痛點在于穩(wěn)定性和效率都無法得到很好的保障,IDC無API,人工操作場景多,這個從運(yùn)維角度以及整個研發(fā)效能上來看,都是非常低效的。而如果在IDC中構(gòu)建私有云,這個成本也會非常大,主要是構(gòu)建和維護(hù)私有云的成本,綜合上面的情況,公有云是我們最佳的選擇。銀泰新零售業(yè)務(wù)全部云化,銀泰IDC老業(yè)務(wù)逐步上云,這就是銀泰整體上云的思路和節(jié)奏。
“舊城改造”是一個從-1到0的階段,銀泰IDC有著支撐商場運(yùn)行的各種系統(tǒng),以及Oracle數(shù)據(jù)庫,今天的IDC已經(jīng)無法滿足我們整體運(yùn)維和穩(wěn)定性的要求,選擇上云是個明智的抉擇。阿里云目前支撐著銀泰所有新零售核心業(yè)務(wù)以及IDC上云的所有應(yīng)用,我們可以很好的利用云上的彈性來面對每一場大促。EDAS提供了很好的靈活性,以及豐富的中間件,對于運(yùn)維也是非常友好,我們無需觸摸任何一臺服務(wù)器,整個Provision階段是非常簡單和高效的,結(jié)合云監(jiān)控自動監(jiān)控每一個節(jié)點。這一切都是上云的好處。
目前我們已經(jīng)將銀泰IDC里的所有應(yīng)用全部云化,整個“舊城改造”最難的不是應(yīng)用上云,而是Oracle上云,我們目前正在將Oracle逐步弱化,將整個數(shù)據(jù)轉(zhuǎn)移到云上的RDS,這個過程主要的難點在于銀泰Oracle有著上萬條的存儲過程,而去除存儲過程是去除Oracle的核心。可能其他行業(yè)也會存在去Oracle的難題,銀泰零售行業(yè)最早開始的時候選擇的是Oracle,這是一個歷史原因,但是今天的業(yè)務(wù)量Oracle已經(jīng)無法再繼續(xù)擴(kuò)展(基于成本和穩(wěn)定性考慮),云上的RDS天然支持高可用,我們無需太多關(guān)心它的底層架構(gòu),然后IDC里的數(shù)據(jù)庫我們需要考慮他的高可用,才能達(dá)到一定的穩(wěn)定性級別。銀泰各商場將POS機(jī)收到的交易寫到該商場的前置機(jī)Oracle數(shù)據(jù)庫,然后利用DTS將全國所有門店的的交易數(shù)據(jù)匯總到IDC里的Oracle數(shù)據(jù)庫,IDC的Oracle數(shù)據(jù)庫通過內(nèi)部大量的存儲過程對交易數(shù)據(jù)進(jìn)行各種加工(如交易分?jǐn)偟?#xff09;,數(shù)據(jù)加工完成后再通過DTS傳輸?shù)桨⒗镌频腞DS。因為交易數(shù)據(jù)量龐大,為了提升云上數(shù)據(jù)庫處理能力,我們在RDS的基礎(chǔ)上使用了DRDS,通過分庫分表的方式,將數(shù)據(jù)計算的壓力進(jìn)行分散,大幅度地提高了云上數(shù)據(jù)庫的計算能力。如果這部分單純在IDC中進(jìn)行的話,會給我們帶來相當(dāng)大的難度和一定的維護(hù)成本。
新零售場景下混合云的使用
銀泰上云后,門店、IDC(現(xiàn)階段Oracle還在持續(xù)上云)、阿里云組成了一個混合云網(wǎng)絡(luò),全國門店互聯(lián)銀泰IDC,銀泰IDC互聯(lián)阿里云VPC。IDC和阿里云之間通過DTS傳輸所有交易數(shù)據(jù),銀泰全國各門店端有著我們大量的POS、IoT設(shè)備等,這些交易數(shù)據(jù)完全通過阿里云的DTS來傳輸數(shù)據(jù),將交易數(shù)據(jù)同步至IDC的Oracle(完全上云后就是RDS了),Oracle會加工這部分?jǐn)?shù)據(jù),然后同樣通過DTS同步到云端的RDS。因為我們的Oracle還沒完全去除完,所以這個架構(gòu)圖里還會有IDC的身影存在,阿里云到IDC的專線主要承載DTS數(shù)據(jù),以及部分云上應(yīng)用使用Oracle的場景,這部分是通過高速通道實現(xiàn),云到IDC建立了兩條專線承載這部分流量。而每家門店同樣存在到IDC的專線,這里的專線也是承載DTS的數(shù)據(jù)同步。從而,DTS成為了銀泰整個中樞神經(jīng),貫穿線下和線上。
數(shù)據(jù)傳輸線上線下數(shù)據(jù)融合的實操
對于整體的數(shù)據(jù)流向,剛剛提到各門店將POS機(jī)收到的交易寫到該門店的前置機(jī)Oracle數(shù)據(jù)庫,然后利用DTS將全國所有門店的的交易數(shù)據(jù)匯總到IDC里的Oracle數(shù)據(jù)庫,IDC的Oracle數(shù)據(jù)庫通過內(nèi)部大量的存儲過程對交易數(shù)據(jù)進(jìn)行各種加工(如交易分?jǐn)偟?#xff09;,數(shù)據(jù)加工完成后再通過DTS傳輸?shù)桨⒗镌频腞DS。因為交易數(shù)據(jù)量龐大,為了提升云上數(shù)據(jù)庫處理能力,我們在RDS的基礎(chǔ)上使用了DRDS,通過分庫分表的方式,將數(shù)據(jù)計算的壓力進(jìn)行分散,大幅度地提高了云上數(shù)據(jù)庫的計算能力。另外,阿里云RDS及DRDS里的數(shù)據(jù)我們利用阿里云的API,進(jìn)行數(shù)據(jù)處理后存放在阿里巴巴IDC的ODPS、自有Mysql、OSS等處,用來做BI處理、生產(chǎn)業(yè)務(wù)調(diào)用等。下面是新商場的總體數(shù)據(jù)流向圖:
? 門店前置機(jī)。商場POS機(jī)收到的最初小票數(shù)據(jù)直接存到門店的前置機(jī)數(shù)據(jù)庫,之所以目前還保留前置機(jī),是因為如果商場的所有網(wǎng)絡(luò)出口中斷,前置機(jī)可以作為離線兜底方案。
? 門店與IDC之間的DTS傳輸。
o 全國所有門店收到的初始交易數(shù)據(jù)通過DTS匯總到IDC機(jī)房里的Oralce數(shù)據(jù)庫,然后通過Oracle數(shù)據(jù)庫中大量的存儲過程對交易數(shù)據(jù)進(jìn)行處理,生成我們想要的對小票數(shù)據(jù)進(jìn)行分?jǐn)偤蟮慕灰讛?shù)據(jù)。
o IDC將離線交易所需要的配置及商品數(shù)據(jù)通過DTS反向下發(fā)到全國所有的門店。
o 傳輸鏈路。原來全國所有門店與IDC之間的DTS是通過專線進(jìn)行傳輸?shù)?#xff0c;但是偶爾會出現(xiàn)專線因各種原因中斷的情況(如市政施工等),而且專線一旦出現(xiàn)中斷,運(yùn)營商修復(fù)專線的時間一般都是按小時來計的。為了解決這個問題,新商場運(yùn)維團(tuán)隊基于開源工具在全國所有門店部署了通過公網(wǎng)傳輸Site to Site的VPN,一旦專線中斷,VPN會自動啟動并接管DTS傳輸鏈路,而且對DTS任務(wù)是透明的,DTS不用修改任何配置。
? IDC機(jī)房。IDC機(jī)房部署了多套Oracle,用來做交易小票的處理、財務(wù)結(jié)算、OA、報表等業(yè)務(wù)。由于歷史原因,各個庫需要彼此之間調(diào)用相互的數(shù)據(jù),原來這些業(yè)務(wù)調(diào)用多通過DBLINK來實現(xiàn)。對于報表來說,如果每次計算都通過DBLINK去讀取別的庫的數(shù)據(jù),會消耗大量的網(wǎng)絡(luò)帶寬,另外也會降低大量的計算能力。為了解決這個問題,我們利用DTS將各個庫之間的數(shù)據(jù)進(jìn)行同步,這樣既能保證數(shù)據(jù)一致性,又可以在最小化網(wǎng)絡(luò)資源消耗的前提下保證原有的計算能力。
? IDC與阿里云rds之間的DTS傳輸。這里要給DTS對異構(gòu)數(shù)據(jù)庫之間的數(shù)據(jù)同步點個贊。
o 我們將線下Oracle處理后的數(shù)據(jù)通過DTS傳輸?shù)桨⒗镌频腞DS,部署在阿里云的數(shù)據(jù)直接調(diào)用RDS里的數(shù)據(jù)。此外,將Oracle里的數(shù)據(jù)同步到RDS,也是我們后期去O的一種手段。
o 阿里云RDS生成的部分生產(chǎn)數(shù)據(jù)也通過DTS反向傳輸?shù)絀DC的Oracle數(shù)據(jù)庫,用來做財務(wù)結(jié)算、報表等業(yè)務(wù)。此外,這個鏈路也可以作為我們后期去O的回退方法。
? 阿里云。數(shù)據(jù)同步到阿里云的RDS之后,為了提高阿里云上的數(shù)據(jù)計算能力,我們在RDS的基礎(chǔ)上使用了DRDS,通過分庫分表的方式,將數(shù)據(jù)計算的壓力進(jìn)行分散。
? 阿里云數(shù)據(jù)同步到阿里巴巴IDC。我們利用阿里云提供的各種API接口,從接口拿到RDS的數(shù)據(jù)后,經(jīng)過一些處理,存放到了阿里巴巴IDC的ODPS、自建Mysql、OSS等處,方便阿里巴巴IDC應(yīng)用架構(gòu)的調(diào)用。
銀泰通過DTS作為整個數(shù)據(jù)同步的中樞神經(jīng),我們目前擁有一個線上線下數(shù)據(jù)同步體系,實現(xiàn)線上線下數(shù)據(jù)融合。但是這里會產(chǎn)生一個問題,Oracle到Oracle,以及Oracle到RDS(MySQL),我們?yōu)槭裁磿x擇DTS來做這部分?jǐn)?shù)據(jù)傳輸,而不會采用Oracle的通用解決方案?原因在于DTS在監(jiān)控方面及頁面展示方面做得很好,我們可以通過界面比較直觀地觀察DTS的延遲情況以及每個時間段的數(shù)據(jù)抽取量,而且可以通過API或控制臺實現(xiàn)非常快速的配置。而Oracle的通用解決方案多停留在命令行層面,在操作及維護(hù)的方便性方面遠(yuǎn)不如DTS,且無API,這樣給我們的操作帶來了極大的困難。DTS的配置很簡單,下面就是一個同步任務(wù)在控制臺中的實操場景:
? 首先進(jìn)入到DTS產(chǎn)品頁面
? 在管理界面中點擊右上角的“創(chuàng)建遷移任務(wù)”來新建一條遷移任務(wù)
? 在接下來的頁面中,填寫目標(biāo)庫和源庫的信息,然后點擊“測試連接”,連通性測試通過后就可以進(jìn)入下一步了
? 接下來選擇我們要同步的表
? 最后啟動任務(wù)
這樣一來,一個任務(wù)就這樣的簡單的建立起來了,無需額外的工作量。整個銀泰將近有500多條DTS任務(wù)來支持如此龐大的數(shù)據(jù)傳輸體系。
原文鏈接
本文為云棲社區(qū)原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
轉(zhuǎn)載于:https://my.oschina.net/u/1464083/blog/3041843
總結(jié)
以上是生活随笔為你收集整理的“旧城改造”的背后——银泰新零售阿里云解决方案(上)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Qwt(一): 编译 · 安装
- 下一篇: python基础:并行遍历ZIP()函数