Restate 是一个用于构建高可靠应用的平台,通过持久化执行、可靠通信和一致状态抵御基础设施故障。
ergo-services/ergo
受 Erlang/OTP 启发的 Go 参与者模型框架,用于构建可监督、网络透明的分布式系统。
- Star
- 4,681
- Fork
- 191
- 未关闭 Issue
- 0
- 最近提交
- 13天前
这是什么?
Ergo 是一个 Go 框架,把程序组织为相互隔离的参与者(进程),彼此只通过消息通信。每个参与者逐条处理消息,开发者无需为共享状态加锁。参与者组成监督树,子进程失败后会按可配置的策略重启;无论参与者位于本地还是集群中的其他节点,寻址方式都一致。
框架提供监督者、工作池、路由器,以及用于封装阻塞式 TCP、UDP、Port 和 Web I/O 的元进程,避免阻塞常规的消息处理。集群能力包括通过内嵌或外部注册中心进行服务发现、分布式发布/订阅事件、远程进程启动,并可通过 Erlang 分布式协议与 Erlang、Elixir 节点互通。项目无外部依赖,采用 MIT 协议。
配套的 Observer 应用提供 Web 界面,用于查看运行中节点的进程、网络、事件和日志,并暴露 MCP 端点供 AI 助手查询集群。命令行工具 ergo 可生成应用、参与者和消息类型的项目脚手架。
核心功能
- 01参与者顺序处理消息,每个邮箱包含四个优先级队列。
- 02支持 One For One、All For One、Rest For One、Simple One For One 四种监督策略。
- 03本地与远程参与者使用同一套消息 API,并采用 EDF 二进制序列化。
- 04支持通过内嵌或外部注册中心(如 etcd)进行服务发现。
- 05提供分布式发布/订阅事件和远程进程启动。
- 06可通过 Erlang 分布式协议与 Erlang、Elixir 节点互通。
- 07提供 Observer 网页界面和可导出到 OTLP 后端的分布式追踪。
适用场景
- 构建实时后端,让每个客户端连接成为可寻址的参与者。
- 管理大量物联网设备,每台设备对应一个参与者。
- 协调需要崩溃隔离和监督的多智能体 AI 系统。
- 与 Erlang 或 Elixir 节点组成混合集群运行 Go 服务。
快速上手
- 1
在 Go 代码中导入框架并启动节点,参照 README 中的示例
- 2
在节点上创建 Actor 并向其发送消息
标签
常见问题
- ergo 是什么?
- 受 Erlang/OTP 启发的 Go 参与者模型框架,用于构建可监督、网络透明的分布式系统。 Ergo 是一个 Go 框架,把程序组织为相互隔离的参与者(进程),彼此只通过消息通信。每个参与者逐条处理消息,开发者无需为共享状态加锁。参与者组成监督树,子进程失败后会按可配置的策略重启;无论参与者位于本地还是集群中的其他节点,寻址方式都一致。
- ergo 可以免费使用吗?用的什么许可证?
- ergo 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- ergo 还在维护吗?
- 活跃维护中。ergo 最近一次提交是在 2026年10月9日。
- ergo 适合用来做什么?
- 构建实时后端,让每个客户端连接成为可寻址的参与者。 管理大量物联网设备,每台设备对应一个参与者。 协调需要崩溃隔离和监督的多智能体 AI 系统。 与 Erlang 或 Elixir 节点组成混合集群运行 Go 服务。
- ergo 怎么安装和运行?
- 在 Go 代码中导入框架并启动节点,参照 README 中的示例 在节点上创建 Actor 并向其发送消息
- 在哪里获取 ergo?
- 源代码和安装说明在 GitHub 上:https://github.com/ergo-services/ergo
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
Rivet 是一个开源编排器,用持久化的 Actor 承载智能体、工作流和实时应用的有状态任务。
面向后台任务、AI 智能体和持久化工作流的编排引擎,支持 Python、TypeScript、Go 和 Ruby。
Apache Dubbo 的 Java 实现,一个用于构建 RPC 通信与微服务的框架。
开源的持久化执行引擎,用于编排微服务、AI Agent 和自适应工作流图,支持多语言 Worker。
Temporal 是一个持久化执行平台,服务端可可靠地运行工作流并自动重试失败的操作。