我见过的所有与缓存一致性相关的示例都是数据竞赛(两个核同时写入同一个内存位置)的代码示例。当谈到内存一致性时,硬件供应商已经决定不提供串行一致性保证,例如C++11已经采用SC for DRF内存模型,这基本上是说,如果您想要串行一致性,请确保您的程序没有数据竞争。为什么同样的方法不适用于缓存一致性?也就是说,一个无数据竞争的程序不需要透明的缓存一致性,缓存行在程序员/编译器插入同步屏障的地方是同步的。或者
我有一个web应用程序,当它在IIS 7 Windows 2008上运行时,它最终会耗尽内存。当我试图针对应用程序运行内存分析器以确定泄漏时,它在我的开发workstation...Windows Vista中是不可复制的。GC收集周期在服务器和工作站之间不一致,而且服务器的集合似乎没有回收其所有内存,最终将耗尽。服务器变得没有响应性,并抛出内存异常。
因此,我的主要要求不是获取1M+ TPS,而是尽可能快速地减少延迟并保持一致性,以服务于用户数据。DB将在3台裸金属服务器上运行,32-vcore 128 DB Ram 256 DB SSD每台连接10 10Gbit。数据不会超过Ram,因为大多数数据将每6个月存档(到另一个ElacticSearch服务器)。
而且,我也不介意接受这个挑战,做一些过度的工程&如果集群很难建立,但它应该需要很少或不需要维护数年。还是我应该选择内存中完整的Cassandra,它没有为完整的内