在设计数据存储的过程中,我们正在寻找一种对条目进行分区的方法。主要的瓶颈是对共享计数器进行分区。假设我们提供n张门票(典型的火车票预订,IRCTC e.t.c)。我们如何对数据存储进行分区,以使客户端看到它们之间的实时一致性(根据预订的百分比,即currentvalue/x)。
每次读取的聚合成本太高,任何其他指针都会很有用。
此外,还假定写操作是并发的(因此不会将读取加载到从设备),并且对于最终的一致性将是很好的。但是,有没有办法可以使碎片之间的不一致性差异最小化。例如,100张票的分割是这样的: 25,25,25,25跨4个分片。在任何给定的时间点,数据库的视图应该是x%满的,以及如何最小化分片之间的不一致性(简单的操作,如轮询、哈希等)。
发布于 2015-01-29 22:17:23
如果您的用例希望分发共享计数器以更好地处理读取操作的负载,则可以将共享计数器保留在其自己的实例中(根据@ItamarHaber的建议),并建立从主实例复制的N个从实例。然后,针对该共享计数器的读取操作可以在N个从设备之间进行负载平衡。这里有一些关于通过配置文件here操纵主从设置的讨论,还有关于使用SLAVEOF命令动态操作从设置的文档。
这里需要注意的是,您必须能够直接执行写操作(INCR、DECR等)。仅针对主服务器,可能通过基于队列的实现。这种方法将允许分布读操作,但我不知道有什么方法可以避免对公共资源的写操作进行序列化,除非您愿意考虑最终的一致性。
https://stackoverflow.com/questions/28210736
复制相似问题