作者:鹿玄,阿裡雲解決方案架構師
前言
直播帶貨是近期發展非常迅猛的一種新的電商模式。建構一個電商直播平台從技術角度上大緻可以分為視訊直播服務、CDN、前端(H5/小程式)、大資料、以及各種業務背景,如直播互動、商家和營運平台等。相比于傳統的電商系統,電商直播平台有一些類似的地方,如系統需要具備高并發的能力來應對流量洪峰;但同時直播業務也有一些獨有的特性:
1. 直播業務的潮汐特性,需要更強的彈性能力及成本優化方案。
2. 微服務化後,要求更高的開發效率,以及更精細化的流量控制。
3. 直播互動有着非常高的實時性,系統需要具備前後端監控一體化的能力。
4. 直播業務涉及到後期音視訊的處理需要合理配置設定計算資源。
可以看到上述特性都是一些非業務性的需求,為了達成這一目的,企業需要在IDC額外投入大量的人力進行基礎設施的建設和維護。目前,越來越多的企業已經遷移到雲平台或者正在向雲平台遷移的過程中,如果能将這些非業務功能下沉,利用雲平台提供的産品&技術來承接這些能力的話,企業就完全可以專注于業務本身,實作快速疊代、獨立高效、減輕成本。
雲原生架構正是為此而生。
什麼是雲原生架構?
雲原生架構是基于雲原生技術的一組架構原則和設計模式的集合,旨在将雲應用中的非業務代碼部分進行最大化的剝離,進而讓雲設施接管應用中原有的大量非功能特性(如彈性、韌性、安全、可觀測性、灰階等),使業務不再有非功能性業務中斷困擾的同時,具備輕量、靈活、高度自動化的特點。

為實作雲原生架構,必然需要依托于各種雲原生理念、實踐及技術,即雲平台所提供的容器、微服務、DevOps、Service Mesh、Serverless和中間件等服務。從CNCF的定義來看,采用基于雲原生的技術和管理方法,将更好地把業務生于“雲”或遷移到雲平台,進而享受“雲”的高效和持續服務能力。
電商直播需要哪些雲原生解決方案?
電商直播平台系統為了滿足業務的快速發展,需要具備一些額外能力(當然這裡可能隻是一部分),我們暫時以這些為例,将需求進一步總結抽象,大緻可以歸納為以下幾點:
1. 極緻彈性和成本;
2. 微服務治理及流量控制;
3. 立體化監控;
4. 音視訊處理自動化,計算資源按需使用。
為解決以上痛點,接下來圍繞電商直播平台,詳細介紹在一些典型的業務場景下,阿裡雲提供的一整套雲原生解決方案。
容器服務ACK解決對成本和極緻彈性的訴求
傳統架構在應對“電商直播”這種新式網際網路化業務時,常常面臨釋出疊代效率低、高峰期擴容慢、運維複雜度高三大痛點。同時直播業務有典型的瞬間流量沖擊問題,無法有效預估峰值,并且高峰期間對延遲敏感,通過擴容K8s Node節點方案無法滿足業務需求。
直播業務可以借助阿裡雲容器服務ACK + VK (Serverless ECI基礎設施)架構,解決直播業務對成本和極緻彈性訴求,具體展現在:
- 研發效率提升100%;
- 運維資源基本解放;
- 彈性Serverless ECI,資源成本降低60%~70%。
同時通過納管注冊形态,可以實作将其他雲平台和IDC自建K8s叢集進行統一管理,幫助客戶抹平了多雲架構中日志采集、監控等運維管理的差異性,大幅提升了整體運維效率。

