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

14
假设我们有一个微服务 A 和一个 B。B 有它自己的数据库。然而,B 需要水平扩展,因此我们最终会有 3 个 B 实例。数据库会发生什么变化?它会相应地进行扩展吗?它是否保持为 3 个 B 实例的集中式数据库?它是否成为分布式数据库?具体情况如下:

1
3个B的实例仍然是1个逻辑服务。因此,您只需要一个数据库。 - tom redfern
@TomRedfern 感谢你的回答 ;) 你是否曾经遇到过需要扩展数据库的情况?如果是,你是如何处理的? - nobitta
可能是 https://dev59.com/gVwX5IYBdhLWcg3wwx5S 的重复问题。 - KGhatak
3个回答

8
答案基于需要从3个B实例共享哪些数据。以下是一些情况:
  1. 如果B只是读取数据而没有写入任何内容,则数据库可以使用复制方法,三个B实例只需从不同的数据库实例读取数据,并且数据库已被复制。

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

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

在其他一些不同的情况下,还有许多其他方法来解决问题,例如对于B实例使用内存数据库(如Redis),队列服务(如RabbitMQ)等。


4

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


2

抱歉,但是在这篇文章中您从哪里得到确切的信息?我没有看到任何关于在扩展微服务时涉及数据库的具体信息。 - Kristoff

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接