借助 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 来序列化。