Repolode
ergo-services

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

    README の例のように、フレームワークをインポートして Go コード内でノードを起動します

  2. 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 の数値は毎日更新されます。

関連プロジェクト