我有一个设计问题。我有一个订阅实时系统来显示数据的应用程序。基本上发生的事情是客户端连接到服务器,下载当前时间的数据快照,并订阅实时更新,这些更新会立即显示在 UI 上。
我们遇到的一个问题是我们可以打开多个实时报告,这意味着我们有多个连接和不必要的数据重复。所以我们想建立一个中央数据存储库来保存所有数据并将其提供给报告,这样我们只使用 1 个套接字连接和一组数据通过网络。
我遇到的问题是这个。当报表订阅我的数据存储库时,它会在当前时间检索快照,然后接收实时更新。这意味着我的存储库正在使用来自服务器的实时更新来更新它的内部缓存,并将这些更新发送到订阅的报告。
当另一个报表连接到存储库时,它还需要下载当前数据并订阅更新。但是,如果在下载快照时有更新,报告将遗漏更新。在下载快照时我也无法锁定缓存,因为这会导致报告 1 在报告 2 获取其快照时停止更新。
我如何确保报告 1 继续获得更新,而报告 2 下载不受干扰的快照,然后开始接收它在此期间错过的所有更新以及未来的更新?
对不起,如果这不清楚。我并不总是擅长描述我的问题 :) 传入的数据本质上是表格中的行,然后我将其汇总成一棵树。它们可以通过“行”中的关键字段来识别,我的缓存将存储每个“行”的最新副本
提前致谢!