Restateは、インフラ障害が発生しても処理を継続できる、耐障害性の高いアプリケーションを構築するためのランタイムです。
ergo-services/ergo
Erlang/OTPに着想を得たGo向けアクターモデルフレームワーク。監視機能とネットワーク透過性を備えた分散システムを構築できます。
- スター
- 4,681
- フォーク
- 191
- 未解決の Issue
- 0
- 最終コミット
- 13 日前
これは何?
Ergoは、プログラムを独立したアクター(プロセス)に分割し、メッセージだけで通信するGoフレームワークです。各アクターはメッセージを一度に1つずつ処理するため、共有状態を保護するmutexを使わずに済みます。アクターは監視ツリーで管理され、設定可能な戦略に従って失敗した子アクターが再起動されます。また、アクターがローカルノード上にあるか、クラスター内の別のノード上にあるかにかかわらず、同じ方法で宛先を指定できます。
フレームワークには、スーパーバイザー、ワーカープール、ルーター、メタプロセスが含まれます。メタプロセスは、ブロッキングを伴うTCP、UDP、ポート、WebのI/Oをラップし、通常のアクターメッセージ処理を妨げないようにします。クラスター機能として、組み込みまたは外部のレジストラーによるサービスディスカバリー、分散パブリッシュ/サブスクライブイベント、リモートプロセスの起動、Erlang distribution protocolを介したErlangおよびElixirノードとの相互運用を備えています。外部依存関係はなく、MITライセンスで公開されています。
付属のObserverアプリケーションは、稼働中のノード上でプロセス、ネットワーク、イベント、ログを調べるWeb UIを提供し、AIアシスタントがクラスターに問い合わせるためのMCPエンドポイントも公開します。ergoというCLIを使うと、アプリケーション、アクター、メッセージ型のプロジェクト雛形を生成できます。
主な機能
- 01メールボックスに4つの優先度キューを備え、メッセージを順番に処理する独立したアクター。
- 02One For One、All For One、Rest For One、Simple One For Oneの各戦略に対応した監視ツリー。
- 03ローカルとリモートのアクターで共通のメッセージングAPIを使用。EDFバイナリシリアライゼーションに対応。
- 04組み込みまたはetcdなどの外部レジストラーを使ったサービスディスカバリー。
- 05分散パブリッシュ/サブスクライブイベントとリモートプロセスの起動。
- 06Erlang distribution protocolを介したErlangおよびElixirノードとの相互運用。
- 07Observer Web UIとOpenTelemetry互換の分散トレーシング。
ユースケース
- 各クライアント接続をアドレス指定可能なアクターとして扱うリアルタイムバックエンドの構築。
- デバイスごとに1つのアクターを割り当てた、大量のIoTデバイスの管理。
- クラッシュ分離と監視が必要なマルチエージェントAIシステムの協調。
- ErlangまたはElixirノードと共存する異種クラスターでのGoサービスの実行。
クイックスタート
- 1
README の例のように、フレームワークをインポートして Go コード内でノードを起動します
- 2
ノード上にアクターを生成し、メッセージを送信します
トピック
よくある質問
- ergo とは?
- Erlang/OTPに着想を得たGo向けアクターモデルフレームワーク。監視機能とネットワーク透過性を備えた分散システムを構築できます。 Ergoは、プログラムを独立したアクター(プロセス)に分割し、メッセージだけで通信するGoフレームワークです。各アクターはメッセージを一度に1つずつ処理するため、共有状態を保護するmutexを使わずに済みます。アクターは監視ツリーで管理され、設定可能な戦略に従って失敗した子アクターが再起動されます。また、アクターがローカルノード上にあるか、クラスター内の別のノード上にあるかにかかわらず、同じ方法で宛先を指定できます。
- ergo は無料で使えますか?ライセンスは?
- ergo は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
- ergo は今もメンテナンスされていますか?
- 活発にメンテナンス中。ergo の最終コミットは 2026年10月9日 です。
- ergo は何に使えますか?
- 各クライアント接続をアドレス指定可能なアクターとして扱うリアルタイムバックエンドの構築。 デバイスごとに1つのアクターを割り当てた、大量のIoTデバイスの管理。 クラッシュ分離と監視が必要なマルチエージェントAIシステムの協調。 ErlangまたはElixirノードと共存する異種クラスターでのGoサービスの実行。
- ergo のインストール方法は?
- README の例のように、フレームワークをインポートして Go コード内でノードを起動します ノード上にアクターを生成し、メッセージを送信します
- ergo はどこで入手できますか?
- ソースコードとインストール手順は GitHub にあります:https://github.com/ergo-services/ergo
概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。
関連プロジェクト
Rivetは、Podベースのスケジューリングに代わる、エージェント、ワークフロー、リアルタイムアプリ向けの永続状態を持つActorをスケジュールするオープンソースのオーケストレーターです。
バックグラウンドタスク、AIエージェント、永続ワークフローをオーケストレーションするエンジン。Python、TypeScript、Go、RubyのSDKを備え、永続化レイヤーにPostgresを採用。
サービス通信、ディスカバリー、トラフィック管理を実現するRPC・マイクロサービスフレームワーク、Apache DubboのJava実装。
マイクロサービス、AIエージェント、適応型ワークフローグラフをオーケストレーションする、複数言語のワーカーに対応したオープンソースの耐障害性実行エンジン。
Temporalは、アプリケーションのWorkflowを実行し、失敗したステップを自動で再試行する耐障害性の高い実行プラットフォームです。