etcdの調査を始めたばかりで、作成者による講演で言及されているユース ケースの 1 つは、ワーク キュー システムです。
しかし、実際にこれをどのように実装しますか?
基本的なパターンはこのようなものになります。
1 プロセスで「作業内容チケット」を生成し、そのチケットを etcd のフォルダーに配置すると、「/queue/worktickets/00000000001/」と言うことができます
1->「/queue/worktickets/」フォルダーの変更をリッスンする多くのプロセス。新しいワーク チケットが表示されると、すべてのプロセスは「/queue/locks/00000001」に新しい値を作成してそのチケットをロックすることにより、チケットを取得しようとします。最初のものだけがロック値を作成できます。
ロック チケットを作成したプロセスが機能し、キューからチケットを削除し、場合によってはロック値も削除します。次に、キューから次に利用可能なチケットを取得しようとします。使用可能なチケットがなくなった場合は、「/queue/worktickets/」フォルダー内の変更のリッスンを再度開始します。
私の頭の中では、これを実装するのはかなり簡単なはずですが、キューが大きくなると (チケットは生成するのは簡単ですが、処理するのは難しいです)、大量のデータが etcd から各クライアントに転送されるようです。私の知る限り、このフォルダーに存在しない最初の値をこのフォルダーに教えてくださいと言う方法はありません。また、フォルダーの上位 n 項目を教えてくれるものもあります。
誰もがこれについての考えを共有したいと思っています。