默認
打賞 發表評論 1
社交軟件紅包技術解密(八):全面解密微博紅包技術方案
閱讀(1226) | 評論(1 收藏1 淘帖1 1

本文引用自InfoQ,原題《解密微博紅包:架構、防刷、監控和資源調度》,鏈接:infoq.cn/article/2016-hongbao-weibo,收錄時有改動。


1、引言


隨著互聯網的發展,打破了以往傳統的發紅包,帶給了紅包全新的玩法。微博紅包已經成為用戶給粉絲拜年的一種途徑,土豪版成為土豪刷存在感的方式。每年的紅包大戰都是用戶的現金盛宴,對于整個系統卻是殘酷的考驗。

微博有 8 億注冊用戶,單日活躍用戶數 1.34 億的社交平臺。紅包在微博平臺上運行,針對所有的微博用戶開放,微博所有用戶都可參與紅包活動。

微博紅包有如下特點:

  • 1)紅包價值高、種類多、覆蓋用戶廣,億級別用戶參與;
  • 2)半點準時開搶,高并發訪問、瞬間峰值高,每分鐘帶來上億次的搶紅包峰值;
  • 3)請求快速響應,更新億級用戶中獎狀態及紅包狀態;
  • 4)單個紅包數額大。

春晚當天紅包總價值超過 10 億,有 1.34 億用戶參與,產生了 8 億多次的搶紅包行為,其中并發量為平時峰值的 10 倍左右。

在服務器數量一定的情況下,如何構建高并發操作、瞬間峰值高的穩定服務?對于團隊和架構師都是一個極大的挑戰。這時候系統的架構尤為重要!本文將為你分享這些內容。

二、分享者


社交軟件紅包技術解密(八):全面解密微博紅包技術方案_a.jpg
柯立志:微博紅包團隊技術負責人

三、系列文章


❶ 系列文章目錄:


❷ 其它相關文章:


四、紅包架構


微博紅包支持每秒幾十萬次的操作,應對突發性的熱點事件,快速響應,高內聚低耦合的服務成了架構首先要考慮的因素。

社交軟件紅包技術解密(八):全面解密微博紅包技術方案_1.jpg

微博是社交型應用,紅包在用戶數據、關系、搶紅包等結構上存在著各種各樣復雜的依賴,這些依賴相比其它應用來說,調用頻率更高,性能要求也更高。

如上圖所示,有多個應用模塊接入紅包的服務層,服務層由多個節點組成,每個節點對應相應的功能并且相對獨立。代碼模塊的使用和組織上相對獨立,保證主功能的快速和穩定,將附屬的新功能分離在獨立模塊中。其中紅色虛線框內為核心的功能模塊,是重點需要保護的功能。

微博紅包提供獲取紅包屬性(紅包金額、紅包設置、紅包狀態、獲取抽取結果列表、拆包,抽獎等)接口。服務層調用紅包 SDK 相應的 API,會根據應用層邏輯需求提供數據和定制化得數據,完成前端完成交互,達到應用層需要展現的效果。

五、防刷策略


微博紅包有別于微信用戶發出的紅包,微信用戶發出的紅包是針對自己所認識的朋友或者已存在于微信群的用戶;微博紅包是針對于微博所有用戶的紅包,通過分析參與紅包的用戶數據每年都會產生一些囤積大量賬號準備在春晚大發橫財的公司和個人。

如何防止微博紅包被自動注冊或者通過轉賣賬號來領取紅包?這成為面對我們需要解決的一大問題。

社交軟件紅包技術解密(八):全面解密微博紅包技術方案_2.jpg

微博通過基于用戶在微博上的行為分析,通過登錄,發微博,身份驗證等方面來進行分析。

主要途徑有:

  • 1)用戶注冊:通過用戶行為分析來識別機器注冊的用戶,則注冊環節進行攔截;
  • 2)用戶登錄:分析用戶登錄的行為,通過驗證碼,身份驗證以及手機號驗證等措施來提高機器自動登錄的門檻;
  • 3)賬號質量:通過實名認證,微博的動態等方面來計算出用戶的質量;
  • 4)參與紅包:紅包戰場一貫是刷獎賬號的獲利主戰場, 通過用戶平時在微博的行為、屬性以及實時的登錄狀態和常用設備來進行分析,判斷是否是正常賬號來確定是否可以中獎。

六、完善的監控


