背景

借助 Lattice,我们可以很方便的部署一个 mesh 网络,并且这个网络具备自发现、自愈的能力。本文主要根据官方文档,罗列了 wasmcloud 系统中各模块用于交互的通信协议,通过跟踪这些对应的消息,更便于我们梳理 wasmcloud 的工作机制。

监听 nats-server 消息

使用 verbose 模式启动 nats-server,可以很方便监听其消息交互情况:

nats-server -js -p 4222 -m 8222 -V -l nats.log

更多用法请参阅 https://docs.nats.io/running-a-nats-service/configuration/logging

Lattice Protocols

Topic 一览

Topic 说明
wasmbus.rpc.{namespace}.{actor public key} actor 订阅的 topic,用于 RPC 通信
wasmbus.rpc.{namespace}.{provider public key}.{provider link name} provider 订阅的 topic,用于 RPC 通信
wasmbus.rpc.{prefix}.{public_key}.{link_name}.linkdefs.put provider 订阅 put linkdef
wasmbus.rpc.{prefix}.{public_key}.{link_name}.linkdefs.del provider 订阅 del linkedf
wasmbus.rpc.{prefix}.{public_key}.{link_name}.health provider 订阅 health
wasmbus.ctl.{namespace}.auction.provider 调度 provider
wasmbus.ctl.{namespace}.auction.actor 调度 actor
wasmbus.ctl.{namespace}.cmd.{host}.la Launch Actor
wasmbus.ctl.{namespace}.cmd.{host}.sa Stop Actor
wasmbus.ctl.{namespace}.cmd.{host}.scale 扩缩容 actor 的实例个数
wasmbus.ctl.{namespace}.cmd.{host}.lp Launch Provider
wasmbus.ctl.{namespace}.cmd.{host}.sp Stop Provider
wasmbus.ctl.{namespace}.cmd.{host}.upd 热更新 Actor
wasmbus.ctl.{namespace}.get.links Get links
wasmbus.ctl.{namespace}.get.claims Get claims
wasmbus.ctl.{namespace}.get.{host}.inv 获取指定 Host 下的 inventory
wasmbus.ctl.{namespace}.linkdefs.put put link def
wasmbus.ctl.{namespace}.linkdefs.del del link def
wasmbus.ctl.{namespace}.ping.hosts ping pong 检查
wasmbus.evt.{prefix} Lattice events,满足 cloud event 规范

RPC

Lattice 是建立在 NATS message broker 之上的 RPC 总线层,支持以下的交互模型

处于安全原因,RPC 的 NATS 链接和接下来要介绍的 control interface 链接是分开的。并且所有的请求和回复,使用 message pack 来序列化。

*https://msgpack.org/index.html*