java—我们如何实现支持低延迟和一致性的大规模并发内存更新的可伸缩计算网格

omvjsjqw  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(407)

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

sd2nnvve

sd2nnvve1#

我认为您可以获取一个事务块(一个段?),通过删除重复项并将对同一个键的操作连接起来来优化它,从而生成一个操作,然后以事务方式运行其余的操作。

相关问题