根據數據統計,我們可以得出結論:每年的618大促銷售額約占全年銷售額的10%左右。以2022年618大促銷售額為例,大促期間,每分鐘的銷售額平均高達1463萬元。因此,從技術角度來看,保證服務的穩定性是至關重要的。相信這些數據可以為您在大促期間制定任務優先順序和做出決策提供有價值的參考。 ...
今年的618大促已經如期而至,接下來我會從技術的角度,跟大家聊聊大促備戰的底層邏輯和實戰方案,希望能夠解答大家心中的一些疑惑。
年份 | 618銷售額(億元) | 年銷售額(億元) | 618銷售額占比 |
2022 | 3793 | 33155 | 11.4% |
2021 | 3439 | 32970 | 10.4% |
2020 | 2694 | 26125 | 10.3% |
2019 | 2017 | 20854 | 9.7% |
2018 | 1592 | 16769 | 9.5% |
-
影響系統穩定性的因素都有哪些? -
穩定性要求與日常對系統的高可用要求有哪些不同之處? -
面對各種不穩定因素,我們應該如何應對?
-
流量大小:大促期間,流量往往是平常的幾倍甚至幾十倍,這對系統的穩定性提出了極高的要求,一個小問題,在流量放大後,往往會演變成大問題; -
數據量大:以2022年的訂單為例,訂單額達到了3.4萬億,在海量訂單數據的場景下,一個簡單的查詢,都會變得非常具有挑戰; -
場景複雜:各類促銷優惠、平臺、商家、運營等各種營銷玩法的疊加,使訂單生產鏈路始終處於高負荷運算狀態; -
交付鏈路長:各端的流量分發、促銷計算、加車、結算、提單、支付、物流配送、客服、售後等各個流程節點都需要保持穩定。如果一個服務99.9%的可用率,那麼100個相關服務節點組合起來,可用率就只能達到99.5%了,而那0.5%的不可用,對應的都是大量的訂單流失; -
容忍度低:消費者要求良好的用戶體驗,商家需要促銷快速生效,平臺則要減少錯誤和資損,保護消費者和商家的利益。更高的期望和關註,帶來的是更低的耐心和容忍度;
-
時間緊迫:大促期間需要在短時間內保證服務的穩定性,通常沒有時間深入技術細節; -
視角不同:穩定性註重整體業務效果,而高可用性註重服務響應結果; -
維度不同:實現業務穩定性保障通常是建立在系統高可用性的基礎之上,並配合相關的服務運營策略,以實現更高維度的業務穩定性。
![圖片](https://img2023.cnblogs.com/blog/27422/202306/27422-20230615083010166-1511210384.png)
![圖片](https://img2023.cnblogs.com/blog/27422/202306/27422-20230615083010224-1909212072.png)
3.1 應用視角
3.1.1 單元化
-
降低整個應用因某個單元故障而導致服務中斷的風險; -
降低故障排查的難度,因為可以快速定位出問題的單元併進行修複; -
每個單元都可以獨立維護和升級,這樣可以降低整個應用因某個單元升級或維護而導致服務中斷的風險; -
每個單元都可以獨立擴展和縮減,這樣可以根據實際需求動態調整應用的規模。
3.1.2 監控預警
-
監控粒度方面:監控按照層級分為底層中間件監控、依賴RPC監控、方法監控、機器監控、系統監控、業務監控、流程監控、整體的大盤監控; -
監控的靈敏度問題。靈敏度過低會導致部分問題被延時暴露甚至被隱藏,而靈敏度過高則會造成信息爆炸,難以分辨信息的主次。因此,在實施監控前需要提前做好功課,確定合適的靈敏度; -
監控的覆蓋度方面:關註監控服務單元、監控指標梳理、監控觸達方法。比如:監控需要覆蓋容器數、資源指標、運行環境(JVM、線程池)、流量大小、限流值、上下游依賴、超時時長、異常日誌、數據容量、模型規模、特征數量等,並可以進行時間維度的縱向對比; -
監控的準確性方面:看可用率,需要看上游調用方的,可能200ms響應時長,對於調用方來說,已經屬於不可用的區間了。看CPU繁忙程度,不能只盯著利用率,還要結合容器核數和CPU負載來分析; -
預警解除方面:接到預警消息,及時排查並處理風險,切不可將小問題演變成大問題。先確認是單機硬體或網路問題,還是集群通用問題,如果是通用問題,能否通過服務調用鏈追蹤技術快速定位問題點,確認好問題原因,才能做好應對預案;
3.1.3 日誌列印
3.1.4 快速失敗
-
線程池超時時間的設置,關鍵系統要擁有動態調整線程池運行參數的能力; -
利用好工具已有的能力,比如:JSF,JimDB,JMQ等中間件也都支持超時失敗的動態調整能力; -
服務限流也是快速失敗的一種實現策略,常見的微服務框架和物理網關一般也都支持類似功能;
3.1.5 服務限流
-
限流方式和閾值需要經過系統多輪壓測驗證,以確保數據指標的準確性。 -
對於業務聚合系統,主要依賴於第三方服務,通常沒有存儲層,瓶頸往往出現在應用服務本身。這種情況下,單機限流是比較好的方式,因為這種方式對於服務擴容或縮容非常友好。只需保證擴容的容器硬體配置與線上容器保持一致即可。 -
對於底層基礎服務,瓶頸點往往在數據存儲層,而存儲層的擴容成本相對較高,實現起來也比較困難。在這種情況下,全局集中式限流是一個很好的選擇,其目的是優先保證存儲層的穩定性。 -
建議根據調用方的重要程度進行精細化限流運營,確保在極端情況下,具有優先保證核心業務可用性的能力;
3.1.6 業務降級
3.2 存儲視角
3.2.1 資料庫
3.2.2 緩存
3.2.3 Elasticsearch
3.3 運營視角
3.3.1 備戰小組
3.3.2 軍演壓測
3.3.3 技術封版
3.3.4 每日巡檢/假期值班
3.3.5 應急預案
![圖片](https://img2023.cnblogs.com/blog/27422/202306/27422-20230615083010252-2050959947.png)
本文從技術角度深入分析了大促備戰的背景和重要性,重點介紹了備戰期間穩定性保障的相關措施,包括具體的指導方向和落地細節。本文旨在回顧和梳理備戰期間的關鍵步驟,以幫助我們更加從容地應對系統穩定性的挑戰。雖然大促備戰是一場緊急行動,但備戰的效果離不開平時的協作共識和技術積累,過往的經驗和教訓,在此刻將得到充分驗證。
-end-
作者|
本文來自博客園,作者:古道輕風,轉載請註明原文鏈接:https://www.cnblogs.com/88223100/p/Revealing-the-Mystery-of-E-commerce-Promotion-and-Preparation-from-a-Technical-Perspective.html