京東熱點key探測系統(tǒng)發(fā)布,單機?QPS?提升至?37?萬
時間:2021-11-16 13:49:23
手機看文章
掃描二維碼
隨時隨地手機看文章
[導(dǎo)讀]HotKey在618穩(wěn)定版0.2版基礎(chǔ)上,引入了protobuf序列化方式,并優(yōu)化了傳輸對象。worker單機性能從618大促穩(wěn)定版的20萬QPS穩(wěn)定,30萬極限,提升至30萬穩(wěn)定,37萬極限。且cpu峰值下降了15%。該中間件目前在京東內(nèi)部10余個核心部門接入使用,服務(wù)于京東A...
HotKey在618穩(wěn)定版0.2版基礎(chǔ)上,引入了protobuf序列化方式,并優(yōu)化了傳輸對象。
worker單機性能從618大促穩(wěn)定版的20萬QPS穩(wěn)定,30萬極限,提升至30萬穩(wěn)定,37萬極限。且cpu峰值下降了15%。該中間件目前在京東內(nèi)部10余個核心部門接入使用,服務(wù)于京東App服務(wù)端前臺、中臺,數(shù)據(jù)中臺等多個核心業(yè)務(wù)線。
京東APP后臺熱數(shù)據(jù)探測框架,歷經(jīng)多次高壓壓測和2020年京東618大促考驗。在上線運行的這段時間內(nèi),每天探測的key數(shù)量數(shù)十億計,精準捕獲了大量爬蟲、刷子用戶,另準確探測大量熱門商品并毫秒級推送到各個服務(wù)端內(nèi)存,大幅降低了熱數(shù)據(jù)對數(shù)據(jù)層的查詢壓力,提升了應(yīng)用性能。該框架歷經(jīng)多次壓測,性能指標主要有兩個:1 探測性能:8核單機worker端每秒可接收處理16萬個key探測任務(wù),16核單機至少每秒平穩(wěn)處理30萬以上,實際壓測達到37萬,CPU平穩(wěn)支撐,框架無異常。2 推送性能:在高并發(fā)寫入的同時,對外推送目前性能約平穩(wěn)推送每秒10-12萬次,譬如有1千臺server,一臺worker上每秒產(chǎn)生了100個熱key,那么這1秒會平穩(wěn)推送100 * 1000 = 10萬次,10萬次推送會明確在1s內(nèi)全部送達。如果是寫入少,推送多,以純推送來計數(shù)的話,該框架每秒可穩(wěn)定對外推送40-60萬次平穩(wěn),80萬次極限可撐幾秒。在真實業(yè)務(wù)場景中,可用1:1000的比例,即1臺worker支撐1000臺業(yè)務(wù)服務(wù)端的key探測任務(wù),即可帶來極大的數(shù)據(jù)存儲資源節(jié)省(如對redis集群的擴充)。
image 源碼
worker單機性能從618大促穩(wěn)定版的20萬QPS穩(wěn)定,30萬極限,提升至30萬穩(wěn)定,37萬極限。且cpu峰值下降了15%。該中間件目前在京東內(nèi)部10余個核心部門接入使用,服務(wù)于京東App服務(wù)端前臺、中臺,數(shù)據(jù)中臺等多個核心業(yè)務(wù)線。
架構(gòu)

介紹
對任意突發(fā)性的無法預(yù)先感知的熱點請求,包括并不限于熱點數(shù)據(jù)(如突發(fā)大量請求同一個商品)、熱用戶(如爬蟲、刷子)、熱接口(突發(fā)海量請求同一個接口)等,進行毫秒級精準探測到。然后對這些熱數(shù)據(jù)、熱用戶等,推送到該應(yīng)用部署的所有機器JVM內(nèi)存中,以大幅減輕對后端數(shù)據(jù)存儲層的沖擊,并可以由客戶端決定如何使用這些熱key(譬如對熱商品做本地緩存、對熱用戶進行拒絕訪問、對熱接口進行熔斷或返回默認值)。這些熱key在整個應(yīng)用集群內(nèi)保持一致性。核心功能:熱數(shù)據(jù)探測并推送至集群各個服務(wù)器。適用場景:1mysql熱數(shù)據(jù)本地緩存2 redis熱數(shù)據(jù)本地緩存3 黑名單用戶本地緩存4 爬蟲用戶限流5 接口、用戶維度限流6 單機接口、用戶維度限流限流7 集群用戶維度限流8 集群接口維度限流界面效果
