#能力提供者 #wasmcloud #控制 #ctl #API绑定 #NATS客户端

wasmcloud-interface-lattice-control

该库包含用于支持wasmcloud:latticecontrol合同的actor和提供者使用的类型和服务定义。

27个版本 (破坏性更新)

0.20.0 2023年9月19日
0.19.0 2023年7月20日
0.18.0 2023年4月12日
0.17.0 2022年12月29日
0.2.2 2021年11月26日

#271 in WebAssembly

Download history 5/week @ 2024-03-09 14/week @ 2024-03-16 20/week @ 2024-03-30 1/week @ 2024-04-06 358/week @ 2024-04-20 20/week @ 2024-04-27

每月115次下载

Apache-2.0和可能LGPL-3.0-or-later

185KB
4.5K SLoC

crates.io 

WasmCloud Lattice Control Interface

Lattice控制接口是一个由smithy定义的接口合同,概述了支持wasmcloud:latticecontrol合同的能力提供者所支持的运算和数据结构。

  • 能力提供者 - 能力提供者可以简单地围绕NATS客户端提供一个包装,将lattice控制功能暴露给actor
  • Actor - Actor可以使用这个crate,就像使用任何其他wasmCloud接口crate一样,从而使actor能够包含业务逻辑,该逻辑可以操作lattice。

能力提供者实现

以下是一个实现wasmcloud:latticecontrol合同的列表。如果您有一个社区/开源版本,欢迎提交PR添加您的实现。

名称 供应商 描述
Lattice Controller wasmCloud lattice控制器提供者的第一方实现

示例用法(🦀 Rust)

在主机上启动250个echo actor实例

use wasmbus_rpc::actor::prelude::{Context, RpcResult};
use wasmcloud_interface_lattice_control::{
    CtlOperationAck, LatticeController, LatticeControllerSender, StartActorCommand,
};
use wasmcloud_interface_logging::debug;

async fn start_actor(ctx: &Context) -> RpcResult<CtlOperationAck> {
    let lattice = LatticeControllerSender::new();
    let cmd = StartActorCommand {
        lattice_id: "default".to_string(),
        actor_ref: "wasmcloud.azurecr.io/echo:0.3.4".to_string(),
        annotations: None,
        count: 250,
        host_id: "NB67YNOVU5YB3526RUNCKNZBCQDH2L5NZJKQ6FWOVWGSHNHHEO65RP4A".to_string(),
    };

    debug!(
        "Starting {} instance(s) of actor {} on host {}",
        cmd.count, cmd.actor_ref, cmd.host_id
    );

    lattice.start_actor(ctx, &cmd).await
}

获取lattice中的所有主机

use wasmbus_rpc::actor::prelude::{Context, RpcResult};
use wasmcloud_interface_lattice_control::{Host, LatticeController, LatticeControllerSender};
use wasmcloud_interface_logging::info;

async fn get_hosts(ctx: &Context) -> RpcResult<Vec<Host>> {
    let lattice = LatticeControllerSender::new();
    let hosts = lattice.get_hosts(ctx, GetHostsRequest {
        lattice_id: "default".to_string()
    }).await?;

    info!("There are {} hosts in this lattice", hosts.len());
    Ok(hosts)
}

依赖项

~13–30MB
~496K SLoC