【问题标题】:Architecture question for implementation of a cache server实现缓存服务器的架构问题
【发布时间】:2010-12-24 20:50:12
【问题描述】:

这是一个架构问题。 我有这样的想法,即拥有一个具有巨大内存的服务器,用作大对象缓存持有者。客户端将“操作”发送到此服务器(例如属性 age

猜猜它做的最好的事情是 Oracle Coherence,但我想知道是否有人有其他开源解决方案或想法。

一个简单的解决方案是将 EhCache 与 Hibernate 一起使用,但我不知道我将使用什么协议将其转换为服务器(我看到在“服务器”上将操作作为调用方法发送,并且方法返回列表匹配查询的人员)。也许可以使用简单的 RMI。我还不相信,我想要一个更成熟的解决方案,一个框架,还有故障转移,自动发现和地图减少会很好。我想我可以将 GridGain 包裹在我的 EhCache 解决方案之上并解决这个问题?这会不会有点过头了(我可能只使用这个数据网格服务器的一个实例)。

其他选择是兵马俑。问题是我对 Terracotta 了解不多,只知道您可以在实例之间共享数据。如果我将一个进程中的元素添加到分布式缓存中,并且在另一个进程中是否存在缓存的本地副本,并且仅复制差异?这对于每个进程都会查询本地缓存这一事实非常有用,而且速度非常快,但这也意味着客户端进程会使用大量内存。

那么有人有什么想法吗?

谢谢。

【问题讨论】:

    标签: caching grid ehcache terracotta


    【解决方案1】:

    作为简单 EhCache 的简单解决方案,我想我可以使用 Hazelcast 来实现集群感知并调用“Actions” - Hazelcast

    MapReduce 作为解决方案再次证明是有趣的。这很有趣,因为他们说他们提供 MapReduce 并跟踪数据的位置,这应该非常快。如果我们没有超过两台服务器,我不确定是否可以。

    【讨论】:

      【解决方案2】:

      为什么需要缓存?您在问题的第一段中描述的内容听起来很像一个关系数据库,其表完全存储在内存中。您是否有任何可扩展性要求,可能需要将数据分布在集群中的多台服务器上?

      【讨论】:

        【解决方案3】:

        我相信Terrastore 是为了解决这个问题而构建的,但是对 Terrastore 的访问是在进程之外,而不是在进程中(你没有具体说明你需要什么样的访问权限)。

        Terrastore 是一个基于 Terracotta 的 OSS 项目。

        【讨论】:

          【解决方案4】:

          您也可以查看 Redis。它有很好的查询语言。

          【讨论】:

            猜你喜欢
            • 2018-09-29
            • 1970-01-01
            • 2010-12-28
            • 1970-01-01
            • 2011-01-15
            • 1970-01-01
            • 2015-01-11
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多