使用Rust/AWS/Terraform构建VehicleRoutingProblem Solver API的PoC

2020-06-21 06:09:11

这个项目的目的是构建一个使用Rust和AWS进行快速原型制作的VRP rest API框架。它使用了另一个实现了丰富的VRP解算器功能的Rust项目,您可以在这里找到它。

如果问题定义没有问题,lambda函数会将其作为problem.json上传到S3存储桶。结果,用户获得了提交id,这是存储桶的名称。

一旦上传problem.json,就会触发rigger_solver lambda函数。它的源代码在./lambdas/riggers/Batch文件夹中。

任何时候用户都可以通过GET方法调用/解决方案资源来轮询解决方案。此资源也可通过AWS API Gateway公开。

lambda函数下载state.json文件(参见下面的注释),并根据其内容返回解决方案或提交状态。

另外,在S3存储桶中有state.json文件。它用于跟踪提交状态,并可能返回一些有关执行进度的信息。

实际上,可以通过提交lambda创建批处理作业,但这会限制可扩展性:在现实世界中,请求路由矩阵信息需要额外的步骤。它在性能和时间方面可能很昂贵,因此这里可能需要另一个逻辑,最好避免耦合问题提交和调用求解器。

从GitHub拉取源代码后,请确保您具备以下前提条件:

Rust安装来自GitHub的交叉编译工具,该工具将用于构建AWS中的代码:

AWS使用VRP-求解器名称创建弹性容器资料档案库,该资料档案库将用于发布坞站映像。

TerraForm使用正确的子网和安全组ID(例如,默认ID),并将012345678901更改为您的帐户ID(12位)。

构建VRP解算器的坞站映像并将其发布到弹性容器存储库中:

如果您决定使用不同的AWS区域,请根据AWS文档调整测试脚本中的url。然后通过查看AWS控制台或Terraform输出确定您可以找到的API网关ID。