常见问题(FAQ)

关于 NATS 执行引擎的常见问题

一般信息

运行工作负载

技术细节

一般信息

什么是 Nex?

Nex 是一个开源、轻量级的执行引擎,可与 NATS 并行运行。通过运行 Nex 节点,您可以构建一个通用资源池,在其中部署 服务和函数。服务和函数允许是 JavaScript、WebAssembly 甚至常规操作系统可执行二进制文件。

我在哪里可以找到 Nex?

Nex 的代码可以在相应的 Synadiaarrow-up-right 仓库中找到。这是一个由 NATS 的创建者 Synadia 支持的开源项目。

谁维护 Nex?

Nex 代码的主要维护者是 Synadia 的员工,但我们也始终欢迎更多的维护者加入。

Nex 是免费的吗?

嗯,Nex 仓库中的所有代码都是免费的,并使用 Apache-2.0 许可证授权给你。

运行工作负载

我可以运行哪些类型的工作负载?

Nex 支持两类工作负载:服务函数。服务 是长期运行的,而函数 是短时运行的,并根据某些触发条件按需启动。

服务 可以是原生编译的二进制文件(启用 Firecracker 时为 64 位 elf),而 函数 可以是 WebAssembly 模块或导出的 JavaScript 函数。OCI 镜像支持即将推出。

什么是根文件系统?

默认情况下,Nex 使用 Firecrackerarrow-up-right 来启动小型、安全、快速且轻量的虚拟机。这些虚拟机各自运行一个代理,负责管理该虚拟机中的工作负载以及与 Nex 节点之间的通信。

根文件系统本质上是一个操作系统磁盘映像的快照,用于启动虚拟机时使用。它类似于 Docker 层,但效率更高。

技术细节

什么是命名空间?

命名空间是一种有关多租户的单元。所有工作负载都限定在某个命名空间内。如果您将 echoservice 工作负载部署到 default 命名空间,然后同样再将其部署到 sample 命名空间,Nex 不会将它们视为相同的。命名空间是逻辑分组,Nex 不强制实施严格的网络边界,也不强制规定您如何使用命名空间。

我的工作负载配置是否安全?

绝对安全!每个运行工作负载的请求都会发送到特定的 Nex 节点。该 Nex 节点有一个公钥 Xkey,用于加密发送到该节点的数据,例如环境变量和其他敏感数据。只有该节点才能解密发给它的数据。

此外,只有启动工作负载的实体才能终止该工作负载。

run 和 devrun 有什么区别?

简而言之,nex run 适用于生产环境和实际部署,而 nex devrun 则适用于开发人员的迭代循环和测试环境。常规运行工作负载的请求必须包含以下所有内容:

  • 一个颁发者 nkey,作为认证请求的实体;

  • 一个发布者 xkey,用于加密数据源;

  • 一个 URL,指示工作负载的位置,存储在对象存储中,格式为 nats://{BUCKET}/{key}

  • 一组传递给工作负载的环境变量;

  • 一个固定且格式正确的工作负载 名称

  • 一个命名空间(逻辑分组),用于运行工作负载。

当您只是在本地机器上进行开发和测试时,手动提供所有这些信息会很麻烦,因此使用 devrun 时,您只需提供工作负载二进制文件(.wasm.js、ELF 二进制)的路径和环境变量,nex CLI 将为您处理其余部分,包括自动将您的文件上传到对象存储。

Nex 与 Kubernetes 相比如何?

Kubernetes 是一个分布式工作负载执行引擎,Nex 也是如此。但两者在此开始分道扬镳。Nex 能够提供高效且量身定制的用户体验,因为它对基于 NATS 的工作负载进行了优化和专门设计;而 Kubernetes 则被设计为高度通用,只要投入足够的时间或资金,几乎可以做任何事情。这种广泛的用例使 Kubernetes 在管理、部署和配置方面变得复杂。

大多数用户通过 Kubernetes 的 声明式 层进行交互,该层需要大量的 YAML 配置来管理,而 Nex 是一个纯粹的命令式系统,可通过 CLI 和简单的 API 轻松管理。

我需要在 Firecracker 中运行 Nex 吗?

简单来说,不需要。Nex 节点进程负责生成包含 Nex 代理的 Firecracker VM。作为 Firecracker 进程的管理者,Nex 节点本身不能运行在 Firecracker VM 中。大部分复杂性应该对最终用户隐藏。

最后更新于