我们正在用apacheignite集群实现低延迟分布式计算系统。所有数据都存储在内存中。现在我们支持每秒600个分布式计算请求,延迟约50-200毫秒。计算非常复杂,涉及不同的缓存。我们也支持更新我们的数据。
当数据在读取的同时被更新时,我们面临可伸缩性的问题。我们的数据不是原子的(涉及多个缓存)。实际上,所有的数据都被划分成段,我们通过集群来分发这些段。在进行搜索计算时,每个节点扫描其所有局部段并找到结果。
当我们进行单个更新时,我们会影响存储数据的单个段。
但问题是,在单个节点上进行单段更新时,整个搜索计算被阻塞或重复,以支持整个结果的一致性。
我知道hadoop限制了这种情况,不允许在hdfs中更新,只保存新版本。但这不是我们的情况,因为收集不同版本的数据需要大量内存并导致重复。
是否有任何体系结构技术支持此类更新的可伸缩性?
我们已经尝试用重复来实现乐观的传输,但是计算经常重复。read\u Committed level打破了一致性。可重复读取被阻塞。
1条答案
按热度按时间sd2nnvve1#
我认为您可以获取一个事务块(一个段?),通过删除重复项并将对同一个键的操作连接起来来优化它,从而生成一个操作,然后以事务方式运行其余的操作。