微服務引擎MSE提供全面的微服務治理方案
在直播過程中,商家和觀衆進行互動下單,直播前端和背景業務系統進行頻繁的互動。直播的背景業務系統采用微服務+容器的架構,業務系統根據不同的子產品(如店鋪、商品、訂單)已經進行了微服務拆分。同時為了滿足業務需要,業務系統需要具備流量控制的能力,即對某些微服務進行了多版本的部署,并将特定的使用者請求引流到某個特定版本進行處理。
衆所周知,系統采用微服務化部署後,調用鍊路變得複雜。此外在容器環境下,POD IP的不固定性等因素都為實作流量控制帶來一定的難度。我們可以采用阿裡雲微服務引擎(MSE)提供的微服務治理方案。
微服務引擎MSE為微服務應用提供全面的微服務治理方案,包括服務鑒權、無損下線、離群執行個體摘除、服務降級、金絲雀釋出、标簽路由等功能。其中标簽路由功能可以簡單完美地實作在K8s環境下流量控制的能力。微服務釋出過程中,隻需編輯YAML檔案添加自定義标簽,同時在MSE控制台将請求參數(如http header等)和此前建立的标簽進行綁定即可。

通過此方案,不僅可以在生産環境中無侵入性地解決了流量控制的問題,在開發測試環境中,也可将标簽路由功能應用在分支測試等場景。
ARMS提供完整立體化全鍊路監控方案
電商直播系統包括H5頁面和小程式前端層、微服務應用層、中間件層(MQ、Redis等)、資料庫層以及基礎資源層等,系統中任何一個環節出問題都可能導緻一條業務請求出現異常。結合業務需求,運維效率、資源成本等因素,部署在雲上的應用可以通過阿裡雲應用實時監控服務(ARMS) 為直播業務提供一套完整的立體化的全鍊路監控方案。

ARMS領域全景圖
在直播場景下,ARMS提供的功能解決了諸如以下幾個實際問題:
- 在直播過程中,如果使用者在前端進行下單等操作發生錯誤,利用ARMS提供的前後端鍊追蹤功能,可将前端與後端串聯起來,實作一站式的問題排查。
- 系統中出現慢調用後,需要對整個鍊路中的瓶頸進行定位,而這個瓶頸可能出現在網絡延時、微服務應用内部,或者應用所依賴的緩存和資料庫等元件,開發運維人員可以借助ARMS提供的白屏化鍊路監控、問題診斷等能力來快速定位。
- 在ARMS控制台為核心業務及資源配置了完善的監控報警能力,通過短信、釘釘、Webhook等方式推送給工程師進行第一時間排查,及時發現問題減少業務損失。
阿裡雲函數計算解決自動化及效率等問題
在直播平台發起的直播結束後,通常會有一些回放視訊需要進行一些處理,比如對視訊進行轉碼,或其他處理後再進行二次分發。通常為了實作這一個功能,我們需要自建轉碼伺服器,但由于直播業務天然的潮汐屬性,大部分時間這些轉碼伺服器處于閑置階段,無法實作計算資源的最大利用和成本最優化。
阿裡雲函數計算 FC 事件觸發機制完美第解決了自動化及資源使用率等問題。開發人員可以将轉碼邏輯部署到函數計算,配置OSS事件觸發器,當有新的直播回放視訊上傳到OSS後,可自動觸發函數計算進行轉碼及分發。

此方案具備的優勢是:
- 快速上線: 使用者基于FFmpeg自建的轉碼服務,裡面很多指令參數都是線上實踐很好的參數,函數計算支援使用者指令無縫遷移, FFmpeg的版本也可以自定義。
- 彈性高可用:計算力不再是瓶頸,迅速調動大量計算資源進行加速、并行轉碼。
- 降低成本: 視訊轉碼是CPU密集型,基于函數計算按需付費,能大大降低轉碼成本。
總結
結合上面所讨論的内容,我們再來看下采用阿裡雲雲原生解決方案後,一個完整的電商直播平台的部署架構如下:

經過實際場景驗證及使用者的綜合評估,電商直播平台借助全面的雲原生容器化能力和中間件産品能力,大幅提升開發部署運維效率達50%~100%,極大地提升了使用者體驗,為業務持續發展打下了堅實的基礎。
更多雲原生産品細節請關注:
容器服務ACK 微服務引擎MSE 應用實時監控服務 ARMS Serverless 函數計算掃碼了解更多技術内容與客戶案例: