2週間前に質問しました。kaa クラスター セットアップ ガイド ドキュメントに従って、3 つの Kaa クラスターをデプロイしました。データベースは MongoDB と MariaDB です。最初にCクライアントを実行すると(すべてのクライアントが3つのkaaサーバーにランダムにログインできるようにコードを変更します)、kaaサーバーにログインしてイベントを送受信できます。しかし、クライアントを停止して 2 番目に起動すると、イベントを送受信できません。
それから私はそれを何度もやろうとします。しかし、ほとんど悪いです.今ではバグだと確信しています.それ以来、私は多くのテストを行ってきました.Javaクライアント、Androidクライアント、Cクライアントはすべて、Kaaでイベントを送受信できないという質問が表示されます.データベースは MongoDB と MariaDB です。C クライアント ログ、Java クライアント ログ、およびkaa サーバー ログはこちらにあります。この情報が問題の解決に役立つことを願っています。
問題の再現と分析を続けました。その理由は、クライアントが再ログインしたときに、そのクラスター エンドポイント情報が他のノードで更新されていなかったためです。アドレスが送信できません。このバグは、クラスター下のイベント関連のコードが原因である可能性があります。Kaa アプリケーション開発全体に影響するため、Kaa にはこの問題に注意していただきたいと考えています。
バグを修正する方法があります。まず、kaa クラスターの下で情報を送信するメカニズムについて説明します。情報が正しいことを願っています。3 つの kaa クラスター K1、K2、K3 とクライアント A がある場合。クライアント最初に K1 にログインし、次にクラスター K1、K2、K3 にクライアント A に関するクラスター エンドポイント情報があります (K1 にはクライアント A に関するローカル クラスター エンドポイント情報があり、K2、K3 にはクライアント A に関するリモート クラスター エンドポイント情報があります)。その後、停止して再起動します。 K2 にログインすると、K2 はクライアント A に関するクラスター エンドポイント情報を更新するために K1、K3 にメッセージを送信し、K1、K3 はすべてのクラスター エンドポイント情報を K2 に報告し、K2 はクライアント A に関するクラスター エンドポイント情報をローカルで更新します。このバグは K1 で発生し、K3 はクライアント A に関するクラスター エンドポイント情報を一度に更新しないため、K2 もクライアント A に関するクラスター エンドポイント情報を更新しません。
したがって、私の解決策は、クライアント A が K2 と K2 でログインを再開し、メッセージを K1 と K2 に送信し、クライアント A に関する古いクラスター エンドポイント情報を削除して、新しいものを追加することです。または、すべてのクラスター エンドポイント情報 (ローカル情報とリモート情報) をトラバーサルし、クライアント AI に関するクラスター エンドポイント情報を更新して、kaa チームがソリューションを検証し、バグを修正できることを願っています。
最新のニュースは、私が作成した Kaa クラスターでイベントの送受信ができません。