【问题标题】:Redis, Mongo or Hazelcast?Redis、Mongo 还是 Hazelcast?
【发布时间】:2012-02-05 23:29:45
【问题描述】:

我们有一个 JAVA 网络应用程序,它使用 postgres(带有从属的单个数据库)来存储所有重要数据。

我们现在正在从单一服务器设置转移到多台服务器,因此我需要进行一些更改以满足新要求。

1) 用于负载平衡和分区容错的非粘性会话 ID。

2) 可从所有 Web 服务器访问的频繁读取数据的缓存(内存/Memcache 替代方案)。

3) 队列(电子邮件、短信、要在集群上执行的任务)。通常,所有这些都必须通过 xml api 或屏幕抓取来执行。
避免重复处理任务很重要,但有时可能会发生:-)

4) API 请求和响应的持久存储(大量 XML、大量行但少量列)。 (可能通过删除旧的请求和响应来归档以保持数据集较小)。

5) 登录到一个共同的地方。该表将继续增长。此外,我需要一个工具来访问生产日志而不停止它们。应该可以根据时间和/或搜索字符串进行某种搜索。

我想要一个单一的解决方案来满足所有这些要求,并将 redis、mongo 和 hazelcast(按照我的个人喜好)作为可能的替代方案。

其他重要注意事项: 1) 减少对我们代码的侵入。 2) 简单的备份/复制策略。至少是主从。 3) 可管理性、社区性和久经考验(在生产中运行)。

哪个能够执行所有或大部分这些功能和要求?

编辑 - 我做了什么

  1. Redis 支持的 tomact 会话管理器。
  2. Redis 用于缓存
  3. 由 Redis 支持的 Jesque(Respue 的 java 版本)。
  4. Postgres
  5. 由 Log4j2 支持的 SLF4J

【问题讨论】:

    标签: java mongodb redis hazelcast


    【解决方案1】:

    我可以从 MongoDB 的角度解决其中的一些问题。

    我注意到的第一件事是您正在从单服务器设置转移到多服务器设置。 MongoDB 使设置复制和分片变得非常容易。反过来,复制和分片以及 Mongo 的一些其他功能可以帮助您实现很多您打算做的事情。

    首先,看一下文档以了解一下:

    Replica SetsSharding

    根据您的要求提出一些其他想法:

    • 与使用不同数据存储进行扩展的其他方法相比 mongo 使用商品硬件进行水平扩展的方法是 设置、扩展和维护非常简单。这意味着您可以花费 将更多时间用于构建您的应用,而不是成为一名 DBA。
    • 如果您使用 mongo,您也可以跳过缓存层。 MongoDB 使用内存映射文件,这意味着如果您的工作集 可以保存在物理内存中你基本上有一个内存缓存 已经。
    • MongoDB 非常适合记录日志。用户通常不需要安全 为此类应用程序编写,因此如果您坚持使用默认的即发即弃模式进行编写,性能将会非常出色。
    • 这是否意味着它会更少地侵入您的代码尚有争议,但是,与典型的对象关系映射器所做的相比,Mongo 对您的数据的侵入性要小得多。它能够以自然可用的状态存储数据,即对象!

    希望有帮助,干杯。

    【讨论】:

    • 目前我对分布式数据库不感兴趣。当我们需要扩展时,Mongo 似乎更像是未来的 postgres 竞争对手。
    【解决方案2】:

    我会说使用 sql。由于您想要关系数据库多年来完善的一切。据我所知,您想要的数据解决方案不是用于“特定”目的(这就是 NOSQL 试图涵盖的内容),而是用于“一体化”场景。这就是 SQL 的用途。

    如果您想从您命名的这 3 个中进行选择,Mongodb 将是最接近的数据存储,但同样:使用 sql

    【讨论】:

      【解决方案3】:

      你说得对,Redis 将解决前 3 个要求 - 非粘性会话、缓存和队列。

      至于集中式日志记录,它不是一个微不足道的用例,但可以在 Redis 上完成,这里有一个 blog post 解释了如何。请注意,NoSQL 大师 Alex Popescu 在this post 中对这种方法提出了一些保留意见。

      至于持久性,这里是 persistence options 的 Redis.io 的概述 - 有一些问题但可行。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-05-10
        • 2011-05-05
        • 1970-01-01
        • 2016-01-12
        • 1970-01-01
        • 2011-06-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多