We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
这是为Food tech family 实现的定时任务框架
一句废话: 我们总是需要一个cron job框架的.
具体的业务场景有两种
需求
如果想要做的完美一点.还是有一些难点需要解决的
第一种需要解决的是
第二种需要解决的是
redis
lua
无疑lambda是适合这种业务场景的. 稳定高效, 不用维护, 还便宜. 不过这里面有一些细节需要考虑
参数传递都是通过DynamoDB, 业务方往DynamoDB push任务的时候就要把callback写出来
核心的lambda读到DynamoDB的任务之后是要自己处理还是怎么搞?
如果每1min执行一个lambda, 而上一个 lambda 还没有执行完毕, 这样就有可能两个lambda都读到了同一个东西
如果核心的lambda只负责读取分发, callback每次都启动单独的lambda去调用就可以实现并发.
删不删?
删, 则是最多一次的实现
不删, 至少一次的不完美实现 (还是存在因为执行的慢, 多次获取的问题, 除了控制间隔,也没什么好办法. 难道要锁住lambda 一个启动了另外一个不启动?, 倒是有限制并发数为1的方法)
The text was updated successfully, but these errors were encountered:
Petelin
No branches or pull requests
Cron Job
这是为Food tech family 实现的定时任务框架
背景
一句废话: 我们总是需要一个cron job框架的.
具体的业务场景有两种
需求
记录下来, 到时候在执行难点
如果想要做的完美一点.还是有一些难点需要解决的
第一种需要解决的是
第二种需要解决的是
动态定时任务实现
redis
+lua
脚本, redis中采用sortSet, 执行时间作为sortKey, 然后因为单进程的lua脚本可以保证同时只有一个解释器在执行, 值得注意的是, 为了保证不多发, lua脚本会在拿到值之后删掉对应的数据, 这样其他人就拿不到了. 这样做的一个问题是一旦lua脚本返回, 之后执行失败, 也没有机会重试了.DynamoDB + Lambda 模式的细节
无疑lambda是适合这种业务场景的. 稳定高效, 不用维护, 还便宜. 不过这里面有一些细节需要考虑
参数传递都是通过DynamoDB, 业务方往DynamoDB push任务的时候就要把callback写出来
核心的lambda读到DynamoDB的任务之后是要自己处理还是怎么搞?
如果每1min执行一个lambda, 而上一个 lambda 还没有执行完毕, 这样就有可能两个lambda都读到了同一个东西
如果核心的lambda只负责读取分发, callback每次都启动单独的lambda去调用就可以实现并发.
删不删?
删, 则是最多一次的实现
不删, 至少一次的不完美实现 (还是存在因为执行的慢, 多次获取的问题, 除了控制间隔,也没什么好办法. 难道要锁住lambda 一个启动了另外一个不启动?, 倒是有限制并发数为1的方法)
The text was updated successfully, but these errors were encountered: