跳转到: 导航, 搜索

基于 RPC 的分布式任务管理

修订于: 2014年3月15日 由 Harlowja

原因:本文档提出了一种分布式流程架构,可以在多个 worker 上同时运行任务(提高可扩展性和可靠性)。这里的核心目标是提供这种架构,允许用户在不更改任何代码的情况下,用分布式引擎替换本地引擎(之前可能使用线程执行)。我们不希望分布式和非分布式引擎/流程描述之间存在任何差异(尽可能对用户透明)。差异应该仅在于流程引擎的类型。通常,分布式引擎应该像单线程引擎一样工作。

架构

定义

客户端
运行分布式流程的机器(或程序)
Worker
通过响应执行请求来执行分布式流程任务的机器(或程序)
分布式任务
一种任务执行类型,它对 worker 执行远程过程调用
远程任务
在 worker 端运行的任务,执行一些代码以推进流程

如何实现

分布式系统由一个或多个客户端和 worker 组成。客户端(拥有引擎的代码)运行一个流程。当客户端想要启动新任务时,它会向 worker 发出 RPC 调用,并传递客户端的端点和任务的参数。其中一个 worker 接受任务并向客户端发送确认信息。然后它开始执行任务并向客户端发送心跳。在此期间,客户端会监听 worker 的响应(状态更新等)。当任务完成时,worker 会发送结果。如果客户端在超时时间内没有收到任务状态消息,则认为 worker 失败。

高级架构如图所示

Distributed flow with oslo.messaging.rpc.png

详情

请访问: https://etherpad.openstack.org/p/TaskFlowWorkerBasedEngine