Storlets 术语¶
整个 storlets 机制涉及许多活动部分以及在系统使用过程中涉及的人员或角色。我们下面给出文档中使用的各种术语的定义。
Storlet¶
Storlet 是作为 Swift 对象部署的二进制代码。在数据对象上调用 storlet 是以隔离的方式完成的,以便计算可访问的数据仅是对象的数据及其关联的元数据。此外,计算无法访问磁盘、网络或 Swift 请求环境。
虽然 storlets 能够对对象存储中的数据进行计算,但它们并非用于通用处理。具体来说,它们不适用于需要大量临时状态的处理。由于在受控的运行时环境(例如 Docker 容器)内执行,它们不能使用太多内存,并且不建议 storlets 创建临时文件。
编写 storlet 涉及实现一个定义良好的接口,称为 invoke。简而言之,该接口包含一个输入流、一个输出流和一个记录器。假设 storlet 从输入流读取,执行其操作,并将结果写入输出流。
Storlet 调用¶
Storlet 调用是用户请求在 Swift 中的特定数据对象上执行 storlet 计算。可以通过 3 种不同的方式调用 storlet
在对象下载时调用 storlet。以这种方式调用 storlet 时,用户获得的是对象数据的 storlet 转换(和元数据),而不是存储在 Swift 中的数据和元数据。
在对象上传时调用 storlet。以这种方式调用 storlet 时,存储在 Swift 中的数据是上传数据(和元数据)的 storlet 转换,而不是上传的数据和元数据。
在对象复制时调用 storlet。这是调用现有数据对象上的 storlet 的一种方式,storlet 的输出保存在新创建的对象中。在常规 Swift 复制中,新创建的对象与源对象相同。
Storlet 引擎¶
Storlet 引擎是底层机制,它可以将 storlet 作为 Swift 对象,并以隔离的方式(在 Docker 容器内)在 Swift 数据对象上调用它。简而言之,引擎拦截调用请求,将输入数据流路由到 storlet,并接收回 storlet 输出流。引擎作为 Swift 中间件实现。
角色¶
Storlet 开发人员¶
Storlet 开发人员开发、打包并将 storlets 部署到 Swift。部署 storlet 本质上是将它(及其潜在的依赖项)上传到 Swift 中的指定容器。因此,假设 storlet 开发人员可以访问这些容器。
Storlet 用户¶
希望在 Swift 中的数据对象上调用 storlet 的 Swift 用户。调用用户必须可以访问该数据以及可以读取 storlet 对象。
Storlets 账户管理员¶
简而言之,账户管理员。账户管理员是客户侧的管理员用户,通常负责支付账单(以及可能设置 ACL)。从 storlets 的角度来看,账户管理员负责管理 Docker 镜像以及可以在账户中的数据上执行的 storlets。请注意,在某个账户中的数据上执行的所有 storlets 都在同一个 Docker 容器内完成。
Swift Storlet 管理员¶
通常,这是提供商侧的 Swift 管理员,负责处理环和损坏的磁盘。从 storlets 的角度来看,(他/她) 负责将账户管理员 Docker 镜像部署到整个集群(不用说这里有一个默认镜像)。这允许账户管理员上传定制的 Docker 镜像,Swift 管理员然后可以将其部署到整个集群。
Storlet 引擎开发人员¶
希望参与并为 Openstack Storlets 项目做出贡献的人员。