0

在设计数据存储期间,我们正在寻找一种对条目进行分区的方法。主要瓶颈是在对共享计数器进行分区时。可以说,我们有一张要提供的车票(典型的火车预订、IRCTC 等)。我们如何对数据存储进行分区,以便客户端看到它们之间的实时一致性(根据预订百分比,即当前值/x)。

每次读取的聚合成本太高,任何其他指针都会有用。

还假设写入操作具有并发性(因此不会将读取卸载到从属设备),并且对于最终的一致性很好。但是有没有办法可以最小化分片之间的不一致性差异。例如,100 张票的部分是像 25、25、25、25 一样跨 4 个分片完成。在任何给定时间点,数据库的视图都应该像 x% 一样满,以及如何最大限度地减少分片之间的不一致(如循环、散列等幼稚操作)。

4

1 回答 1

0

如果您的用例是这样的,您希望分配共享计数器以更好地处理读取操作的负载,您可以将共享计数器保留在其自己的实例中(根据@ItamarHaber 的建议)并建立从一个复制的 N 个从属实例主实例。然后可以在 N 个从属设备之间对针对该共享计数器的读取操作进行负载平衡。这里有一些关于通过配置文件操纵主从设置的讨论,还有关于使用SLAVEOF命令动态操作从属设置的文档。

这里需要注意的是,您必须对仅针对 master 的写操作(INCR,DECR等)没有问题,也许通过基于队列的实现。这种方法将允许分发读取操作,但我不知道有一种方法可以避免对公共资源进行序列化写入,除非您愿意允许最终的一致性。

于 2015-01-29T14:17:23.437 回答