docs: document persistent Host KV
Describe the versioned KV capability, service-level namespace, persistence behavior, limits, and kv-probe packaging workflow. Record the v0.1 exclusions for TTL, enumeration, transactions, and compare-and-swap.
This commit is contained in:
@@ -8,6 +8,11 @@ Runtime 内置版本化 Host Capability Registry。注册 Component 时会直接
|
|||||||
imports,只链接实际请求且版本完全匹配的 Host 能力;未知能力会被拒绝。能力不需要在
|
imports,只链接实际请求且版本完全匹配的 Host 能力;未知能力会被拒绝。能力不需要在
|
||||||
`.wasmpkg` 中重复声明,管理面会展示每个服务版本解析出的完整接口标识。
|
`.wasmpkg` 中重复声明,管理面会展示每个服务版本解析出的完整接口标识。
|
||||||
|
|
||||||
|
当前 Host 能力:
|
||||||
|
|
||||||
|
- `wasmeld:clock/monotonic-clock@0.1.0`:Actor 内单调时钟
|
||||||
|
- `wasmeld:kv/store@0.1.0`:按服务隔离、跨 Revision 共享的持久化二进制 KV
|
||||||
|
|
||||||
## 结构
|
## 结构
|
||||||
|
|
||||||
```text
|
```text
|
||||||
@@ -58,6 +63,16 @@ cargo run -p wasmeld-package --bin wasmeld -- \
|
|||||||
pack components/echo/Cargo.toml --locked
|
pack components/echo/Cargo.toml --locked
|
||||||
```
|
```
|
||||||
|
|
||||||
|
KV 示例组件:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
cargo run -p wasmeld-package --bin wasmeld -- \
|
||||||
|
pack components/kv-probe/Cargo.toml --locked
|
||||||
|
```
|
||||||
|
|
||||||
|
`kv-probe` 接受 `set:<key>:<value>`、`get:<key>` 和 `delete:<key>`,用于验证 Host KV
|
||||||
|
能力;它不是公开 Gateway 的业务协议。
|
||||||
|
|
||||||
发布 WIT Package:
|
发布 WIT Package:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|||||||
@@ -8,11 +8,14 @@
|
|||||||
- 启动、停止和重启常驻 Actor
|
- 启动、停止和重启常驻 Actor
|
||||||
- 管理服务 ID 到活动版本的 Deployment
|
- 管理服务 ID 到活动版本的 Deployment
|
||||||
- 通过独立 Gateway 转发原始二进制调用
|
- 通过独立 Gateway 转发原始二进制调用
|
||||||
|
- 为导入 `wasmeld:kv/store@0.1.0` 的 Component 提供持久化 KV
|
||||||
- 暴露调用计数、状态和最近事件
|
- 暴露调用计数、状态和最近事件
|
||||||
|
|
||||||
Wasm 制品保存在本地文件系统。服务 manifest、调用计数和最近 256 条事件通过
|
Wasm 制品保存在本地文件系统。服务 manifest、调用计数和最近 256 条事件通过
|
||||||
[Toasty](https://github.com/tokio-rs/toasty) 写入本地 libSQL 数据库,默认路径是
|
[Toasty](https://github.com/tokio-rs/toasty) 写入本地 libSQL 数据库,默认路径是
|
||||||
`var/wasmeld/console.db`。Deployment 也存储在同一数据库中。
|
`var/wasmeld/console.db`。Deployment 也存储在同一数据库中。
|
||||||
|
Host KV 使用 `(service_id, key)` 复合主键存储在该数据库中:同一服务的 Revision
|
||||||
|
共享数据,不同服务互相隔离,Runtime 或 Console 重启不会清空 KV。
|
||||||
|
|
||||||
`wasmeld-console` 启动时会在同一进程内创建 `wasmeld-runtime`、加载 Wasmtime Engine,
|
`wasmeld-console` 启动时会在同一进程内创建 `wasmeld-runtime`、加载 Wasmtime Engine,
|
||||||
并重新注册已保存的 Component。Runtime 停止后 Console HTTP 和数据库仍然在线;
|
并重新注册已保存的 Component。Runtime 停止后 Console HTTP 和数据库仍然在线;
|
||||||
@@ -95,6 +98,12 @@ curl http://127.0.0.1:8081/v1/services/echo/invoke \
|
|||||||
`wasmeld:clock/monotonic-clock@0.1.0`。Console 不接受手工能力声明,Runtime 只会链接
|
`wasmeld:clock/monotonic-clock@0.1.0`。Console 不接受手工能力声明,Runtime 只会链接
|
||||||
注册表中存在且版本完全匹配的接口。
|
注册表中存在且版本完全匹配的接口。
|
||||||
|
|
||||||
|
## Host KV
|
||||||
|
|
||||||
|
`wasmeld:kv/store@0.1.0` 提供 `get`、`set` 和 `delete`。Key 必须是非空 UTF-8,
|
||||||
|
最大 256 B;Value 最大 64 KiB。数据库命令通过有界专用工作线程执行,Host 等待时间
|
||||||
|
不会超过服务的 `deadline_ms`。v0.1.0 不提供 TTL、遍历、事务或 CAS。
|
||||||
|
|
||||||
组件包的构建与格式说明见
|
组件包的构建与格式说明见
|
||||||
[`docs/design/wasmeld-component-package.md`](../../docs/design/wasmeld-component-package.md)。
|
[`docs/design/wasmeld-component-package.md`](../../docs/design/wasmeld-component-package.md)。
|
||||||
WIT 依赖、Registry 和本地 replace 说明见
|
WIT 依赖、Registry 和本地 replace 说明见
|
||||||
|
|||||||
Reference in New Issue
Block a user