【问题标题】:Redis standalone server or with MySQL [closed]Redis 独立服务器或与 MySQL [关闭]
【发布时间】:2016-02-02 22:17:39
【问题描述】:

我正在尝试构建一个需要处理大量请求或读取请求的站点。没有来自用户的写信。我想使用 MySQL 作为我的后端服务器和 redis 作为我的缓存层。

数据大小为 60 GB。我有 8 个 EC2,它有 2core 和 6GB RAM。我的想法是使用redis存储尽可能多的数据。但是我想知道redis服务器和mysql服务器的正确数量应该是多少。由于整个站点的数据只有 60GB,如果我可以有 8 个 redis 服务器,可以容纳大约 40GB 的数据。所以不能只使用redis。

选项1:将数据平均分片到7台同时拥有MySQL和redis的服务器。每台服务器在 MySQL 中存储大约 10GB 数据,redis 存储 4-5GB 数据(实例只有 6GB RAM)。我将有一台服务器来进行负载平衡并指向存储该值的正确服务器。

选项 2:使用 MySQL 将我的数据分片到 2 台服务器,其他 5 台服务器是存储来自这 2 台服务器的数据的 redis 服务器。一台前端服务器做负载均衡指向正确的redis服务器。如果redis服务器没有找到任何东西,那么它会从MySQL服务器读取数据吗?

当我使用单个 MySQL 服务器时,延迟约为 100 毫秒。我想显着减少延迟,这就是我想出这些方法的原因。

我没有太多后端架构经验。感谢任何帮助或任何新想法。

【问题讨论】:

  • 这个网站是用于编程问题的。我们不是在这里为您推荐服务器基础架构。

标签: mysql redis server


【解决方案1】:

这样不行。

您在这两个选项中都缺少一些后端软件。 Redis 和 MySQL 是独立的数据存储。如果缓存未命中,Redis 将不会从 MySQL 获取数据。

您还需要评估您的工作集:将频繁访问的数据的百分比,因此必须从缓存中提供服务。

您需要一个负载平衡器。您还需要编写一个服务器软件,它首先尝试从 Redis 获取数据,如果未命中,则向 MySQL 执行查询,然后将结果提供给 Redis。它可能还必须维持一些缓存失效流量。

就个人而言,我根本不会对 MySQL 进行分片。管理数据库非常耗时 - 在您真正需要之前不要对其进行分片。由于您在 EC2 上,我只会使用 RDS 实例(这样可以保证数据的高可用性)。然后,我会使用弹性负载均衡器将流量分配到 n 个节点,每个节点都包含一个 Redis 实例,以及处理流量的后端软件。 Redis 中的数据将使用一致的哈希算法进行分片,以限制这些节点潜在故障的影响。

有很多方法可以实现您的要求 - 这只是一个示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-05-13
    • 2020-08-22
    • 1970-01-01
    • 2014-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-27
    相关资源
    最近更新 更多