Restate — среда выполнения для создания отказоустойчивых приложений с долговечным выполнением, надежной передачей сообщений и состоянием, сохраняющимися при сбоях инфраструктуры.
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
Импортируйте фреймворк и запустите узел в коде Go, как показано в примере README
- 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 обновляется ежедневно.
Похожие проекты
Rivet — оркестратор с открытым исходным кодом, который распределяет долговечные Actor с состоянием для агентов, рабочих процессов и приложений реального времени — альтернатива планированию на основе подов.
Движок оркестрации фоновых задач, AI-агентов и долговечных рабочих процессов с SDK для Python, TypeScript, Go и Ruby и Postgres в качестве слоя надёжного хранения.
Java-реализация Apache Dubbo — RPC- и микросервисного фреймворка для связи между сервисами, обнаружения сервисов и управления трафиком.
Open-source движок устойчивого выполнения для оркестрации микросервисов, AI-агентов и адаптивных графов workflow с воркерами на разных языках.
Temporal — платформа надёжного выполнения, сервер которой запускает рабочие процессы приложения и автоматически повторяет неудачные операции.