← 返回信息流
GitHub 热榜GitHub Trending · 日·7 天前

iii:Rust构建的实时服务编排与可观测性框架

原标题:iii-hq/iii
Rust16,823 stars+427 今日

速览

iii是一个基于Rust的高性能框架,旨在首次实现服务编排、扩展与实时观测的无缝集成。它允许开发者轻松组合和扩展各个服务组件,并提供强大的实时可观测性能力,适用于需要高并发和复杂服务交互的现代分布式系统场景。

AI 深度解读

这是什么

iii 是一个基于 Rust 构建的实时服务编排与可观测性框架,旨在通过统一的接口简化现代后端架构的复杂性。它允许开发者将队列(Queues)、定时任务(Cron)、HTTP 服务、状态管理、可观测性工具以及 AI Agent 沙箱等组件,无缝地组合成一个单一的“实时系统表面”(live system surface)。

该项目由 iii-hq 维护,主语言为 Rust,目前在 GitHub 上已获得约 16,823 颗星。其核心理念是将所有后端服务抽象为三种基本原语:Worker(工作进程)Function(函数)Trigger(触发器)。通过这种抽象,iii 提供了一个声明式的开发体验,使得服务的集成、扩展和监控变得极其简单。

解决的问题

在传统微服务或分布式系统中,引入新功能或基础设施组件往往伴随着巨大的集成成本:

  1. 碎片化的集成故事:每一个新组件(如新的消息队列、新的可观测性工具、新的 Agent 框架)通常都需要独立的集成代码、配置和运维流程。
  2. 高昂的集成门槛:引入新的队列服务可能需要经过供应商评估、采购以及数周的集成开发时间。
  3. 可观测性割裂:不同的服务往往带来不可计数的集成点,导致追踪(Tracing)、重试配置、超时设置等分散在不同地方,难以形成统一的视图。
  4. Agent 集成的复杂性:当 AI Agent 需要调用系统内部能力时,通常需要单独处理函数发现、调用和追踪逻辑,与开发者使用的接口不一致。

iii 通过将所有这些能力收敛到一个统一的引擎中,解决了上述碎片化和集成复杂度的问题。

核心功能

iii 的架构建立在三个核心原语之上:

1. Worker(工作进程)

Worker 是注册到 iii 引擎中的进程。任何功能单元都可以成为 Worker:

  • TypeScript API 服务
  • Python 数据管道
  • Rust 微服务
  • 甚至是一个简单的脚本

Worker 通过 iii worker add <component> 命令加入实时目录(Live Catalog)。一旦加入,其他所有 Worker 都会收到通知,并可以立即调用该 Worker 提供的功能。开发者可以在 workers.iii.dev 浏览可用的 Worker。

2. Trigger(触发器)

Trigger 是触发 Function 运行的事件。它是声明式的,由 Worker 定义“当某事发生时,运行此函数”。iii 引擎负责处理路由、序列化和交付。支持的 Trigger 类型包括:

  • 对函数的直接调用
  • HTTP 端点
  • Cron 定时任务
  • 队列订阅
  • 状态变更
  • 流事件(Stream events)

3. Function(函数)

Function 是带有稳定标识符(如 content::classifyorders::validate)的工作单元。它接收输入,执行逻辑,并可选地返回输出。Function 存在于 Worker 内部。

动态扩展与 Agent 支持

  • 运行时扩展:Worker 可以在运行时创建其他 Worker,这意味着 Agent 和应用程序可以在系统运行期间动态扩展其能力。
  • Agent 原生支持:当任务需要系统不具备的能力时,Agent 可以添加一个新的 Worker,发现其函数,调用它们,并追踪整个过程。Agent 使用的接口与开发者使用的接口完全一致。

可观测性与控制台

  • iii-console:提供开发者和管理员控制台,用于检查 Worker、Function、Trigger、队列、追踪、日志和实时状态。
  • 统一追踪:所有通过 iii 调用的操作都自动纳入追踪系统,无需额外配置。

亮点 / 与同类相比

  • 极简的集成体验
    • 传统方式:引入新队列需评估、采购、数周集成。
    • iii 方式:只需运行 iii worker add queue,即可在系统中完成注册、可追踪、可调用。
  • 统一的 Mental Model(心智模型): 无论是开发者、平台团队还是 AI Agent,都使用相同的目录(Catalog)和相同的函数调用接口。这种一致性极大地降低了认知负担和集成复杂度。
  • 声明式触发器: 通过声明式定义触发器,iii 自动处理底层的消息路由和序列化,开发者无需编写样板代码。
  • 多语言支持: 虽然引擎用 Rust 编写以保证性能,但支持 TypeScript、Python 等多种语言的 Worker,通过 SDK 和 CLI 进行交互。
  • Skills 系统: 提供 npx skills add iii-hq/iii/skills 命令,让 Agent 能够读取 iii 的原语文档(HTTP 端点、队列、Cron 等),使 AI 能够理解并调用系统能力。

适合谁用 / 上手

适合谁用

  • 平台工程团队:希望统一基础设施能力,减少各业务线重复集成成本。
  • 应用开发团队:希望快速注册函数和声明触发器,专注于业务逻辑而非基础设施集成。
  • AI Agent 开发者:需要构建能够动态发现、调用和追踪内部系统能力的 Agent。
  • 寻求简化微服务架构的团队:希望减少服务间集成的复杂性,实现更紧密的组件组合。

如何上手

  1. 初始化项目

    iii project init myapp
    cd myapp
    
  2. 启动引擎

    iii
    
  3. 添加能力: 使用 iii worker add 命令添加所需组件:

    iii worker add queue
    iii worker add agent
    iii worker add sandbox
    iii worker add observability
    
  4. 安装 Skills(可选,用于 Agent)

    npx skills add iii-hq/iii/skills
    
  5. 查看文档

    • Quickstart guide:获取分步教程。
    • STRUCTURE.md:了解 Monorepo 布局、依赖链和 CI/CD 细节。
    • Console docs:了解 iii-console 的设置和使用。

许可证

  • 引擎运行时:Elastic License 2.0 (ELv2)
  • SDK、CLI、控制台、文档和网站:Apache License 2.0
查看原文 →github.com