最近在爬取一些比较感兴趣的的数据, 但是数据接口做了权限校验, 而且做了单端登录(不能同时请求, 同一个token 同一时间只能请求一个, 用的是 Websocket 协议). 比较麻烦. 我各个节点之间用的是 Redis 做的通信, 所以 继续用 Redis 做一个资源池用来分配调用权限
Preview
实现
其实是就以下几步
- Master 节点初始化
- 拉取数据库保存的爬虫用户信息, 加入到 Redis 缓存
- 查询是否用户信息是否被占用, 没有占用的话加到 spiderUserPool 队列中
- Master 节点维护信息
- 定时检查所有已经使用的 Key 是否已经被释放(检查 lock ), 如果释放了 加入到资源池
- Cluster 节点使用
- 弹出资源池资源ID,
- 校验是否被占用
- 拉取缓存信息
- Cluster 节点释放
- 退出释放锁
缓存数据
加载中.....
获取资源
加载中.....
主动释放
加载中.....
被动释放
加载中.....
后
如果有更好的办法也可以留言告诉我