12
返回列表 发新帖
楼主: echofreshman
跳转到指定楼层
上一主题 下一主题
收起左侧

[题目讨论] 请教一道面试题 -- delay scheduler

🔗
soulmachine 2017-4-24 06:20:49 | 只看该作者
全局:
这个题目其实是一个大坑,需要好好做一下。

PriorityBlockingQueue + polling, 是大家最容易想到的方案,然而轮询通常有个很大的缺点,就是时间间隔不好设置,间隔太长,任务无法及时处理,间隔太短,会很耗CPU。

比较好的两个方案是 DelayQueue 和 HashedWheelTimer https://soulmachine.gitbooks.io/system-design/content/cn/task-scheduler.html
回复

使用道具 举报

🔗
回到拉萨 2017-12-1 01:23:53 | 只看该作者
全局:
我觉得这个是系统设计吧 如果回答成这个样子就变成考算法了。

一般这样的系统需要数据存储的 否则client create一些future tasks 你的机器重新启动不就全丢掉了。。。所以你的future tasks应该是存在某种数据库里里面的 然后有另外的process去poll这个数据库  具体的讨论就是怎么高效的poll这个数据库一类的
回复

使用道具 举报

🔗
Tevez99 2019-6-22 00:59:55 | 只看该作者
全局:
1. 这题其实是类似于ScheduledThreadPoolExecutor 里面的future
回复

使用道具 举报

🔗
wsrrzxl 2020-3-11 04:53:34 | 只看该作者
全局:
这道题如果按系统设计该怎么做

我觉得priority queue只是单机版的吧
回复

使用道具 举报

🔗
laoxie09 2020-9-29 05:15:28 | 只看该作者
全局:
wsrrzxl 发表于 2020-3-11 04:53
这道题如果按系统设计该怎么做

我觉得priority queue只是单机版的吧

数据库:

jobid (pk) |   endpoint(address)  | payload(with idempotency key)  |  credential |   nextExecuteTimestamp(index)

后台扫描timestamp到了 拿出来放进MQ,放成功了删除数据库里的entry。MQ可以不断重试这个request,成功拉到。超过次数发送alert/重新create job
回复

使用道具 举报

🔗
hungryfoolish 2021-1-19 07:47:28 | 只看该作者
全局:
请问这是system design的题目还是要coding?
回复

使用道具 举报

🔗
whiteboard 2021-3-27 13:52:30 | 只看该作者
全局:
C++版本DelayTaskScheduler: https://paste.ubuntu.com/p/4fkWgjmx39/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

>
快速回复 返回顶部 返回列表