水平缩放的微服务应该共享数据库的实例吗?

鉴于拥有关系数据库并需要横向扩展的微服务,我看到了两种configuration数据库服务器的方法:

  • 为每个服务实例提供自己的具有耦合stream程生命周期的DB服务器实例

要么

  • 让这些实例连接到一个共享的(通过相同服务的相同实例)独立的数据库服务器或集群

通过事件驱动架构和前一种方法,微服务的每个实例都需要处理每个事件并采取适当的操作来改变自己的孤立状态。 这似乎效率低下。

采用后一种方法,只有一个实例需要处理该事件,以达到相同的效果,而是作为共享状态的变化。 我们必须确保每个事件只由给定的微服务的一个实例来处理(这是微不足道的?)以避免冲突。

在这里,首选方法是否有共识? 你的经验教训你什么教训?