2016-11-29 68 views
5

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

+1

3实例仍为1个逻辑服务。所以你只需要一个数据库。 –

+0

@TomRedfern感谢您的回答;) 您是否曾经遇到过需要扩展数据库的情况?如果是这样,怎么处理? – nobitta

+0

http://stackoverflow.com/questions/33399988可能的重复 – KGhatak

回答

3

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

0

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

  1. 在B只是读而不写什么数据,数据库可以使用重复方法论,三级乙等的实例就是从不同的数据库实例读取数据,DB被复制。

  2. B实例可以在不中断其他B实例的情况下读/写数据,这意味着每个B实例都可以拥有指定的数据,并且实例之间没有数据共享,数据库被更改为具有相同模式但完全不同数据的三个数据库;

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

在其他一些不同的情况,还会有很多其他的方法来解决这个问题,如使用内存数据库Redis的一样,排队服务一样的RabbitMQ对于B实例。