假设我有一个从Redis和Cassandra更新或读取数据的微服务。现在假设我向上扩展,有3个完全相同的微服务实例。我是否需要分别为Redis和Cassandra创建3个实例,以便每个微服务实例都有自己的Redis和Cassandra实例?或者,因为Redis和Cassandra都是基于集群的分布式数据库,所以我不需要这些数据库的3个实例,而是在微服务的3个实例之间共享同一个集群?
如果微服务也在使用MySQL,我需要3个MySQL实例吗?
发布于 2020-10-13 21:49:43
您可以使用微服务架构,将服务扩展到3个实例,但使用单个数据库实例(redis/mysql/....),也可以将多个数据库集群连接在一起(多个redis/mysql实例)。
其想法是,您不限制单个副本/实例与数据库的单个副本/实例对话,这不是扩展您的体系结构的原因,即:您不将数据库的实例分配给正在运行的服务的实例。它是这样工作的
服务负载均衡器(将流量路由到单个实例)->实例集群--> DB负载均衡器-->将流量路由到DB集群中的主节点(或者使用主从或主主或一致哈希以外的任何设置)。
TL;DR:不要为每个服务副本分配一个数据库副本,以后您可能需要将您的服务扩展到10个副本,但只有3个节点的数据库集群。
https://stackoverflow.com/questions/64334999
复制相似问题