限流,通常講就是限制流量,也有很多其他的說法,比如:限頻、疲勞度控制等,
原文鏈接:自定義開發限流組件 之 場景需求分析-一只小Coder
最近遇到一個需求,系統A作為一個專門推送訊息給客戶的訊息中心系統,對于每個客戶是否能接受訊息,能接受多少訊息,接收訊息的速度,能接受哪些訊息等都要進行控制,這也就引入了需要做訊息限流的需求了,而且是多維度的,
分析
對于限流的維度來講,上面提到需求中可以提煉出有:客戶維度,訊息型別維度;從限流的本身來講,有頻率控制,數量控制,詳細說一下:
- 客戶維度:客戶的適當性,該客戶是否可以接受訊息(客戶狀態);
- 訊息型別:訂單類訊息和推廣類訊息不一致,訂單類要及時一些,推廣類不及時也行;
- 訊息頻率:訊息的頻率有快有慢(動態時間窗);
- 數量控制:固定時間段內能接收的訊息數量(固定時間窗),不同客戶能接受訊息的數量等等,,,
通過以上分析可得每個能成為影響客戶接受訊息的頻率因素,在將這幾個維度組合起來,頻率控制的組合,策略,就有很多了,
市面上的限流組件有很多,我之前用過的就是Sentinel,該框架只需要對需要做限流的介面做一些簡單的配置,加幾個注解(埋點),即可通過Sentinel自身的限流規則加上介面的一些引數做到限流,不過,對于非技術人員來講就不太友好,對此,還是自己設計一個限流的組件,或者模塊比較合適,后續的文章會對該需求慢慢實作,
目前大致的想法就是從不同維度分析,設計客戶,訊息型別,限流記錄等幾個表,用來記錄限流的策略;通過Redis實時記錄、更新發送訊息的頻率資料... ... ... ... ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/536054.html
標籤:架構設計