紅包系統是一個大而規則復雜的系統,系統越大,依賴的資源越多,也就越容易出現各種各樣的問題。為了給提供穩定運行的服務,必須要能時刻知曉各個資源當前的運行狀態。并且在系統出現異常之前或者出現異常的時候,對問題進行排查和定位。

社交軟件紅包技術解密(八):全面解密微博紅包技術方案_3.jpg

社交軟件紅包技術解密(八):全面解密微博紅包技術方案_4.jpg

社交軟件紅包技術解密(八):全面解密微博紅包技術方案_5.jpg

社交軟件紅包技術解密(八):全面解密微博紅包技術方案_6.jpg

如上圖所示,完善的監控系統,為微博紅包順利度過春晚提供了很好的保障。

主要涉及的監控如下:

1)應用層接口響應時間監控

通過實時的分析 access log 日志,以 HTTP code 和響應時間維度實時統計出接口的狀態和性能,根據占比來查看接口的健康程度。

2)服務層各模塊性能監控

在模塊中記錄開始時間和結束時間,每次處理完計算出模塊的耗時,通過這種方式很好的發現各個模塊是否正常。   

3)網絡層監控

微博紅包的出口網絡是一個單獨的 app 池,出口帶寬使用到 80% 的時候網絡穩定性就可能受到影響。通過計算后端服務器輸出計算出帶寬,以便能夠做到及時響應擴容。

4)資源層的監控

對各種資源的監控,比如 Redis、MySQL、MC 等資源的連接時間、狀態和操作的實時統計分析,快速定位是否存在資源瓶頸。

5)服務器的性能監控

通過運維監控系統,對服務器的 CPU、內存使用情況,做到了能夠觀察每臺服務器具體的運行情況。

6)系統錯誤日志的監控

系統錯誤監控包括服務器負載,服務進程狀態,資源連接,網絡連接出現的問題,實時通過手機,郵件和私信知道。為快速響應創造了條件。

七、彈性資源管理和調度


1)故障的秒級切換:

微博紅包服務部署在了三個機房(包括云服務),任何一個機房如果出現網絡或者其它不可預測的問題可以在幾秒鐘之內將服務切換到其它機房。

2)資源的相互獨立:

資源的相互獨立,讓資源的可擴展性變得容易。而且使得各個服務之間交叉影響達到了最小。

3)引入阿里云做為第三機房,使用 Docker 快速部署服務:

紅包的核心服務主要分布在 2 個機房,兩者互相做為災難備份用途,為應對超預期的峰值,引入阿里云做為第三機房。使用定制化的紅包 Docker 快速部署服務來實現彈性調度架構。通過 Docker 自動化操作大規模集群,進行彈性調度資源的任務,實現快速部署服務來應付超預期的峰值。

八、系統的挑戰和性能優化


為了保證用戶體驗,微博紅包需要解決以下幾個問題:

  • 系統性能的可靠性;
  • 關鍵節點的可用性;
  • 如何應對突發熱點;
  • 業務頻繁迭代的處理。

1)系統架構的升級:

模塊的獨立化,避免出現模塊間的相互影響。

nginx+lua 的使用,使得服務器的 QPS 有了數量級的提升,同時服務器集群做到了秒級重啟。

2)修枝剪頁:

減少對于系統外部的依賴,梳理完整的調用關系圖。非核心功能使用異步調用,合并相關的調用,去掉重復的調用。保證核心調用邏輯,避免非核心業務影響核心業務。

3)多級緩存:

服務端本地緩存,使用 nginx 本身緩存和服務器的 L0 緩存,來提升模塊的響應速度,做到了 90% 以上核心接口的響應時間在 50ms 以內,減少了進程等待時間,提升了服務器的處理速度。

九、寫在最后


一年一度的各大平臺搶紅包還會延續下去,這是一個斗智斗勇的過程,在服務器有限的情況下每一次與峰值的對抗都是對技術一次極大的挑戰,每次挑戰都是帶來技術上的成長和收獲。

