基于時(shí)間輪的定時(shí)器
定時(shí)器的實(shí)現(xiàn)多采用最小堆折联,其創(chuàng)建和刪除復(fù)雜度為O(logN),tick的復(fù)雜度為O(1);在極端高性能場(chǎng)景(如timer數(shù)量巨大)下有待優(yōu)化粒褒;
下面介紹基于多級(jí)時(shí)間輪的定時(shí)器,他能做到創(chuàng)建和刪除復(fù)雜度為O(1)诚镰,tick復(fù)雜度也為O(1),非常適合高性能的場(chǎng)景奕坟。
基于時(shí)間輪的超時(shí)連接剔除
連接超時(shí)踢除,在長(zhǎng)連接服務(wù)中非常重要清笨。有以下幾個(gè)方案:
1)全局Timer:全局定時(shí)器中輪詢當(dāng)前的每個(gè)連接月杉,此方案的復(fù)雜度為O(N),當(dāng)連接數(shù)較大時(shí)不適合。
2)為每個(gè)連接設(shè)置一個(gè)one-short timer抠艾,在超時(shí)時(shí)斷開連接苛萎,但是連接收到數(shù)據(jù)時(shí)需要頻繁的更新Timer笑陈,為timer的管理增加了難度港令。
這里提出一個(gè)更簡(jiǎn)單的時(shí)間輪方案赴肚。
參考文獻(xiàn)
https://www.ibm.com/developerworks/cn/linux/l-cn-timers/index.html
https://www.zhihu.com/question/38427301
https://github.com/ichenq/timerqueue-benchmark