#后端 #容器 #应用程序 #GitHub #spawner #会话 #专用

dis-spawner

为高级基于浏览器的应用程序提供会话生命周期容器

8 个版本

0.1.9 2022 年 3 月 23 日
0.1.8 2022 年 3 月 18 日
0.1.6 2022 年 2 月 26 日

#288WebSocket

34 每月下载
用于 dis-spawner-api

MIT 许可证

44KB
897

Build

组件 图片 版本
核心 dis-spawner crates.io
控制器 spawner-controller
边车 spawner-sidecar
清理器 spawner-sweeper
API spawner-api dis-spawner-api crates.io

Spawner

观看 3 分钟的演示,了解如何安装和使用 Spawner。

Spawner 允许 Web 应用程序创建 会话生命周期后端,这是为单个(或小型用户组)用户专门的服务器进程。

服务器进程可以是任何支持 HTTP 的服务器,包括 WebSocket 服务器。Spawner 提供了一个 API,用于在新的用户连接时启动这些服务器,并在用户断开连接时自动终止它们。

Spawner 仍然处于开发阶段,不断进化。如果您有兴趣使用它,我们很乐意了解您的用例,并帮助您开始使用。请随时在 GitHub 上创建一个问题 或联系 Paul[email protected]

用例

Spawner 旨在满足 Web 应用程序需要一个在会话期间与之通信的专用、有状态的后端的情况。目前,这种方法在像 GitHub Codespaces 这样的基于 Web 的 IDE 中很常见,为每个用户启动一个容器来运行代码。当文档状态非平凡且需要比 Pub/Sub 架构更多的功能时,它也很有用(例如,参见 Figma 的描述,了解他们如何为每个活动文档运行一个进程。)

通过降低实验这种架构的风险,我们希望 Spawner 能够帮助开发者发现新的用例,例如将大量数据集加载到内存中,以便进行低延迟的交互式数据探索。

根据您的需求,它还可以作为游戏和虚拟空间的底层后端,但也可以查看 Agones 了解该用例。

架构

Spawner architecture diagram

Spawner 是基于 Kubernetes 开源容器编排系统的。Spawner 提供了 SessionLivedBackend 自定义资源,代表单个应用程序后端实例,以及一系列组件,它们协同工作以拥有该后端的整个生命周期。

  • API 提供了 JSON over HTTP API,用于创建和检查 SessionLivedBackend 实例的状态。
  • 控制器 监视 SessionLivedBackend 对象的创建,并创建必要的后端计算和网络资源,以便提供后端并允许外部用户连接到它。
  • 边车 是一个轻量级 HTTP 代理,它运行在你提供的应用程序容器旁边。它记录活动 WebSocket 连接的数量,以及最后 HTTP 请求的时间戳,并将其报告给清扫器。
  • 清扫器 在集群的每个节点上运行,并打开连接到该节点上运行的所有应用程序后端的边车。当它检测到后端空闲时,它将该后端标记为终止,以便其资源可以为另一个后端使用。

更多信息 & 快速入门

有关更多信息,请参阅 文档 目录。

依赖项

~65MB
~1M SLoC