Repolode
ergo-services

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. 1

    在 Go 代码中导入框架并启动节点,参照 README 中的示例

  2. 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 数据每日更新。

相关项目