(原文鏈接:https://www.infoq.cn/article/2016-hongbao-weibo

附錄:更多架構方面的文章匯總


[1] 有關IM架構設計的文章:
淺談IM系統的架構設計
簡述移動端IM開發的那些坑:架構設計、通信協議和客戶端
一套海量在線用戶的移動端IM架構設計實踐分享(含詳細圖文)
一套原創分布式即時通訊(IM)系統理論架構方案
從零到卓越:京東客服即時通訊系統的技術架構演進歷程
蘑菇街即時通訊/IM服務器開發之架構選擇
騰訊QQ1.4億在線用戶的技術挑戰和架構演進之路PPT
微信后臺基于時間序的海量數據冷熱分級架構設計實踐
微信技術總監談架構:微信之道——大道至簡(演講全文)
如何解讀《微信技術總監談架構:微信之道——大道至簡》
快速裂變:見證微信強大后臺架構從0到1的演進歷程(一)
17年的實踐:騰訊海量產品的技術方法論
移動端IM中大規模群消息的推送如何保證效率、實時性?
現代IM系統中聊天消息的同步和存儲方案探討
IM開發基礎知識補課(二):如何設計大量圖片文件的服務端存儲架構?
IM開發基礎知識補課(三):快速理解服務端數據庫讀寫分離原理及實踐建議
IM開發基礎知識補課(四):正確理解HTTP短連接中的Cookie、Session和Token
WhatsApp技術實踐分享:32人工程團隊創造的技術神話
微信朋友圈千億訪問量背后的技術挑戰和實踐總結
王者榮耀2億用戶量的背后:產品定位、技術架構、網絡方案等
IM系統的MQ消息中間件選型:Kafka還是RabbitMQ?
騰訊資深架構師干貨總結:一文讀懂大型分布式系統設計的方方面面
以微博類應用場景為例,總結海量社交系統的架構設計步驟
快速理解高性能HTTP服務端的負載均衡技術原理
子彈短信光鮮的背后:網易云信首席架構師分享億級IM平臺的技術實踐
知乎技術分享:從單機到2000萬QPS并發的Redis高性能緩存實踐之路
IM開發基礎知識補課(五):通俗易懂,正確理解并用好MQ消息隊列
微信技術分享:微信的海量IM聊天消息序列號生成實踐(算法原理篇)
微信技術分享:微信的海量IM聊天消息序列號生成實踐(容災方案篇)
新手入門:零基礎理解大型分布式架構的演進歷史、技術原理、最佳實踐
一套高可用、易伸縮、高并發的IM群聊、單聊架構方案設計實踐
阿里技術分享:深度揭秘阿里數據庫技術方案的10年變遷史
阿里技術分享:阿里自研金融級數據庫OceanBase的艱辛成長之路
社交軟件紅包技術解密(一):全面解密QQ紅包技術方案——架構、技術實現等
社交軟件紅包技術解密(二):解密微信搖一搖紅包從0到1的技術演進
社交軟件紅包技術解密(三):微信搖一搖紅包雨背后的技術細節
社交軟件紅包技術解密(四):微信紅包系統是如何應對高并發的
社交軟件紅包技術解密(五):微信紅包系統是如何實現高可用性的
社交軟件紅包技術解密(六):微信紅包系統的存儲層架構演進實踐
社交軟件紅包技術解密(七):支付寶紅包的海量高并發技術實踐
社交軟件紅包技術解密(八):全面解密微博紅包技術方案
>> 更多同類文章 ……

[2] 更多其它架構設計相關文章:
騰訊資深架構師干貨總結:一文讀懂大型分布式系統設計的方方面面
快速理解高性能HTTP服務端的負載均衡技術原理
子彈短信光鮮的背后:網易云信首席架構師分享億級IM平臺的技術實踐
知乎技術分享:從單機到2000萬QPS并發的Redis高性能緩存實踐之路
新手入門:零基礎理解大型分布式架構的演進歷史、技術原理、最佳實踐
阿里技術分享:深度揭秘阿里數據庫技術方案的10年變遷史
阿里技術分享:阿里自研金融級數據庫OceanBase的艱辛成長之路
達達O2O后臺架構演進實踐:從0到4000高并發請求背后的努力
優秀后端架構師必會知識:史上最全MySQL大表優化方案總結
小米技術分享:解密小米搶購系統千萬高并發架構的演進和實踐
一篇讀懂分布式架構下的負載均衡技術:分類、原理、算法、常見方案等
通俗易懂:如何設計能支撐百萬并發的數據庫架構?
>> 更多同類文章 ……

即時通訊網 - 即時通訊開發者社區! 來源: - 即時通訊開發者社區!

上一篇:社交軟件紅包技術解密(七):支付寶紅包的海量高并發技術實踐下一篇:社交軟件紅包技術解密(九):談談手Q紅包的功能邏輯、容災、運維、架構等

本帖已收錄至以下技術專輯

推薦方案
評論 1
贊!
打賞樓主 ×
使用微信打賞! 使用支付寶打賞!

返回頂部
曾氏料二肖中特