POLARDB是阿里雲自研的下一代關係型雲數據庫,100%兼容MySQL,存儲容量最高可達100TB,性能最高提高至MySQL的6倍,適用於企業多樣化的數據庫應用場景。POLARDB採用存儲和計算分離的架構,全部計算節點共享一份數據,提供分鐘級的配置升降級、秒級的故障恢復、全局數據一致性和免費的數據備份容災服務。本文就介紹了百勝軟件的阿里雲數據庫最佳實踐,爲你們分享POLARDB如何幫助百勝應對數據庫的「巔峯時刻」。數據庫
上海百勝軟件股份有限公司成立於2000年,是國內知名的全渠道新零售解決方案服務商,爲鞋服、運動、家居、日化、美妝、珠寶、食品等品牌企業提供管理諮詢和信息化解決方案,業務涵蓋全渠道中臺、零售分銷、供應鏈、電子商務、移動應用、大數據等領域。安全
目前,百勝軟件與旗下22家分子公司及全國100多家星聯服務機構,爲客戶提供專業及時的服務支持,安全保障30多萬家實體門店和2萬多家網上商店的平常運營。新零售時代百勝軟件致力於爲中國零售企業提供全渠道新零售解決方案,幫助客戶實現零售轉型和商業創新,成就智慧品牌,創造非凡價值。
服務器
百勝iSHOP在線商城是以移動互聯網時代消費者驅動業務爲核心,充分知足企業在不一樣觸點場景下實現互動、體驗、便捷交易的統一及業務成長的中高端電子商務銷售平臺。
網絡
百勝iSHOP在線零售商城架構
百勝目前服務30多萬家實體POS門店與2萬多家網上商店,隨着業務量增加與業務波動傳統的關係型數據庫難以知足業務增加需求。具體而言,百勝所面對的業務挑戰主要有如下兩點:併發
挑戰1:高峯時刻交易延遲激增
在使用阿里雲數據庫以前,百勝軟件採用的是自建數據庫。當時規模最大的零售終端業務在節假日的高峯時期常常會出現卡頓,平時2秒內可完成的交易激增到10到15秒纔可以完成,甚至會出現交易失敗,須要從新交易現象。負載均衡
挑戰2:數據庫容量接近極限,業務被迫延緩
在使用阿里雲數據庫以前,百勝軟件的自建數據庫容量已經接近極限,業務擴展被迫所以延緩。當時出現的狀況是:只有當歷史數據被歸檔和清理以後,才能接入新業務。分佈式
首先,阿里雲POLARDB簡單易用,它100%兼容MySQL,原有的使用MySQL數據庫的應用程序代碼無需更改,就能夠在POLARDB上運行。其次,阿里雲POLARDB具備極致性能,其針對數據庫內核進行深度優化,讀性能最高能達到MySQL的6倍。再次,POLARDB採用分佈式塊存儲設計和文件系統,使得存儲容量不限制於單節點的規格,可以輕鬆擴展,應對上百TB級別的數據規模。此外,阿里雲POLARDB還有高可用和高可靠保障,而且具備較高的數據安全性。高併發
其實,百勝最爲看重的就是阿里雲POLARDB所具備的快速彈性能力,不管是增刪節點仍是升降級配置,都可以在3分鐘內生效,這使得百勝可以在業務高峯期快速擴展只讀實例。而在快速擴展能力的背後則是由於阿里雲POLARDB由多個節點構成的數據庫集羣,該集羣具備一個主節點,還能夠擴展出多個讀節點。其對外默認提供了兩個地址,一個是集羣地址,一個是主地址,通常而言推薦使用集羣地址,由於它具有讀寫分離功能能夠把全部節點的資源整合到一塊兒對外提供服務。
工具
阿里雲POLARDB集羣架構
在百勝軟件所最爲看重的POLARDB快速擴展只讀實例能力的背後,其核心技術實際上是POLARDB讀寫分離的會話讀一致性。傳統數據庫解決方案的讀寫分離都只提供最終一致性的保證,主從複製延遲會致使從不一樣節點查詢到的結果不一樣。POLARDB採用的是讀寫分離的架構,而爲了解決這種狀況下查詢結果不肯定的問題,而傳統解決方案每每會增長應用開發的負擔,還會增大主庫的壓力,影響讀寫分離的效果。爲了應對上述挑戰,POLARDB提供了會話一致性的保證。會話一致性也就是保證在同一個會話內,後面的請求必定可以看到此前更新所產生版本的數據或者比這個版本更新的數據,保證單調性。其實現原理以下所示:
POLARDB讀寫分離會話讀一致性的實現原理
在POLARDB的鏈路中間層作讀寫分離的同時,會跟蹤各個節點的redolog位點,也就是LSN。每次更新時會記錄這次更新的位點爲Session LSN, 當有新請求到來時則會比較Session LSN和當前各個節點的LSN,僅將請求發往LSN >= Session LSN的節點,從而保證了會話一致性。由於POLARDB採用了物理複製方式,速度極快,所以並不會對於主庫形成太大壓力。另外一方面,因爲大多數應用場景都是讀多寫少,經過經驗也驗證了該機制可以保證會話一致性,同時也保證了讀寫分離負載均衡的效果。
在阿里雲的幫助下,百勝軟件將自身在線零售商城後臺的MySQL數據庫改成阿里雲的POLARDB數據庫,藉助POLARDB強大的讀寫分離能力,百勝軟件可以在業務壓力增加時經過增長只讀實例來輕鬆應對,而在業務高峯期事後,又能夠輕鬆地刪除只讀實例或下降配置來綜合控制成本。阿里雲POLARDB的彈性擴容、在線升級、數據安全可靠、高可用保障,以及零成本上雲遷移的優秀特性極大地助力了百勝在全渠道上邁向新零售。
百勝iSHOP基於阿里雲的數據庫解決方案
阿里雲POLARDB採用容器虛擬化技術和共享的分佈式塊存儲技術,使得數據庫服務器的CPU、內存可以輕鬆實現擴容,而且幫助百勝軟件在2到3分鐘內完成增長只讀節點的操做。此外,對於數據庫存儲容量的擴容也能在線完成,而無需中斷業務,在很大的程度上解決了硬件性能的瓶頸問題。
阿里雲POLARDB採用白名單、VPC網絡、SSL加密、數據多副本存儲等全方位手段,幫助百勝軟件在數據庫數據訪問、存儲、管理等各個環節提供安全保障。POLARDB採用了Active-Active的高可用集羣架構,直接經過可讀寫的主節點和只讀的Replica節點之間進行Failover切換,與傳統的Active-Standby相比,用一樣成本爲百勝帶來了更好的系統訪問性能。
除此以外,阿里雲POLARDB可以100%兼容MySQL,所以藉助上雲遷移工具DTS,百勝能夠將已有數據庫無需改造直接很是平滑低遷移到POLARDB。與此同時,這也使得百勝軟件的客戶以更低的成本享受到商業數據庫的性能和可靠性。
藉助於阿里雲的數據庫解決方案,百勝的iSHOP在線零售商城系統即使是在業務的高峯時刻也能夠保持在1秒內完成交易,有效地保障了各種促銷活動的順利開展。而新的數據庫容許在線上保存90天內的交易數據,而無需歸檔和清理,也爲後續BI進一步分析業務變化和趨勢提供了大量的數據。
在世界盃期間,百勝軟件的客戶投放了大量廣告,而藉助阿里雲POLARDB的強大能力,百勝成功應對了數億次的總曝光量,以及高併發的需求。百勝藉助阿里雲POLARDB強大的計算能力、Active-Active高可用集羣架構、極速擴展增長只讀實例的機制,順利度過了世界盃活動期間的數次高峯,極大地提高了用戶體驗,順利完成了爲客戶活動的保駕護航。