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

时间:2016-11-29 02:42:17

标签: microservices instances horizontal-scaling

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

3 个答案:

答案 0 :(得分:3)

使用数据分区时,使用mutliple服务实例使用一个数据库是可以的。

答案 1 :(得分:3)

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

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

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

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

  4. 在其他一些不同的情况下,还有很多其他方法可以解决这个问题,例如像redis一样使用内存数据库,像RabbitMQ这样的队列服务用于B实例。

答案 2 :(得分:0)

正如Chris Richardson在pattern database per service中解释的那样,

  

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