借助 Lattice,我们可以很方便的部署一个 mesh 网络,并且这个网络具备自发现、自愈的能力。本文主要根据官方文档,罗列了 wasmcloud 系统中各模块用于交互的通信协议,通过跟踪这些对应的消息,更便于我们梳理 wasmcloud 的工作机制。
使用 verbose 模式启动 nats-server,可以很方便监听其消息交互情况:
nats-server -js -p 4222 -m 8222 -V -l nats.log
更多用法请参阅 https://docs.nats.io/running-a-nats-service/configuration/logging
| 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 规范 |
Lattice 是建立在 NATS message broker 之上的 RPC 总线层,支持以下的交互模型
处于安全原因,RPC 的 NATS 链接和接下来要介绍的 control interface 链接是分开的。并且所有的请求和回复,使用 message pack 来序列化。