如何管理/平衡服务实例上的半持久性作业
2022-08-30 23:36:44
我看到了我们试图开发的服务的通用模式,我想知道是否有工具/库可以在这里提供帮助。虽然微服务文献中讨论的默认作业来自 REQUEST -> RESPONSE 性质,但我们的工作或多或少是半永久性任务的分配。
此类任务的示例
- 在消息队列中侦听来自源 X 和 Y 的数据,关联传入的数据并将其存储在 Z 中。
- 保留一个内存中缓冲区,该缓冲区在每次有新数据输入时计算过去 15 分钟数据的运行平均值。
目前我们的服务是用PHP编写的。由于 PHP 进程的感知开销和与消息队列的连接,我们希望单个服务进程同时处理多个这些作业。
一张图表,希望能说明我们脑海中的设置:
- 服务工作者目前是去自动化的 PHP 脚本
- 对于服务注册表,我们正在查看Zookeeper
虽然Zookeeper(和馆长)做了负载平衡,但我没有发现任何关于分配永久工作的东西(这些工作是可更新的,可移动的,并且在工人死亡时必须重新分配)
作业管理器的拟议职责
- 了解工作
- 了解可以完成这些工作的服务
- 可以将作业分配给服务
- 可以将作业更新发送到服务
- 如果工作人员死亡,可以重新分配工作
是否有任何库/工具可以解决此类问题,从而可以充当作业管理器?或者这都是一个大的反模式,我们应该以其他方式做到这一点吗?