分层时间轮的实现

2 天前
 IIInsomnia

一直找不到合适的 Go 时间轮库,正好工作需要,就自己实现了一个

https://github.com/noble-gase/xe/tree/main/timewheel

2240 次点击
所在节点    Go 编程语言
18 条回复
aliipay
2 天前
想知道多个 Level 时候,最上层 level 到期后(比如 23 点 59 分 59 秒),大量任务需要重新分配 bucket ,如何保证系统平稳呢?
momowei
2 天前
时间轮主要用来解决啥问题
phatzhong24
2 天前
@momowei #2 定时任务?
dlmy
2 天前
以前为了完成 KPI ,在公司手撸了一个时间轮
sngxx
2 天前
@dlmy 图画得好啊,怎么学的
dlmy
2 天前
@sngxx 用了 4 年 DDD ,画了 8000 多张图,纯手撸练出来的
yianing
2 天前
@momowei 延时队列
NoKey
2 天前
@dlmy 你这个是什么工具画的啊
nobot
2 天前
这个不是顺手就来的吗?没个项目中都要收录一个,C++版,go 版,C#版,php 版
dlmy
2 天前
BBCCBB
2 天前
看 kafka 的源码, 2, 300 行代码就能撸一个出来.
lazydog
2 天前
@dlmy #4 太牛了
IIInsomnia
1 天前
@aliipay 每次到点,都是将目标槽位的链表摘下,换一个新的上去;异步处理摘下的链表中的任务,互不影响
aliipay
1 天前
@IIInsomnia 如果任务数量巨大,怎么保证能在一个最小定时间隔周期内完成呢,如果完不成就可能会导致任务丢失或者推迟到下一个分层完成
IIInsomnia
1 天前
@aliipay 并发执行的,每个任务的执行都是独立的,且只会在最小的那个分层执行
IIInsomnia
1 天前
@aliipay 时间轮是保证任务到时间被执行即可,至于执行多久跟时间轮无关了
jones2000
21 小时 50 分钟前
任务优先级没有体现出来, 当来了一个优先级很高的任务,如果机器 CPU , 内存使用多, 会导致优先级高的任务,无法快速完成, 需要把正在执行的低优先级任务的中间数据和状态存盘,停止这个任务,释放内存。 当高优先级任务执行完成以后, 在从文件里面恢复低优先级任务执行,继续执行。
doraemonki
2 小时 21 分钟前
兄弟,虽然你的代码一顿操作猛如虎,但是 Benchmark 性能好像比不过直接 go 出去然后 sleep 啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1155184

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX