微服务:数据库和微服务实例

nob*_*tta 9 instances horizontal-scaling microservices

假设我们有微服务A和B.B有自己的数据库.但是B必须水平缩放,因此我们最终有3个B实例.数据库会发生什么?它是否相应地扩展,是否为3 B实例保持相同(集中)数据库,它是否成为分布式数据库,会发生什么?

小智 7

答案取决于应该从 3 个 B 实例共享哪种数据。一些场合:

  1. B只是读数据,没有写任何东西,DB可以使用复制方法,三个B实例只是从不同的DB实例读取数据,并且DB被复制。

  2. B实例可以在不中断其他B实例的情况下读/写数据,即每个B实例都可以有指定的数据,并且实例之间没有数据共享,数据库变成了三个模式相同但数据完全不同的数据库;

  3. B 实例应该共享大部分数据,每个实例都可以偶尔将数据写回 DB。所以 B 实例应该使用一个 DB 和一些 DB 锁,以避免实例之间发生冲突。

在其他一些不同的情况下,会有很多其他的方法来解决这个问题,比如使用redis这样的内存DB,B实例使用rabbitMQ这样的队列服务。