專案 流量削峰技術

2021-10-08 14:06:55 字數 861 閱讀 8498

秒殺令牌的原理和使用方法

秒殺大閘的原理和使用方法

佇列洩洪的原理和使用方式

存在缺點:

秒殺下單介面會被指令碼不停的刷

秒殺驗證邏輯和秒殺下單介面強關聯,**冗餘度高

秒殺驗證邏輯複雜,對交易系統產生無關聯負載

秒殺介面需要依靠令牌才能進入

秒殺的令牌由秒殺活動模組負責生成

秒殺活動模組對秒殺令牌生成全權處理,邏輯收口

秒殺下單前需要先獲得秒殺令牌

前端先獲得秒殺活動的令牌,在建立訂單。這樣有令牌才能進秒殺介面。秒殺的令牌由秒殺活動模組負責生成。但是如果有成百上億的使用者就會生出很多令牌??---》秒殺大閘

依靠秒殺令牌的授權原理定製化發牌邏輯,做到大閘功能

根據秒殺商品初始庫存頒發對應數量令牌,控制大閘流量

使用者風控策略前置到秒殺令牌發放中 --就是看使用者商品 活動資訊對不對

庫存售馨判斷前置到秒殺令牌發放中 -- 售罄的話redis裡面會有乙個key,就是判斷有key就不發令牌了。

排隊有些時候比併發更高效(例如redis單執行緒模型,innodb mutex key等)

依靠排隊去限制併發流量

依靠排隊和下游擁塞窗囗程度調整佇列釋放流量大小

支付寶銀行閘道器佇列舉例

這裡使用固定大小的執行緒池,預設20個,其他的在linkedblockingqueue佇列中等待

private executorservice executorservice;

@postconstruct

public void int()

本地:將佇列維護在本地記憶體中

分布式:將佇列設定到外部redis內

秒殺系統 流量削峰技術 秒殺令牌

生成秒殺令牌 override public string generatesecondkilltoken integer promoid,integer itemid,integer userid if promomodel.getstarttime isafternow else if prom...

MQ如何快速實現流量削峰填谷

問 站點與服務,服務與服務上下游之間,一般如何通訊?答 有兩種常見的方式 一種是 直接呼叫 通過rpc框架,上游直接呼叫下游。在某些業務場景之下 具體哪些業務場景,見 到底什麼時候該使用mq?可以採用 mq推送 上游將訊息發給mq,mq將訊息推送給下游。問 為什麼會有流量衝擊?答 不管採用 直接呼叫...

58到家MQ如何快速實現流量削峰填谷

問 站點與服務,服務與服務上下游之間,一般如何通訊?答 有兩種常見的方式 一種是 直接呼叫 通過rpc框架,上游直接呼叫下游。在某些業務場景之下 具體哪些業務場景,見 到底什麼時候該使用mq?可以採用 mq推送 上游將訊息發給mq,mq將訊息推送給下游。問 為什麼會有流量衝擊?答 不管採用 直接呼叫...