視覺中國:基於容器雲的同城雙活微服務架構上雲實踐

視覺中國集團(Visual China Group)創立於2000年6月,是中國領先的視覺影像產品和服務提供商。視覺中國集團是以“視覺創造價值,視覺服務中國”為願景的A股唯一互聯網文化創意上市公司(股票代號000681,股票簡稱:視覺中國)。視覺中國集團以“視覺內容與服務”、“視覺社區”和“視覺數字娛樂”三大業務板塊為核心,擁有中國最大的視覺內容互聯網版權交易平臺,同時為國內的主題公園、城市綜合體提供領先的數字娛樂整體解決方案。旗下包括華蓋創意(Getty Images China)、漢華易美(China Foto Press)、東星娛樂(TungStar)、視覺ME社區(shijueme)、艾特凡斯(Advance)等業界著名品牌。集團擁有近萬名簽約攝影師和藝術家,並同海內外數百家圖片社、影視機構、版權機構廣泛合作,為媒體、企業主、廣告公司等各類客戶提供專業的圖片、影視、音樂、特約拍攝、創意眾包、視覺化營銷等一站式服務。

選擇雲平臺

視覺中國集團目前有分佈在北京市各區的5個機房,我們的應用分佈在這五個機房,數據間調用複雜且低效,運維維護成本高,每年的預算更是給企業帶來一定的負擔。為了擺脫這種模式我們決定雲化,考察了騰訊雲,華為雲,ucloud等廠商,最後選擇了更能切實解決我們問題且更值得信賴的阿里雲平臺。

我們採用了基於阿里容器雲的同城雙活微服務架構(consul+template+registrator),這樣既能保證服務的高可用,也在CI,CD方面有所作為。使用到的產品有ECS,RDS,OSS,REDIS,消息通知服務,DATAV,QUICKBI,切圖服務,RAM,容器雲,雲盾,SLB等十幾種。

遷移上雲

我們首先進行線下實體機房的微服務的搭建及測試,確保服務可用後進行雲化的考量。整個應用遷移過程分為幾個步驟:

  • 阿里雲資源申請。包括ecs,rds及oss等
  • 容器雲測試。簡單搭建幾個docker測試可用性
  • 部署微服務。基於consul+template+registrator進行部署
  • 代碼部署。把jar包等通過jkenins進行部署
  • 功能測試。
  • 性能測試。
  • 灰度發佈。A/B test
  • 部分應用遷移。
  • 觀察期
  • 整體業務上線
  • 觀察期
  • 遷移完畢

整體交付完成之後,我們的CI、CD基本上做了實踐,研發發佈代碼無需經過運維干涉,自動發佈,自動部署一鍵完成。

雲端架構解析

視覺中國:基於容器雲的同城雙活微服務架構上雲實踐

架構要點解讀:

  1. 容器集群是Region級別的服務,集群內可以包含多個可用區的ECS。
  2. 容器服務支持將同一個服務的容器調度在不同的可用區(zone)裡,這是通過編排模板中的availability:az=xx標籤來實現,具體參考:https://help.aliyun.com/document_detail/26018.html?spm=5176.doc26086.6.149.VT2kDs
  3. SLB本身具有跨機房高可用特性,使用主、備在不同可用區的SLB類型即可。

整體架構就是基於容器雲的同城雙活架構,其實我們還有異地災備。

交付採取鏡像的交付方式,gitlab上傳代碼後通過jenkins進行打包操作,鏡像交付到開發環境,功能驗證沒問題後,gitlab合併代碼到test環境鏡像交付後進行test環境的功能及性能測試。

最後將鏡像推送至生產環境,生產環境採取雙consul多數據中心模式,可用區A連接位於A區的consul master,同時將註冊信息同步至位於可用區B的consul master,這樣保證多區的微服務集群高可用。

兩個區共用基礎資源,RDS通過DTS同步至測試環境,測試環境和dev環境共用一套RDS。我們的架構在滿足持續交付,持續部署的同時也滿足了高可用的需求,每個微服務都是集群,這樣基於容器層,ECS層,consul層,微服務層,任何節點出現問題對用戶都是不可見的,實現了高可用。

上雲前後分析對比

  1. 成本上可以做到有效的控制,隨時做到服務的升降級。
  2. 阿里雲幫助我們實現了故障主機的實時遷移,保障了業務的可用性,運維也比較省心。
  3. 在安全方面基於雲盾和先知等產品的安全防護可以做到多層次的保障,極大提高了我們的服務安全性。
  4. 監控方面也很細緻和全面,支持自定雲完全滿足我們的需求。成本方面可以隨時關注費用中心,自行進行分析。
  5. 效率方面,因為是基於容器雲的微服務架構,這方面也有非常大的改善。

以上幾點任何一點在傳統機房的模式下想做到全面和高效都是比較困難的,這也是我們為何進行雲化的原因。

上雲遇到的問題及解決方法

遇到的問題還是比較多的,我列舉幾個典型的問題。

  1. 中美oss同步大文件有數據重傳問題及日常傳輸方案。穩定性建議採取高速通道,日常傳輸採用multipart分塊實現
  2. 雲端支持批量上傳數據的壓縮及打包下載解壓縮功能。通過udf實現
  3. oss子賬戶授權後只能看到自己目錄內容。通過ossfs實現
  4. 跨境oss數據接收後無法確實該刪除的文件。通過跨境消息通知機制實現
  5. 跟進不同的圖片主題進行切圖參數的相關匹配。通過智能識圖完成
  6. 數據大屏展示。通過datav和quickbi實現
  7. ddos攻擊防護。通過高防ip及waf防火牆實現
  8. 容器雲日誌採集和查看。通過sls實現


分享到:


相關文章: