我有一个通过websocket连接客户机的服务。我在kubernetes中运行了多个此服务的示例。一个用户可以同时有多个到不同副本的连接。服务对其侦听的所有主题使用不同的组id,因为所有副本都需要获取主题中的所有消息,以便每个副本都可以将数据发送给用户(如果用户与该副本有连接)。
现在我的问题是检查是否可以使用kafka来存储用户的在线/离线状态。当用户连接到任何1个复制副本时,可以将其标记为联机如果尚未联机当用户断开与复制副本的连接时,不应将其标记为脱机,除非他未连接到任何其他复制副本。
我是这么想的:
创建一个主题来存储来自服务示例的连接/断开连接事件。使用此主题可为kstream构建全局ktable,该表存储用户的联机脱机状态。密钥将用于标识用户。
所有示例都将收听此主题
所有示例都应该有权访问存储用户联机/脱机状态的globalktable
根据ktable值,它将决定是否向topic发送断开/连接事件
以下是问题:
我应该使用压缩主题来存储用户联机/脱机状态吗
或者我应该使用全局ktable来存储它
既然有频繁的更新globalktable不应该在这里使用?
如果我们使用ktable,那么应用程序的每个示例都必须根据连接/断开连接事件主题单独计算表?
暂无答案!
目前还没有任何答案,快来回答吧!