天天看點

利用阿裡雲容器服務實作高可用搶紅包應用

紅包是春節習俗,原本是讨個吉利的意圖。在網際網路技術高度發展的今天,用手機搶紅包已經成為一種文化、一種生活方式;據支付寶統計的資料顯示,2016年2月7日除夕夜,支付寶共四輪“咻一咻”互動平台的總參與次數達到了3245億次;在21點09分,使用者的參與熱情達到了頂峰,“咻一咻”峰值一度達到210億次/分鐘。

業務需求催生技術更新,随着紅包業務的大衆化、普遍化,我們對高可用、可擴充、按需提供服務的技術架構要求越來越高。下面介紹一種基于阿裡雲容器服務及相關雲産品組成的高可用搶紅包系統架構;

下圖給出了基于阿裡雲相關産品實作的搶紅包系統架構,所涉及的産品包括阿裡雲容器服務,mns,rds,slb,sls等。

利用阿裡雲容器服務實作高可用搶紅包應用

使用者端:模拟使用者搶紅包軟體(如支付寶),能發送使用者的的搶紅包請求,并攜帶身份id等資訊;根據服務端的響應,把中獎資訊回報給使用者;

請求處理邏輯:使用者發送搶紅包資訊到“請求處理邏輯叢集”,這部分有slb、ecs叢集,ecs叢集通過阿裡雲容器服務實作容器化。可以接收使用者請紅包請求,并調用接口進行身份驗證、mns擷取消息(搶紅包)等;通過mns回報消息判斷是否中獎,并回報給使用者;

身份驗證子產品:使用者驗證搶紅包使用者的身份,可以根據業務實作不同的限制;例如約定同一個使用者id在一定時間内隻能搶一次、或者随機放棄1/2的使用者請求;

紅包管理監控:顯示目前mns中有效紅包數;進行紅包發放操作,可以設定總紅包數,多批次發放,以及發放時間間隔等;可以基于sls日志服務進行紅包資料統計;

mns服務:模拟紅包隊列,請求處理子產品通過從mns搶消息來模拟搶紅包,搶到消息的請求即為搶到紅包;同時通過往mns中發送消息模拟賽紅包;

sls服務:日志存儲服務,會把搶紅包過程中産生的狀态日志(中獎、未中獎、驗證錯誤等)進行統計、并持久化;

rds服務:存儲使用者相關資訊,驗證搶紅包使用者的身份;持久化紅包發放資訊,包含抽中紅包使用者的id,時間,紅包id等;

slb服務:對使用者請求進行負載均衡;

其中mns、sls、rds、slb都通過阿裡雲提供的雲服務實作,其餘元件均通過簡單的代碼實作,并通過容器服務進行微服務化;

下圖以容器服務為中心描述了系統之間的調用:

利用阿裡雲容器服務實作高可用搶紅包應用

系統通過4個微服務互相配合,并引用rds、mns、sls等提供的服務能力;下面是通過容器服務部署的編排檔案内容:

根據上面編排模闆内容介紹阿裡雲容器服務特點:

可通過對cpu、記憶體的使用限制定義容器服務的伸縮功能;

上面配置表示容器内cpu使用率超過70%時會自動擴充一個容器,且容器内cpu使用率低于40%時會自動縮減一個容器;詳見:

<a href="https://help.aliyun.com/document_detail/26017.html?spm=5176.doc26018.6.601.fo3esr">https://help.aliyun.com/document_detail/26017.html?spm=5176.doc26018.6.601.fo3esr</a>

在編排模闆中添加 routing 标簽,定義相應的域名或者域名字首。可以實作簡單的 7 層協定負載均衡;

上面配置表示可以通過以下域名通路服務,其中test為域名的字首,monitor為url的path部分;

<a href="http://test.c61d9ad24beea4d93a4f574202f443a44.cn-beijing.alicontainer.com/monitor">http://test.c61d9ad24beea4d93a4f574202f443a44.cn-beijing.alicontainer.com/monitor</a>

