两周前我问了一个问题。我按照 kaa 集群设置指南文档部署了 3 个 Kaa 集群。数据库是 MongoDB 和 MariaDB。当我首先运行C客户端时(我做了一个代码更改,每个客户端可以随机登录三个kaa服务器),它可以登录kaa服务器并发送或接收事件。但是在我停止客户端并再次启动它之后,它无法发送或接收事件。
然后我一次又一次地尝试这样做。但几乎它是坏的。现在我确定这是一个错误。从那时起,我做了很多测试。Java客户端,Android客户端和C客户端都会出现无法在Kaa中发送和接收事件的问题有时集群。数据库是 MongoDB 和 MariaDB。C Client Log , Java Client Log 和 kaa Server Log 在这里。希望这些信息对解决问题起到积极的作用。
我继续重现问题并分析。原因是客户端重新登录时,它的集群端点信息在其他节点没有更新。所以当客户端要发送事件时,它的集群端点信息还在之前,有无法发送地址。这个bug可能是集群下的事件相关代码造成的。希望Kaa关注这个问题,因为它影响到整个Kaa应用开发。
我有办法修复这个bug。首先我将描述kaa集群下发送信息的机制。希望我理解的信息是正确的。如果有3个kaa集群K1,K2,K3和客户端A。客户端首先在K1登录,然后集群K1,K2,K3有关于客户端A的集群端点信息。(K1有关于客户端A的本地集群端点信息,K2,K3有关于客户端A的远程集群端点信息)。然后停止并重新启动在 K2 中登录。K2 将向 K1、K3 发送消息以更新客户端 A 的集群端点信息,然后 K1、K3 将向 K2 报告所有集群端点信息,K2 将在本地更新客户端 A 的集群端点信息。该错误发生在 K1 和 K3 没有立即更新关于客户端 A 的集群端点信息,导致 K2 也没有更新关于客户端 A 的集群端点信息。
所以我的解决方案是当客户端 A 在 K2 和 K2 重新启动登录时向 K1 和 K2 发送消息,删除有关客户端 A 的旧集群端点信息并添加新的。或者遍历所有集群端点信息(本地信息和远程信息)并更新有关客户端AI的集群端点信息希望kaa团队能够验证解决方案并修复错误。
最新消息是在我创建的Kaa 集群中无法发送和接收的事件。