日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

高并發秒殺方案:熱點散列,庫存分桶,你需要了解一下

來源: 責編: 時間:2024-02-01 12:48:19 200觀看
導讀在大規模秒殺活動中,針對單一商品的庫存扣減請求峰值可以輕松達到幾萬、甚至幾十萬QPS,如常見的搶茅臺活動。在這種場景下再基于數據庫進行庫存扣減就顯得無能為力了,記住一個關鍵指標:在MySQL中,目前單行更新操作的的性能

在大規模秒殺活動中,針對單一商品的庫存扣減請求峰值可以輕松達到幾萬、甚至幾十萬QPS,如常見的搶茅臺活動。在這種場景下再基于數據庫進行庫存扣減就顯得無能為力了,記住一個關鍵指標:在MySQL中,目前單行更新操作的的性能約為500QPS。對于動輒幾萬QPS的庫存扣減來說,這個量級肯定是偏低了。Lp728資訊網——每日最新資訊28at.com

所以為了應對這種高并發場景,業界提出了一種方案叫 熱點散列,即今天群里討論的庫存分桶。Lp728資訊網——每日最新資訊28at.com

其方案如下圖所示:將同一商品的庫存提前分配至多個“桶”中,根據路由規則(隨機、UID取模)將庫存請求路由至不同的桶,從而將集中于單實例的請求分散,此方案類似于水平擴展。Lp728資訊網——每日最新資訊28at.com

圖片圖片Lp728資訊網——每日最新資訊28at.com

至于“分桶”的技術實現,很多技術文章或解決方案都建議采用Redis來實現。具體而言,對任一秒殺活動的商品,可將其分成N份,每份對一個緩存Key,緩存Key的構成必須遵循一定的規律,便于路由,示例如下:Lp728資訊網——每日最新資訊28at.com

key: inventoryId_1,value: 庫存數量 Lp728資訊網——每日最新資訊28at.com

key: inventoryId_2,  value: 庫存數量 Lp728資訊網——每日最新資訊28at.com

... Lp728資訊網——每日最新資訊28at.com

key: inventoryId_N,  value: 庫存數量Lp728資訊網——每日最新資訊28at.com

在扣減庫存時,可以根據Key的編號區間,采用隨機算法,UID取模等方式確定一個編號,然后組裝Key訪問緩存。 Lp728資訊網——每日最新資訊28at.com

舉個例子,假如inventoryId為20221821,將庫存分配至100個桶,則根據相應Key的區間為[1,100]。Lp728資訊網——每日最新資訊28at.com

服務端收到商品庫存扣減請求后,將請求中的參數UID取模,假設UID % 100 = 67,則組裝Key為 20221821_67,基于20221821_67扣減對應緩存桶中的庫存。Lp728資訊網——每日最新資訊28at.com

熱點散列的核心思想為:在緩存中扣減庫存,以提升系統的吞吐量;緩存扣減成功后,異步向數據庫寫入庫存扣減流水并更新庫存;此外,還需要通過定時任務等機制實現緩存與數據庫的庫存總量同步。Lp728資訊網——每日最新資訊28at.com

這個方案看上去很不錯,但也會存在如下三個問題:Lp728資訊網——每日最新資訊28at.com

一、在緩存中扣減庫存如何保證冪等性呢?若冪等性防控不足,則可能出現重復扣減,進而導致少賣。Lp728資訊網——每日最新資訊28at.com

二、緩存寫操作和數據庫寫操作無法通過事務機制來保證強一致性,那么該如何有效的保證庫存數據的一致性呢?Lp728資訊網——每日最新資訊28at.com

三、用戶所見的庫存應為總庫存,即便總庫存充足,一旦分桶,如何保證用戶請求被路由到的分桶油足夠的庫存呢?Lp728資訊網——每日最新資訊28at.com

