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