車輪を再発明する前に、これらの要件を満たすオープン ソース プロジェクトへのポインタを探しています。
- 荷物が多すぎない場合は、go または C が可能ですが、erlang で実装されます (例: 依存関係のねじれた迷路)。
- erlang のエンドポイントまたはクライアント (例: 仕事をするときに erlang コードを実行したい。)
- ジョブをノードに分散し、いくつかの erlang 関数を呼び出してジョブを実行します。
- 何とかして仕事を続ける
- マスターノードなし、単一障害点なし
- 同種のアーキテクチャ
- ジョブを床に落とさずに、バックアップされる可能性のあるジョブのキューを管理する
- 複数回実行されるジョブは問題ありません
- Riak や Couchbase などの運用プロファイル (例: 1 つのノードを開始し、次に他のノードを開始して、それらをそのノードに向ける)
軽いものを好む傾向が強い。erlang には、やり過ぎたエンタープライズ レベルのソリューションがたくさんありますが、これをゼロから再作成するのと同じくらい習得するのに時間がかかるようです (実際、私は基本的に、誰かへの回答として、まさにこの問題に対するソリューションを設計しました。ここでスタックオーバーフローに関するelseの質問.私が説明したものを構築することはできますが、これはerlangが設計されたものの真ん中にあるニーズの1つのようです.)
私が考えたこと: - ejabbered - より多くのメッセージング フレームワーク - rabitmq - 理論的にはこれを行いますが、彼らの Web サイトにアクセスするたびに、抽象化の海に溺れます。すべてを行う準備ができているようです。永続性があるかどうかさえわかりません。
編集して追加:これは、ロッカーを使用した分散ロックに関するスライド デッキです。問題の重要な部分を解決するようです(自分でロールバックしたい場合) http://www.slideshare.net/knutnesheim/locker-distributed-consistent-locking
さらに編集: RabbitMQ よりも軽量なものを本当に探しています。自分のやりたいことができることはわかっていますが、それを学習するコストは、自分でそれを行うコストに匹敵するように思えます。最終的には、カスタム ソリューションが本当に必要なものに近くなります。