Skip to main content
服务是为 Arupa 应用添加某项功能的可部署单元。它包含该功能特有的代码,而 Arupa 内核提供共享的运行时环境和应用集成。这样内核就可以专注于通用关注点,而服务则专注于自身的业务逻辑。 内核管理服务的生命周期:加载服务包、启动所选的运行时,并将服务声明的传输和路由连接到应用中。服务可以暴露 HTTP 路由、静态资源,以及一个被代理的上游地址。内核会将匹配的请求和事件分派给对应的服务,并强制执行为每条路由声明的访问策略。

运行时类型

服务使用三种运行时类型之一,通过其包元数据中的 Type 设置:
  • wasmgrpc 服务运行由服务提供的代码。它们在启动时会与内核完成一次身份握手,随后在运行期间使用内核 API 来声明和更新它们拥有的传输与路由。
  • static 服务完全不运行任何代码。它们在包清单中一次性、提前声明好自己的传输和路由,由内核直接提供服务。运行时类型的工作方式及使用场景请参阅 Static 服务

传输与路由

服务的资源由两个相关的概念描述:
  • 传输(transport) 是服务拥有的一个端点:可以是静态文件来源、HTTP 处理程序,或是一个被代理的上游地址。
  • 路由(route) 将一个 URL 模式绑定到服务的某个传输上,并携带该绑定的访问策略。
将两者分开,使得一个传输可以服务于多条路由,也使服务可以在不重建底层连接的情况下更改其路由。完整的关系说明请参阅路由与传输;具体可用的传输类型(包括将流量转发到服务所拥有的上游地址的 proxy 传输)请参阅传输

通信

wasmgrpc 服务实现同一套协议;内核与服务如何通信请参阅协议。当服务需要共享的应用能力时,例如日志记录、键值存储、配置参数,或与另一个服务的服务间通信,可以使用内核的 Host API。 每个服务都由一份清单描述,其中包含名称、版本、运行时类型、契约版本等元数据,对于 wasmgrpc 服务而言,还包括用于启动它的命令。清单和运行时产物会被打包在一起,以便内核能够将服务作为一个整体发现并加载;包格式请参阅服务包