【问题标题】:How distributed databases such as Redis and Cassandra work in Microservices architecture?Redis、Cassandra等分布式数据库在微服务架构中是如何工作的?
【发布时间】:2021-01-27 18:41:43
【问题描述】:

假设我有一个从 Redis 和 Cassandra 更新或读取数据的微服务。现在假设我扩大规模并拥有 3 个完全相同的微服务实例。我是否需要为 Redis 和 Cassandra 分别设置 3 个实例,以便每个微服务实例都有自己的 Redis 和 Cassandra 实例?或者由于 Redis 和 Cassandra 都是基于集群的分布式数据库,我不需要这些数据库的 3 个实例,而是在 3 个微服务实例之间共享同一个集群?

如果微服务也在使用 MySQL,我需要 3 个 MySQL 实例吗?

【问题讨论】:

  • 两种方式都可以,这取决于您的业务需求。

标签: mysql redis cassandra microservices


【解决方案1】:

您可以拥有一个服务扩展到 3 个实例的微服务架构,但使用单个数据库实例 (redis/mysql/....),或者您可以将一个数据库集群连接在一起(更多超过 1 个 redis/mysql 实例)。

这个想法是您不限制单个副本/实例与数据库的单个副本/实例进行通信,这不是扩展架构的原因,即:您不分配数据库实例到正在运行的服务的实例。它是这样工作的

服务负载均衡器(将流量路由到单个实例)---> 实例集群 --> 数据库负载均衡器 --> 将流量路由到数据库集群中的主节点(或您使用的任何设置,而不是主节点- slave 或 master-master 或一致的哈希)。

TL;DR:不要为每个服务副本分配一个数据库副本,稍后您可能需要将服务扩展到 10 个副本,但数据库集群只有 3 个节点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-08-13
    • 2019-04-14
    • 2020-09-12
    • 1970-01-01
    • 2019-03-03
    • 2019-01-29
    • 2019-02-01
    • 2020-07-05
    相关资源
    最近更新 更多