传统微服务架构中,每引入一项新能力 —— 无论是队列、定时任务还是可观测性工具 —— 都意味着一套独立的集成故事:配置管理、协议适配、监控埋点。iii 项目以 Rust 构建核心引擎,提出了一种截然不同的思路:通过共享运行时(Shared Runtime)将服务组合、扩展与观测压缩为单一系统表面。
零集成哲学:从点对点连接到共享运行时
iii 的核心设计假设是,服务间的集成复杂度不应随服务数量指数增长。传统模式下,N 个服务两两互联需要 O (N²) 级别的集成工作量;而 iii 通过中央运行时将所有服务纳入统一目录,新服务加入后立即对其他服务可见。
这种设计在架构层面体现为 "零集成"(Zero-Integration)模式:服务不再通过点对点连接相互通信,而是向 iii 引擎注册自身能力,由引擎负责路由、序列化和投递。iii 官方文档指出,这一模式将 "队列、定时任务、HTTP、状态管理、可观测性、Agent 和沙箱" 等原本独立的基础设施统一到一个实时系统中。
三元原语:Worker、Function、Trigger
iii 将整个系统抽象为三个核心原语,形成极简的心智模型:
Worker 是向 iii 引擎注册的服务进程。无论是 TypeScript API 服务、Python 数据管道还是 Rust 微服务,都可以通过几行代码转化为 Worker。Worker 具备自扩展能力 —— 可以在运行时创建其他 Worker,这意味着 Agent 和应用能够在系统运行期间动态扩展功能。
Function 是带有稳定标识符的工作单元(如 content::classify、orders::validate)。它接收输入、执行逻辑、可选返回输出,存在于 Worker 内部。
Trigger 是触发 Function 执行的任何事件来源 —— 直接调用、HTTP 端点、Cron 调度、队列订阅、状态变更或流事件。Triggers 采用声明式定义:Worker 声明 "当某事发生时运行某函数",iii 负责处理路由、序列化和投递。
这三元结构的关键优势在于统一性:平台团队发布 Worker,应用团队注册 Function 并声明 Trigger,Agent 使用相同的目录和调用接口。扩展 iii 是 iii worker add,组合 iii 是调用 Function,观测 iii 是打开 Trace。
实时可观测性:内建而非外挂
iii 的可观测性设计遵循 "一等公民" 原则。由于所有服务交互都经过 iii 运行时,系统能够自动捕获全链路追踪、日志和实时状态,无需在每个服务中重复埋点。
全链路追踪:当服务 A 调用服务 B 的 Function 时,iii 自动维护调用上下文,生成端到端 Trace。开发者通过 iii-console(React + Rust 构建的运维控制台)可以实时查看 Workers、Functions、Triggers、队列、追踪、日志和状态。
动态发现与调用:Worker 加入实时目录后,其他 Worker 立即收到通知并可以调用它。这种实时性对于 Agent 场景尤为重要 —— 当任务需要系统不具备的能力时,Agent 可以动态添加 Worker,发现其 Functions,调用它们,并追踪执行过程。
多语言 SDK 支持:iii 提供 Node.js、Python 和 Rust 的官方 SDK,均采用 Apache 2.0 许可证。这意味着异构技术栈可以在同一运行时中无缝协作,观测数据格式统一,避免了多语言环境下常见的监控碎片化问题。
动态服务组合:运行时的扩展能力
iii 最具特色的能力之一是运行时动态扩展。通过 iii worker add 命令,开发者可以在不重启系统的情况下引入新能力:
iii worker add queue # 添加队列能力
iii worker add agent # 添加 Agent 能力
iii worker add sandbox # 添加沙箱能力
iii worker add <anything> # 添加任意自定义能力
这种动态性对 AI Agent 工作流尤为关键。Agent 可以在执行过程中评估任务需求,发现系统缺失的能力,动态部署相应的 Worker,然后继续执行。整个过程对 Agent 而言与调用已有服务无异 —— 相同的目录接口、相同的追踪机制。
工程实现考量
许可证策略:iii 采用分层许可证策略。引擎(Engine)基于 Rust 构建,采用 Elastic License 2.0(ELv2),这意味着商业使用可能受到一定限制;而所有 SDK、CLI、控制台、文档和网站均采用 Apache License 2.0,对开发者更为友好。
部署与运维:iii 提供 Docker 镜像(iiidev/iii),支持快速启动。项目初始化仅需 iii project init myapp,随后 iii 命令即可启动引擎。这种极简的运维接口降低了平台团队的接入门槛。
Skill 系统:iii 提供 Agent 可读的参考材料(Skills),涵盖 HTTP 端点、队列、Cron、状态、流、自定义 Trigger 等所有原语。这使得 AI Agent 能够理解 iii 的能力边界,实现更智能的自主扩展。
适用场景与限制
iii 的设计目标明确:简化服务组合与观测的复杂度。它特别适合以下场景:
- 需要快速迭代、频繁引入新能力的微服务架构
- AI Agent 驱动的动态工作流,需要运行时扩展服务目录
- 异构技术栈(Node.js/Python/Rust)的统一治理与观测
然而作为新兴项目,iii 的生产成熟度仍需验证。Elastic License 2.0 对引擎的商业使用限制也可能影响部分企业的采纳决策。此外,共享运行时模式虽然简化了集成,但也意味着 iii 引擎本身成为关键依赖,其可用性和性能直接影响整个系统。
结语
iii 代表了服务编排领域的一种新思路:将集成复杂度从 O (N²) 降至 O (N),通过共享运行时实现真正的零集成。其 Worker-Function-Trigger 三元原语提供了极简而强大的抽象,实时可观测性内建于架构核心,动态扩展能力则为 AI 时代的弹性基础设施提供了新可能。对于正在探索下一代服务架构的团队,iii 提供了一个值得关注的 Rust 原生解决方案。
资料来源
- iii GitHub 仓库: https://github.com/iii-hq/iii
- iii 官方文档: https://iii.dev/docs
内容声明:本文无广告投放、无付费植入。
如有事实性问题,欢迎发送勘误至 i@hotdrydog.com。