目录
1、Redis实现方案
1.1 Redis API使用
利用哈希表结构进行分布式任务执行顺序和执行时间控制来解决限频问题
hlen 查看哈希表中key数量,用来检测当前任务数量,同一时刻只允许存在一个任务
hset key field value 存放任务[field],并设置执行时间戳[value],获取执行权的任务线程可以设置下一个可以执行的任务类型,这里是交替执行,会控制进行任务类型替换
hget key 获取当前授权的执行任务及预执行时间戳
hdel key filed 移除授权任务,获取执行权的任务线程可以对当前任务类型进行移除
为何不用字符串类型进行存储?
如果仅是两个任务交替执行,字符串存储也是可以的,但是对于多任务情况下,字符串结构要么维护多个KEY,要么就需要对value进行序列化存储,多一层数据转换,并不是很方便
哈希表读取任务列表更快,key是唯一的,只需要变更存储filed,且可以提供API级别防重不需重复判断,而且value存储时间戳即可
1.2 交互方案
2、Zookeeper实现方案
//TODO 监听节点变化来驱动,以后有时间再尝试