【问题标题】:Infinispan vs memcached for high concurrency needInfinispan vs memcached 满足高并发需求
【发布时间】:2016-11-09 21:00:55
【问题描述】:

我的 Web 应用程序在内存缓存中维护以高频读取/写入的域实体。为了使应用程序集群化,我需要同步/外部化这个缓存。

考虑到以下应用程序事实,在 memcached 和 infinispan 中哪个是更好的选择-

  • 缓存将以每秒高频率读取/写入
  • 如果使用 infinispan,则需要近乎实时地跨节点复制数据
  • 如果复制速度较慢,高并发写入不应产生冲突问题。

我觉得 memcached 可以很好地解决这个问题,因为它是集中式的,不需要像 infinispan 那样的复制延迟。专家能否就此发表意见?

【问题讨论】:

  • 提到了很多比较here,这也可能有所帮助。

标签: caching memcached infinispan


【解决方案1】:

很遗憾,我不是 Memcached 专家,但让我告诉您更多有关一些基本概念的信息,以便您可以选择最适合您的用例的选项...

首先,集中式与分散式 - 如果您的系统中只有一个节点,它会更快(正如您所说,没有复制)。但是,如果节点关闭会发生什么?或者另一种情况——如果节点满了会发生什么(正如你所说,你每秒将执行大量读/写)?一种解决方案是使用主/从复制,其中写入异步传播到从节点。如果节点已关闭,此解决方案将节省您的时间,但如果节点已满(如果主节点已满,从节点将在几分钟后满),则不会有任何好处。

数据一致性 - 如果您的系统中有超过 1 个节点,您的数据可能会不同步。想象一下 2 个节点和连接到每个节点的客户端之间的异步复制。两个客户端在同一时刻执行对同一密钥的写入。这似乎不太可能,但相信我,高度并发的读写会发生。解决此问题的唯一方法是在大多数节点启动并运行(或所谓的共识)的情况下使用同步复制。

回到您的场景 - 如果损坏的节点对您来说不是问题(例如,您可以自动切换到其他数据源)并且您的数据不会增长 - 继续使用 1 节点解决方案或主/从复制。如果您的数据需要高度一致 - 请确保您正在执行同步复制(可能还有事务,但您需要参考用户手册以获得指导)。否则,我建议选择一个更通用的解决方案,它允许您添加/删除节点而无需关闭整个系统,并且可以选择同步/异步复制。

根据我的经验,人们过于关心数据一致性,而应该更关心可扩展性。最后一条建议 - 请在评估任何解决方案之前定义您的性能标准(例如,我的写入时间不超过 X,读取时间不超过 Y。还为您的标准定义置信水平(我需要 99.5%读数小于 X)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-26
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 1970-01-01
    • 2021-06-16
    • 2011-09-18
    相关资源
    最近更新 更多