閱讀979 返回首頁    go 阿裏雲 go 技術社區[雲棲]


某傳統企業去O上雲案例

最近參與到某新能源製造企業去O上雲的項目,網站的需求很簡單:以WEB/APP 的形式提供數據查詢展示、分析的功能。
網站使用java編寫,數據庫采用Oracle DataGuard 搭建的高可用架構。DG環境是找第三方公司來搭建的,過了維保期之後主庫出了問題,客戶根據維保手冊自行將備庫提升為主庫,但DG環境卻搭不起來。找數據庫運維公司來搭建,要10WRMB(狠!),也就咬牙不搭建DG環境了。相當於數據庫一直處於果奔狀態。
數據庫主要存儲站點、設備狀態、設備運行日誌、發電量、二氧化碳減排量等數據。數據表不多,但單表數據量特別大。WEB站點大都以圖表的形式展示日、月、年發電量、二氧化碳減排量、Input、Output數據。很遺憾,所有的統計數據都是在用戶訪問頁麵時實時計算得來的。
image

隨著新能源產業的興起,公司銷售的設備也越來越多,收集到的數據量也越來越大,單表最高達2億,多張表數據量相當可觀。同時也因為頁麵響應越來越慢的原因,收到更多的用戶投訴。
而此時用戶已經感受到來自WEB架構、數據表擴展等的壓力,通過一番谘詢後,找到我們來優化架構,解決數據量越來越大,WEB訪問越來越慢、便於開發維護的問題。
在對公司業務、WEB/APP的業務類型、數據量變化趨勢及客戶想要達到的數據入庫速度、頁麵響應時間詳細了解之後,開始架構優化和數據庫改造計劃。

大家都知道Oracle相較於其他開源或者非開源的數據庫都有很大的優勢,表現在OLTP、OLAP等事務操作,以及對過程、觸發器、函數等的強烈支持。但在大數據表的處理及擴展方麵的能力也一直被大家詬病。另外一麵就是對非專業數據庫管理人員來說,維護起來有很大的挑戰,並且第三方的運維服務公司大都很貴!
出於易運維、可擴展的需求,推薦使用阿裏雲分庫分表中間價DRDS+RDS數據庫架構;並對當前實時數據統計的業務場景做了優化。
DRDS:https://help.aliyun.com/document_detail/29659.html?spm=5176.doc52009.6.539.xf7Rpp
RDS:https://help.aliyun.com/knowledge_detail/41872.html
解決的問題:
DRDS單實例可以和N個RDS實例組成分庫分表集群,每個RDS會創建8個數據庫,每個數據庫可以根據拆分規則創建M個分表,最終一張大表的數據會均勻(理論上)的分布在N*M*8個數據表上,單表數據量直線下降。
阿裏雲提供DRDS、RDS管理控製台,實例CPU、內存、慢日誌等等都可以直觀的在頁麵展示,快速定位解決問題,節省人工運維的成本。
針對實時計算的業務類型,做了大量的代碼層和數據庫層改造。基本思想是將該類型的業務放到後台,以定時任務的方式去計算,不同需求的結果存儲在不同的月、年統計表中,真正做到頁麵與數據庫的交互隻有簡單的DML操作,減少響應時間提升客戶體驗。
image


多輪性能測試下來,在100並發下,單個頁麵最快響應時間可達到500ms以下,多個頁麵的性能測試響應時間也在2S以下。

去O改造的指導思想是:
梳理和拆分業務,將需要計算的事情交給後台JOB去做,頁麵對數據庫的請求隻有一次交互、且隻是一次對表的查詢操作,避免多次交互和大量的計算操作,提升性能。

最後更新:2017-09-30 23:04:46

  上一篇:go  php的垃圾回收機製——引用計數
  下一篇:go  從0到1開發自動化測試框架