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