如何 manage/balance 服务实例上的半持久作业
How to manage/balance semi persistent jobs over service instances
我看到了我们尝试开发的服务的通用模式,我想知道是否有工具/库可以帮助解决这个问题。虽然微服务文献中讨论的默认作业来自 REQUEST -> RESPONSE 性质,但我们的作业或多或少是半永久性任务的分配。
此类任务的示例
- 监听来自源X和Y的数据的消息队列,关联传入的数据并将其存储在Z中。
- 保留一个内存缓冲区,每当有新数据输入时,该缓冲区计算过去 15 分钟数据的 运行 平均值。
目前我们的服务是用[=50=]编写的。由于 PHP 进程和消息队列连接的感知开销,我们希望单个服务进程同时处理多个这些作业。
这张图表有望说明我们头脑中的设置:
- Service Worker 目前已被 deamonized PHP 个脚本
- 对于服务注册中心,我们正在寻找 Zookeeper
虽然 Zookeeper(和 Curator)进行负载平衡,但我没有发现任何关于分配永久性工作(可更新、可移动,并且在工作人员死亡时必须重新分配)
工作经理的拟议职责
- 了解工作
- 了解可以完成这些工作的服务
- 可以将作业分配给服务
- 可以向服务发送作业更新
- 如果工人死亡,可以重新分配工作
是否有任何库/工具可以解决此类问题,从而起到作业管理器的作用?或者这是一个大的反模式,我们应该用其他方式来做吗?
您的员工听起来像是(api-less)服务本身。因此,您的要求可以重新表述为:
- 了解已部署的服务
- 了解可以托管服务的节点
- 可以将服务部署到节点
- 可以[向服务发送作业更新] = 重新部署services/invoke一些API已部署的服务
- 如果服务或节点死亡,可以重新部署服务
查看 Docker 以部署、运行 和管理主机上的独立进程。
你应该看看 Gearman。
它由一个分配作业的 client
、一个或多个将拾取并执行作业的 workers
和一个维护函数列表的 server
组成(服务)和待处理的工作。如果工人死亡,它将重新分配工作。
RabbitMq 是简单的消息队列,非常容易上手。
我看到了我们尝试开发的服务的通用模式,我想知道是否有工具/库可以帮助解决这个问题。虽然微服务文献中讨论的默认作业来自 REQUEST -> RESPONSE 性质,但我们的作业或多或少是半永久性任务的分配。
此类任务的示例
- 监听来自源X和Y的数据的消息队列,关联传入的数据并将其存储在Z中。
- 保留一个内存缓冲区,每当有新数据输入时,该缓冲区计算过去 15 分钟数据的 运行 平均值。
目前我们的服务是用[=50=]编写的。由于 PHP 进程和消息队列连接的感知开销,我们希望单个服务进程同时处理多个这些作业。
这张图表有望说明我们头脑中的设置:
- Service Worker 目前已被 deamonized PHP 个脚本
- 对于服务注册中心,我们正在寻找 Zookeeper
虽然 Zookeeper(和 Curator)进行负载平衡,但我没有发现任何关于分配永久性工作(可更新、可移动,并且在工作人员死亡时必须重新分配)
工作经理的拟议职责
- 了解工作
- 了解可以完成这些工作的服务
- 可以将作业分配给服务
- 可以向服务发送作业更新
- 如果工人死亡,可以重新分配工作
是否有任何库/工具可以解决此类问题,从而起到作业管理器的作用?或者这是一个大的反模式,我们应该用其他方式来做吗?
您的员工听起来像是(api-less)服务本身。因此,您的要求可以重新表述为:
- 了解已部署的服务
- 了解可以托管服务的节点
- 可以将服务部署到节点
- 可以[向服务发送作业更新] = 重新部署services/invoke一些API已部署的服务
- 如果服务或节点死亡,可以重新部署服务
查看 Docker 以部署、运行 和管理主机上的独立进程。
你应该看看 Gearman。
它由一个分配作业的 client
、一个或多个将拾取并执行作业的 workers
和一个维护函数列表的 server
组成(服务)和待处理的工作。如果工人死亡,它将重新分配工作。
RabbitMq 是简单的消息队列,非常容易上手。