Repolode
ergo-services

ergo-services/ergo

Фреймворк для Go на основе акторной модели, вдохновлённый Erlang/OTP, для создания распределённых систем с супервизией и прозрачным взаимодействием по сети.

Звёзды
4,681
Форки
191
Открытые issues
0
Последний коммит
13 дней назад

Что это?

Ergo — фреймворк для Go, в котором программа строится из изолированных акторов (процессов), взаимодействующих только через сообщения. Каждый актор обрабатывает сообщения по одному, поэтому разработчикам не нужно защищать общее состояние с помощью mutex. Акторы объединяются в деревья супервизии: при сбое дочерние акторы перезапускаются согласно заданным стратегиям. Актор можно адресовать одинаково независимо от того, работает он на локальном узле или на другом узле кластера.

В фреймворк входят супервизоры, пулы воркеров, роутеры и метапроцессы, которые оборачивают блокирующий ввод-вывод через TCP, UDP, порты и веб-интерфейсы, не мешая обычной обработке сообщений акторами. Возможности кластеризации включают обнаружение сервисов через встроенные или внешние регистраторы, распределённые события publish/subscribe, удалённое создание процессов и совместимость с узлами Erlang и Elixir по протоколу распределения Erlang. У проекта нет внешних зависимостей; лицензия — MIT.

Сопутствующее приложение Observer предоставляет веб-интерфейс для просмотра процессов, сетей, событий и логов на работающих узлах, а также открывает конечную точку MCP, через которую AI-ассистенты могут отправлять запросы кластеру. CLI с именем ergo генерирует каркас приложений, акторов и типов сообщений.

Ключевые возможности

  • 01Изолированные акторы обрабатывают сообщения последовательно; в почтовом ящике каждого актора есть четыре очереди с разными приоритетами.
  • 02Деревья супервизии со стратегиями One For One, All For One, Rest For One и Simple One For One.
  • 03Одинаковый API обмена сообщениями для локальных и удалённых акторов с бинарной сериализацией EDF.
  • 04Обнаружение сервисов через встроенные или внешние регистраторы, например etcd.
  • 05Распределённые события publish/subscribe и удалённое создание процессов.
  • 06Совместимость с узлами Erlang и Elixir по протоколу распределения Erlang.
  • 07Веб-интерфейс Observer и распределённая трассировка, совместимая с OpenTelemetry.

Сценарии использования

  • Создание бэкендов реального времени, где каждому клиентскому подключению соответствует адресуемый актор.
  • Управление большим количеством IoT-устройств, по одному актору на устройство.
  • Координация мультиагентных AI-систем, которым нужны изоляция сбоев и супервизия.
  • Запуск сервисов на Go в гетерогенном кластере вместе с узлами Erlang или Elixir.

Быстрый старт

  1. 1

    Импортируйте фреймворк и запустите узел в коде Go, как показано в примере README

  2. 2

    Создайте актор на узле и отправляйте ему сообщения

Темы

Частые вопросы

Что такое ergo?
Фреймворк для Go на основе акторной модели, вдохновлённый Erlang/OTP, для создания распределённых систем с супервизией и прозрачным взаимодействием по сети. Ergo — фреймворк для Go, в котором программа строится из изолированных акторов (процессов), взаимодействующих только через сообщения. Каждый актор обрабатывает сообщения по одному, поэтому разработчикам не нужно защищать общее состояние с помощью mutex. Акторы объединяются в деревья супервизии: при сбое дочерние акторы перезапускаются согласно заданным стратегиям. Актор можно адресовать одинаково независимо от того, работает он на локальном узле или на другом узле кластера.
ergo можно использовать бесплатно? Какая у него лицензия?
ergo распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
ergo всё ещё поддерживается?
Активно поддерживается. Последний коммит в ergo — 9 окт. 2026 г..
Для чего можно использовать ergo?
Создание бэкендов реального времени, где каждому клиентскому подключению соответствует адресуемый актор. Управление большим количеством IoT-устройств, по одному актору на устройство. Координация мультиагентных AI-систем, которым нужны изоляция сбоев и супервизия. Запуск сервисов на Go в гетерогенном кластере вместе с узлами Erlang или Elixir.
Как установить ergo?
Импортируйте фреймворк и запустите узел в коде Go, как показано в примере README Создайте актор на узле и отправляйте ему сообщения
Где скачать ergo?
Исходный код и инструкции по установке — на GitHub: https://github.com/ergo-services/ergo

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Restate — среда выполнения для создания отказоустойчивых приложений с долговечным выполнением, надежной передачей сообщений и состоянием, сохраняющимися при сбоях инфраструктуры.

4,6 тыс.226RustOtherОбновлён 2 часа назад

Rivet — оркестратор с открытым исходным кодом, который распределяет долговечные Actor с состоянием для агентов, рабочих процессов и приложений реального времени — альтернатива планированию на основе подов.

6,3 тыс.280RustApache-2.0Обновлён 14 часов назад