一个上千台机器的集群,需要对其中的机器下发不同任务,前端是 web 网页端触发,比如 web 端发起对 10.10.10.111 机器上重启 mysqld 进程的操作。
大致的结构是:
web
|
service
| | ... |
server 1 server 2 ... server n
理想中是:前端 web 端给用户进行操作。中间 service 层提供 http rest 接口, web 端调用 service 层相应的接口, service 层接收操作并且丢到 MQ 里。最下面的 server ,类似一个个 worker ,连接到 service 层的 MQ ,然后 pull 属于自己的 task ,然后进行执行。
以上这些预期是想用 celery 来做,但是 celery 中的问题是,每个 server(相当于 worker),对于 MQ 来说,都是相同的,但是我们的 worker 是有区别的,每个 task ,只能在指定的 worker 上执行(试想重启服务器这种 task)。
我查了 celery 的文档,好像有 route 相关的东西,那是不是我每个 worker 要有一个自己的 queue ,那机器数量几千台,就要有几千个 queue 吗?并且我需要动态添加机器,但是 celery 貌似只支持配置文件中配置 queue 。
所以目前看来 celery 并不能很好的满足。
特来请教下针对这种场景有什么合适的解决方案吗?谢谢大集。
大致的结构是:
web
|
service
| | ... |
server 1 server 2 ... server n
理想中是:前端 web 端给用户进行操作。中间 service 层提供 http rest 接口, web 端调用 service 层相应的接口, service 层接收操作并且丢到 MQ 里。最下面的 server ,类似一个个 worker ,连接到 service 层的 MQ ,然后 pull 属于自己的 task ,然后进行执行。
以上这些预期是想用 celery 来做,但是 celery 中的问题是,每个 server(相当于 worker),对于 MQ 来说,都是相同的,但是我们的 worker 是有区别的,每个 task ,只能在指定的 worker 上执行(试想重启服务器这种 task)。
我查了 celery 的文档,好像有 route 相关的东西,那是不是我每个 worker 要有一个自己的 queue ,那机器数量几千台,就要有几千个 queue 吗?并且我需要动态添加机器,但是 celery 貌似只支持配置文件中配置 queue 。
所以目前看来 celery 并不能很好的满足。
特来请教下针对这种场景有什么合适的解决方案吗?谢谢大集。