所以個人覺得,熱點散列在理論上是解決庫存熱點問題最有效的方案,但在實際應用中,需要考慮的細節非常多。基于緩存的庫存扣減的方案是比較粗糙的,它只滿足一些特定場景的需要。對于淘寶、京東這類在想商品規模達數十億的大型電商平臺而言,所面臨的問題要復雜得多,除了穩定性、可靠性、一致性,還包括庫存分配,庫存碎片,庫存擴縮容、流量傾斜、商品少賣、商品超賣等。Lp728資訊網——每日最新資訊28at.com

上次去阿里交流的時候,阿里專家唐三說:在阿里,庫存架構采用的方案是做庫存單元化架構,這種方案應該是大型電商平臺庫存系統的終極解決方案。Lp728資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-70416-0.html高并發秒殺方案:熱點散列,庫存分桶,你需要了解一下

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 大規模敏捷測試怎么做(集成篇)

下一篇: 司空見慣的錯誤檢測,原來還有這么多干貨!

標簽:
  • 熱門焦點
  • vivo TWS Air開箱體驗:真輕 臻好聽

    在vivo S15系列新機的發布會上,vivo的最新款真無線藍牙耳機vivo TWS Air也一同發布,本次就這款耳機新品給大家帶來一個簡單的分享。外包裝盒上,vivo TWS Air保持了vivo自家產
  • 6月iOS設備性能榜:M2穩居榜首 A系列只能等一手3nm來救

    沒有新品發布,自然iOS設備性能榜的上榜設備就沒有什么更替,僅僅只有跑分變化而產生的排名變動,畢竟蘋果新品的發布節奏就是這樣的,一年下來也就幾個移動端新品,不會像安卓廠商,一
  • Golang 中的 io 包詳解:組合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是對Reader和Writer接口的組合,
  • 得物效率前端微應用推進過程與思考

    一、背景效率工程隨著業務的發展,組織規模的擴大,越來越多的企業開始意識到協作效率對于企業團隊的重要性,甚至是決定其在某個行業競爭中突圍的關鍵,是企業長久生存的根本。得物
  • 谷歌KDD'23工作:如何提升推薦系統Ranking模型訓練穩定性

    谷歌在KDD 2023發表了一篇工作,探索了推薦系統ranking模型的訓練穩定性問題,分析了造成訓練穩定性存在問題的潛在原因,以及現有的一些提升模型穩定性方法的不足,并提出了一種新
  • 微信語音大揭秘:為什么禁止轉發?

    大家好,我是你們的小米。今天,我要和大家聊一個有趣的話題:為什么微信語音不可以轉發?這是一個我們經常在日常使用中遇到的問題,也是一個讓很多人好奇的問題。讓我們一起來揭開這
  • 19個 JavaScript 單行代碼技巧,讓你看起來像個專業人士

    今天這篇文章跟大家分享18個JS單行代碼,你只需花幾分鐘時間,即可幫助您了解一些您可能不知道的 JS 知識,如果您已經知道了,就當作復習一下,古人云,溫故而知新嘛。現在,我們就開始今
  • OPPO K11搭載長壽版100W超級閃充:26分鐘充滿100%

    據此前官方宣布,OPPO將于7月25日也就是今天下午14:30舉辦新品發布會,屆時全新的OPPO K11將正式與大家見面,將主打旗艦影像,和同檔位競品相比,其最大的賣
  • 榮耀Magic4 至臻版 首創智慧隱私通話 強勁影音系統

    2022年第一季度臨近尾聲,在該季度內,許多品牌陸續發布自己的最新產品,讓大家從全新的角度來了解當今的手機技術。手機是電子設備中,更新迭代十分迅速的一款產品,基
Top 主站蜘蛛池模板: 界首市| 乌拉特前旗| 玉山县| 东源县| 任丘市| 辽源市| 天水市| 林西县| 车险| 东源县| 光泽县| 涞源县| 贡觉县| 广德县| 察隅县| 东莞市| 茶陵县| 图们市| 博乐市| 林西县| 阿拉尔市| 社旗县| 昌宁县| 长宁县| 镇康县| 凉山| 邢台市| 额尔古纳市| 十堰市| 合肥市| 玉环县| 景东| 罗山县| 普兰店市| 藁城市| 莆田市| 沁源县| 上蔡县| 哈巴河县| 麻城市| 罗定市|