對任意突發性的無法預先感知的熱點數據,包括並不限於熱點數據(如突發大量請求同一個商品)、熱用戶(如惡意爬蟲刷子)、熱接口(突發海量請求同一個接口)等,進行毫秒級精準探測到。然後對這些熱數據、熱用戶等,推送到所有服務端JVM內存中,以大幅減輕對後端數據存儲層的衝擊,並可以由使用者決定如何分配、使用這些熱key(譬如對熱商品做本地緩存、對熱用戶進行拒絕訪問、對熱接口進行熔斷或返回默認值)。這些熱數據在整個服務端集群內保持一致性,並且業務隔離,worker端性能強悍。
京東APP後臺熱數據探測框架,歷經多次高壓壓測和2020年京東618大促考驗。在上線運行的這段時間內,每天探測的key數量數十億計,精準捕獲了大量爬蟲、刷子用戶,另準確探測大量熱門商品並毫秒級推送到各個服務端內存,大幅降低了熱數據對數據層的查詢壓力,提升了應用性能。
源碼獲取方式:關注頭條轉發文章之後私信回復【源碼】即可免費獲取到哦~
對任意突發性的無法預先感知的熱點請求,包括並不限於熱點數據(如突發大量請求同一個商品)、熱用戶(如爬蟲、刷子)、熱接口(突發海量請求同一個接口)等,進行毫秒級精準探測到。 然後對這些熱數據、熱用戶等,推送到該應用部署的所有機器JVM內存中,以大幅減輕對後端數據存儲層的衝擊,並可以由客戶端決定如何使用這些熱key(譬如對熱商品做本地緩存、對熱用戶進行拒絕訪問、對熱接口進行熔斷或返回默認值)。 這些熱key在整個應用集群內保持一致性。
核心功能:熱數據探測並推送至集群各個伺服器
1 mysql熱數據本地緩存
2 redis熱數據本地緩存
3 黑名單用戶本地緩存
4 爬蟲用戶限流
5 接口、用戶維度限流
6 單機接口、用戶維度限流
7 集群用戶維度限流
8 集群接口維度限流
該開源項目戰略意義重大,經歷百萬級並發,參與京東開源中間件項目建設,一直在等你。
每10秒列印一行,totalDealCount代表處理過的key總量,可以看到每10秒處理量在270萬-310萬之間,對應每秒30萬左右QPS。
僅需要很少的機器,即可完成海量key的實時探測計算推送任務。比擴容redis集群規模成本低太多。
採用protobuf序列化後性能進一步得到提升。在秒級36萬以上時,能穩定在CPU 60%,壓測持續時長超過5小時,未見任何異常。30萬時,壓測時長超過數日,未見任何異常。
源碼獲取方式:關注頭條轉發文章之後私信回復【源碼】即可免費獲取到哦~