连贯性拓扑建议

Aud*_*dun 5 topology oracle-coherence

要缓存的数据:

  • 100 Gb数据
  • 大小为500-5000字节的对象
  • 每分钟平均更新/插入1000个对象(峰值5000)

需要建议生产和测试中的Coherence拓扑(与备份一起分发)

  • 服务器数量
  • 每台服务器的节点
  • 每个节点的堆大小

问题

  • 与缓存数据使用的内存相比,每个节点需要多少可用内存(假设无法使用100%)
  • 每个缓存元素产生1-2个额外索引会产生多少开销?

我们不知道将完成多少次读操作,该解决方案将被低响应时间至关重要的客户端(超过数据一致性)使用,并取决于每个用例.通过以固定频率轮询并填充缓存,将从DB更新缓存(因为缓存是数据主服务器,而不是使用缓存的系统).

Dav*_*d G 7

为Jhere for Coherence调整大小的经验法则是数据是假设1个备份的堆的1/3:缓存数据的1/3,备份的1/3,索引和开销的1/3.

调整大小的最大困难是没有很好的方法来估计索引大小.您必须尝试使用​​实际数据并进行衡量.

JDK 1.6 JVM的经验法则是从4GB堆开始,因此您需要75个缓存服务器节点.有些人成功拥有更大的堆(16GB),所以值得尝试.对于大堆(例如,16GB),您不需要1/3的开销,并且可以容纳超过1/3的数据.随着堆大于16GB,垃圾收集器调整变得至关重要.

为获得最佳性能,每个节点应该有1个核心.

服务器计算机的数量取决于可管理性,容量(核心和内存)和故障的实际限制.例如,即使您有一台可以处理32个节点的服务器,当机器出现故障时您的集群会发生什么?群集将是机器安全的(备份不在同一台机器上),但是如果要将大量数据移动到新备份,恢复将非常缓慢.另一方面,75台机器很难管理.

我已经看到Coherence对于1K对象放置具有250微秒(不是毫秒)的延迟,包括网络跳和备份.因此,您正在寻找的插入和更新数量应该是可以实现的.使用多个线程插入/更新进行测试,并确保您的测试客户端不是瓶颈.