一个满足所有这些标准的分布式数据层缓存系统?

时间:2011-07-03 09:59:41

标签: java caching nosql distributed distributed-computing

我需要选择一个能满足这些条件的分布式数据层缓存系统。

必须

  1. 缓存应该在单独的进程中运行,并且可以通过TCP / UDP调用。我们不愿意在当前运行Web应用程序的同一JVM内存空间中运行缓存。
  2. 缓存应分布在多个缓存服务器上,以消除任何单点故障。
  3. 在大多数情况下,序列化应该是透明的,并且不应要求开发人员为每个要缓存的类实现方法或接口。
  4. 适用于所有类型缓存的单一API。开发人员不需要学习多个API来读/写不同的对象树。
  5. 最终一致。始终保持一致是一个昂贵的命题,需要n阶段提交到集群中的所有节点。我们不想要这么复杂的系统。
  6. 容错即优雅降级。如果整个缓存系统出现问题,那么应用程序仍然可以运行,但在这种情况下性能会受到影响。
  7. 基于LRU和FIFO等配置的自动缓存驱逐
  8. 开源和免费。拥有源代码肯定有助于我们对Solr和Active MQ的经验证明。我们愿意像Solr那样购买商业支持,但软件产品本身必须是免费的。
  9. 动态群集成员资格。添加或删除任何节点时,整个分布式缓存群集不得要求重新启动。
  10. 高可靠性。面对服务器和网络问题,缓存解决方案应该是可靠的,并且可以处理因服务器或网络故障,写比赛等引起的数据一致性问题。
  11. 高度表现。想象一下,缓存最终会比Oracle慢!
  12. 如果高速缓存服务器是基于Java的,则额外标记,因为这是开发团队最熟悉的。
  13. 缓存数据的高可用性。这意味着跨多个节点复制缓存数据,这样丢失单个节点并不意味着丢失该节点上的所有缓存数据。我们计划存储Java Http会话对象,以便我们也可以进行会话故障转移。
  14. 很高兴

    1. 基于Web的控制台,用于监控和管理所有缓存服务器节点,或至少是一个API,通过它我们可以创建警报和通知。

3 个答案:

答案 0 :(得分:0)

除了Web控制台之外,您应该能够使用大多数专业级别的缓存实现此目的。

我会从赤土陶器,ehcache或淡褐色开始。

以下是一些最佳缓存的列表

http://www.java-sources.net/open-source/cache-solutions

答案 1 :(得分:0)

如果这是针对Web解决方案,为什么不考虑在Web片段级别进行缓存,并使用Varnish - https://www.varnish-cache.org/ - 来处理缓存?

原因很简单,缓存很难,特别是对于重要数据。

答案 2 :(得分:0)

截至2014年1月1日,我会说以下两个看起来最有希望

  1. Hazel Cast Open Source Edition
  2. Project Voldermort