具體的系統中,有一些服務是不願對外開放的,例如本系統的賬号驗證服務;阿裡雲容器服務引入了叢集内負載均衡功能,您隻需要使用以 .local 結尾的域名,并在依賴的服務的 external_links 中增加這個域名,依賴的服務便可以通過 .local 的域名通路到依賴的服務,并且能夠配合健康檢查做到自動的服務發現。

詳見:

<a href="https://help.aliyun.com/document_detail/35358.html?spm=5176.doc25984.6.654.cqipvm">https://help.aliyun.com/document_detail/35358.html?spm=5176.doc25984.6.654.cqipvm</a>

阿裡雲日志服務(log service,簡稱sls)是針對日志場景的平台化服務。适用于日志中轉、監控、性能診斷、日志分析、審計等場景。容器服務提供了內建日志服務的能力,可以友善地将應用日志發送到日志服務裡。

上述定義會将容器内/var/log/redpacket_access.log檔案内的内容輸入到相應的日志服務中;詳見:

<a href="https://help.aliyun.com/document_detail/26036.html?spm=5176.doc35358.6.633.gy4q50">https://help.aliyun.com/document_detail/26036.html?spm=5176.doc35358.6.633.gy4q50</a>

1 搶紅包系統第一步首先要把紅包塞進“口袋”,可以通過管理子產品進行相關操作;

通路管理監控服務頁面提示的通路端點,然後點選發放紅包頁面;

利用阿裡雲容器服務實作高可用搶紅包應用
利用阿裡雲容器服務實作高可用搶紅包應用

可以在頁面中輸入紅包相關資訊,紅包總數、發放次數、時間間隔等;

上圖中表示:分3次發放10個紅包,每次的發放間隔是2秒;點選“發放紅包”效果如下:

利用阿裡雲容器服務實作高可用搶紅包應用

2 第二步:塞完紅包後,即可進行搶紅包活動;

通過webpage頁面提示的通路端點,可以登入搶紅包首頁面;

利用阿裡雲容器服務實作高可用搶紅包應用
利用阿裡雲容器服務實作高可用搶紅包應用

搶紅包頁面可以配置一些使用者相關的資訊用于紅包發放時的證據;本示例中僅使用一個識别碼,憑識别碼資訊領獎;點選搶紅包即可完成操作;

利用阿裡雲容器服務實作高可用搶紅包應用

3 作為搶紅包的組織者除了把紅包分發給使用者,仍然期望對目前紅包狀态,以及所有紅包的分布有所了解;

可以通路監控子產品的資料分析頁面檢視相關資料,監控子產品通過sls提供的資料接口擷取日志資訊,并進行資料統計;這裡的監控子產品隻是簡單的demo,實際應用中日品質會非常大,可以通過實時日志分析工具進行統計;

利用阿裡雲容器服務實作高可用搶紅包應用

本示例隻是一個搶紅包應用的簡單demo,離真正線上應用尚有距離;但其中所用到的相關技術:如容器服務的彈性伸縮、負載均衡,日志服務的資料分析,消息服務高并發處理等都是搶紅包應用所需的;

參考:

阿裡雲容器服務:

<a href="https://help.aliyun.com/product/25972.html?spm=5176.product26090.6.4.azxfaw">https://help.aliyun.com/product/25972.html?spm=5176.product26090.6.4.azxfaw</a>

sls:

<a href="https://help.aliyun.com/product/28958.html?spm=5176.doc25974.6.15.vmw9if">https://help.aliyun.com/product/28958.html?spm=5176.doc25974.6.15.vmw9if</a>

slb:

<a href="https://help.aliyun.com/product/27537.html?spm=5176.product28958.6.56.bn5r4b">https://help.aliyun.com/product/27537.html?spm=5176.product28958.6.56.bn5r4b</a>

mns:

<a href="https://help.aliyun.com/product/27412.html?spm=5176.product27537.6.42.iwbzcz">https://help.aliyun.com/product/27412.html?spm=5176.product27537.6.42.iwbzcz</a>

rds:

<a href="https://help.aliyun.com/product/26090.html?spm=5176.product27412.6.47.sritsf">https://help.aliyun.com/product/26090.html?spm=5176.product27412.6.47.sritsf</a>

繼續閱讀