2
AWS IoTでジョブキューのメインおよびフェイルオーバーMQTTサブスクライバーを設定するにはどうすればよいですか?
クライアント(ClientAと呼ぶ)が特定のMQTTトピックにリクエストを発行できるシステムがあります。ブローカーは、重要な場合には、アマゾンウェブサービスです。次に、常に同じトピックにサブスクライブしている別のクライアント(MainSubscriberと呼ぶことにします)を用意します。これにより、ClientAからの要求を取得し、最終的にはデータベース操作になるいくつかの作業を実行できます。重要な場合は、データベースはDynamoDBです。 MainSubscriberは常にアクセス可能/オンラインであるとは限らないため、フェイルオーバーサブスクライバーがメインサブスクライバーのフェイルオーバーバックアップになることが望まれます。考えは、メインサブスクライバーが要求をタイムリーに処理しない場合、フェールオーバーサブスクライバーが起動し、同等の作業/データベース操作を実行するというものです。課題は、「作業」とその結果の「データベース操作」をメインサブスクライバーとフェイルオーバーサブスクライバーの両方で複製してはならないことです。 これは、このシステムの論理システムアーキテクチャ図です。 -----> MainSubscriber ---- / \ ClientA --> Broker ---> Database \ / ---> FailoverSubscriber -- 明らかに、このようなシステムにはいくつかの課題があります。 メインサブスクライバーは、フェールオーバーサブスクライバーに対して、要求を処理していることをどのように示しますか? フェイルオーバーサブスクライバーは、メインサブスクライバーが要求を取得しておらず、要求の処理を開始する必要があることをどのように検出しますか フェールオーバーサブスクライバーは、突然突然オンラインに戻って要求を受け取った場合に、メインサブスクライバーをどのように保留しますか? メインサブスクライバーとフェールオーバーサブスクライバー間の同期の問題に対処する方法 そのようなスキームの既存のソリューションがすでに存在する場合は、ホイールを再発明する必要はありません。それで、私の最初の質問は、すでに何かがあるかどうかです。 そうでない場合は、DynamoDBを非常に一貫した読み取りで使用して、メインサブスクライバーとフェールオーバーサブスクライバーの間のメディエーターとして機能することを考えていました。それで、私の2番目の質問は、これを行うための確立されたスキームがあるかどうかです。