mysql - Redis和Cassandra等分布式数据库如何在微服务架构中工作?

标签 mysql redis cassandra microservices

假设我有一个微服务,可从Redis和Cassandra更新或读取数据。现在,假设我向上扩展并拥有3个完全相同的微服务实例。我是否需要为Redis和Cassandra分别设置3个实例,以便每个微服务实例都具有自己的Redis和Cassandra实例?还是由于Redis和Cassandra都是基于集群的分布式数据库,我将不需要这些数据库的3个实例,而是在3个微服务实例之间共享相同的集群?
如果微服务也使用MySQL,那我需要3个MySQL实例吗?

最佳答案

您可以具有一个微服务架构,该服务的服务最多可扩展到3个实例,但可以使用一个数据库实例(redis / mysql / ....),也可以将一个数据库集群连接在一起(一个以上实例) redis / mysql)。
这个想法是,您不会将单个副本/实例限制为与数据库的单个副本/实例通信,这不是扩展体系结构的原因,即:您不会将数据库实例分配给实例正在运行的服务。它是这样工作的
服务负载平衡器(将流量路由到单个实例)--->实例集群-> DB负载平衡器->将流量路由到数据库群集中的主节点(或您使用的除主从服务器或主服务器以外的任何设置) -master或一致的哈希)。
TL; DR:不要为每个服务副本分配一个数据库副本,稍后您可能需要将服务扩展到10个副本,但是数据库集群只有3个节点。

关于mysql - Redis和Cassandra等分布式数据库如何在微服务架构中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64334999/

相关文章:

ruby-on-rails - Rails 5.2 中的 Action Cable 抛出 NoMethodError

Cassandra大集群配置客户端连接

Mysql 启动失败,出现操作系统错误 13

mysql - 子查询和Join哪个是最优解?

php - 连接多个用户条目并提交到单个 MySQL 数据库条目

mysql - 通过将大型键值存储从 MySQL 迁移到 NoSQL 数据库,我能否期望性能得到显着提升?

java - cassandra 多次插入的性能和速度?

php - 无法使用嵌套的 while 循环执行准备好的语句

redis - redis scan 是否会扫描开始扫描操作后插入的数据?

我可以将 MGET 与 hiredis 一起使用吗?