Crazysales是一家典型的跨境電商企業,以澳洲和英國作為主要目標市場,產品大多數由國內供應商提供。Crazysales不但是Amazon、eBay等大型電商平臺上的大賣家,同時在澳洲、新西蘭建設有自營電商網站,為廣大用戶提供完整的網購服務。
由于涉及跨國網絡部署,不可避免地需要穿過“萬里長城”,因此應用架構相對普通電商網站更加復雜,管理成本也自然提升,如何能夠及時了解分布在中國、澳洲、英國等地不同業務系統的運行狀態,是運維部門最關心的工作。
網站架構
Crazysales的核心業務系統及網店系統均搭建在Amazon的AWS平臺之上,用Amazon CloudFront進行前端內容分發,而后端的數據維護平臺因為供應商在國內,所以也在國內。
系統架構如下圖:
目前,我們應用的技術都不是“高大上”的新技術,但穩定性得到很好的保證:
1.傳統的PHP+LINUX+MYSQL,輔助數據的統計和分析應用mongoDB , 搜索引擎基于Solr。 系統架構做到前后低耦合,前端網站強依賴數據庫轉變成弱依賴。
2.MYSQL部署了兩臺slave 和定時靜態備份數據,確保數據庫的異地備份,和讀寫分離,為以后的無限擴展搭好基礎。
3.通過每個應用層的監控,及時發現系統的瓶頸,針對性地優化。
整套系統都是我們團隊經過多年合作開發逐步建立和維護的,所以很難保證統一的代碼風格和代碼水平,那是可遇不可求的。因此,必須建立合理的監控體系及時發現項目管理的漏洞、測試的漏洞、線上的性能瓶頸,這都讓運維的工作在整個系統生命周期里更重要,這也是時下運維開發工程師的工作核心。
因為使用了Amazon的云服務,所以我們運維工程師不必花費大量時間維護基礎硬件設施,而有更多的時間和精力來研究和優化我們的業務系統,其中監控體系是令我們為之驕傲的一部分。
我們的自建監控系統能夠及時、準確的發現部署在AWS上和國內的各個業務系統的運行狀況,但對于通過CloudFront分發出去的前端內容,以及主要分布于英國、澳大利亞、新西蘭等不同國家的用戶的訪問體驗,則是自建監控系統很難準確感知的。另外我們的開發和運維團隊主要在國內,因此需要一款即能準確感知海外用戶訪問Crazysales網站情況,又能通過手機短信、微信等手段給國內技術團隊提供準確告警消息的監控工具。經過多方測試,我們最終采用云智慧的監控寶網站監控和網頁性能監控功能,負責網站從CDN到前端瀏覽器環節的可用性監控。
各個層級設不同的監控點
紅色部分使用監控寶的監控系統,綠色是監控寶和自建監控系統混合使用
這是我們目前實施的監控架構:
通過腳本/自建監控系統 / 外部監控點(模擬真實客戶訪問) 多種實時監控數據來監測業務系統的運作狀態,根據不同系統的特性來調整數據采樣的頻率,多維度的監控和及時的告警信息讓維護人員及時知道系統的運作情況,保障系統的正常運作和提高異常處理的及時性,最終實現故障出現前預防和故障出現后及時解決的效果。
例如,我們的內部監控系統發現數據庫在凌晨4點會出現服務很忙,同時監控寶監控數據顯示前臺出現等待時間過長(>10s),通過和我們的后臺任務調度系統的運行時間進行對比,發現一個JOB需要大量SQL查詢,導致數據庫CPU占用過多,因此及時調整SQL的查詢指向其它Slave,同時優化該SQL。 如下圖,馬上就看到優化后的效果了:
監控寶遍布全球的分布式監測點能夠模擬真實客戶訪問,及時了解客戶遇到的問題,避免IT團隊無法取到第一手材料導致丟失重現系統故障的機會,這是我們設置外部監控點的原因。如果自己購買服務器和節點進行部署的話,維護成本很高,也不專業。監控寶基于SaaS的服務和收費模式,很好的解決了成本和維護的問題,幫助我們掌握在澳洲,英國,中國大陸等地的訪問速度,可用性等數據。
監控寶模擬客戶端在各個監測點的數據采樣頻率最高可達到5分鐘每次,不但能在第一時間發現故障并給予告警,而且能幫助我們掌握Web頁面的性能表現,讓開發人員可以針對性進行頁面優化。而監控寶在全球范圍內不斷地增加的監測點數量,也和我們公司不斷拓展英語國家業務的發展思路不謀而合。
最后說一下告警方式,眾所周知,告警是監控的最后一步,大部分監控平臺使用的是郵件和短信告警,但現在最流行的社交應用是微信,也是我們現在用得最多和最及時的平臺。因此,我們將多種收集數據的介質通過監控寶轉化到微信進行提示,基本上能做到故障發生半分鐘內運維同事作出反應。
(新聞稿 2016-05-12)