【问题标题】: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 个节点。