14

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

4

3 回答 3

7

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

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

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

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

在其他一些不同的情况下,将有许多其他方法来解决这个问题,例如使用 Redis 之类的内存 DB,B 实例的 rabbitMQ 之类的队列服务。

于 2017-05-03T06:29:09.757 回答
4

当您使用数据分区时,可以通过多个服务实例使用一个数据库。

于 2016-11-29T19:23:06.277 回答
2

正如 Chris Richardson 在每个服务的模式数据库中所解释的那样,

同一个服务的实例应该共享同一个数据库

于 2017-09-19T14:12:33.163 回答