我想维护一个分布在 N 个负载平衡服务器之间的对象列表:每当客户端更改一个服务器上的列表时,我希望将这些更改迁移到其他服务器。所以,我想这是主-主复制的情况。 处理这个问题最简单的方法是什么?一个简化的事实是,对列表中对象的每个更改都附加了一个相关的递增版本号。因此,如果一个项目在两个不同的服务器上发生更改,并且这两个增量到达第三个服务器,则可以解决冲突。
编辑:澄清:我非常熟悉 Memcached 和 Redis 等分布式键值存储。这不是这里的问题;我感兴趣的是一种解决共享列表中冲突的机制:如果服务器 A 更改了列表中的项目,而服务器 B 删除了该项目,例如,如何以编程方式解决冲突。
最佳答案
我建议使用 memcached。它是一个分布式服务器缓存系统,似乎非常适合您的需求。查看此链接:
Which .NET Memcached client do you use, EnyimMemcached vs. BeITMemcached?
如果传递整个列表不适合你(我不知道 memcached 是否足够聪明来区分你的列表)那么我建议看一下旧的 DataSet 对象,因为它的差异克应该很适合如果您的数据集很大,则只传递增量。
关于c# - 分布式列表中的冲突解决,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8632409/