承接上文
承接上文,讓我們基本上已經(jīng)知道了「時(shí)間輪算法」原理和核心算法機(jī)制,接下來我們需要面向于實(shí)戰(zhàn)開發(fā)以及落地角度進(jìn)行分析如何實(shí)現(xiàn)時(shí)間輪的算法機(jī)制體系。
前言回顧
什么是時(shí)間輪
- 調(diào)度模型:時(shí)間輪是為解決高效調(diào)度任務(wù)而產(chǎn)生的調(diào)度模型/算法思想。
- 數(shù)據(jù)結(jié)構(gòu):通常由hash表和雙向鏈表實(shí)現(xiàn)的數(shù)據(jù)結(jié)構(gòu)。
為什么用時(shí)間輪?
對(duì)比傳統(tǒng)隊(duì)列的優(yōu)勢(shì)
相比傳統(tǒng)的隊(duì)列形式的調(diào)度器來說,時(shí)間輪能夠批量高效的管理各種延時(shí)任務(wù)、周期任務(wù)、通知任務(wù)等等。例如延時(shí)隊(duì)列/延時(shí)任務(wù)體系
延時(shí)任務(wù)/隊(duì)列體系
延時(shí)任務(wù)、周期性任務(wù),應(yīng)用場(chǎng)景主要在延遲大規(guī)模的延時(shí)任務(wù)、周期性的定時(shí)任務(wù)等。
案例-Kafka的延時(shí)操作系列
比如,對(duì)于耗時(shí)的網(wǎng)絡(luò)請(qǐng)求(比如Produce時(shí)等待ISR副本復(fù)制成功)會(huì)被封裝成DelayOperation進(jìn)行延遲處理操作,防止阻塞Kafka請(qǐng)求處理線程,從而影響效率和性能。
傳統(tǒng)隊(duì)列帶來的性能問題
Kafka沒有使用傳統(tǒng)的隊(duì)列機(jī)制(JDK自帶的Timer+DelayQueue實(shí)現(xiàn))。因?yàn)?strong>時(shí)間復(fù)雜度上這兩者插入和刪除操作都是 O(logn),不能滿足Kafka的高性能要求。文章來源:http://www.zghlxwxcb.cn/news/detail-419307.html
基于JDK自帶的Timer+DelayQueue實(shí)現(xiàn)
JDK Timer和DelayQu文章來源地址http://www.zghlxwxcb.cn/news/detail-419307.html
到了這里,關(guān)于手把手教你針對(duì)層級(jí)時(shí)間輪(TimingWheel)延時(shí)隊(duì)列的實(shí)戰(zhàn)落地的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!