如果使用相同的数据库类型,微服务是否应该有自己的数据库服务器"instance"?



我认为微服务应该总是有自己的数据库,但将该数据库放在一个单独的服务器实例中,就像在Kubernetes中的几个SQL server实例中一样,有意义吗?或者微服务应该共享一个实例,但在实例中有单独的数据库?

通常,隔离数据库的建议与该服务的自主权有关,即能够拥有适用于该服务和类似服务的模式。因此,共享DBMS实例(例如,同一SQL Server实例(是完全可以的:它与Kubernetes集群中在同一VM/主机上运行的多个服务的实例大致属于同一类别。

也就是说,共享DBMS实例,就像任何其他形式的共享基础设施一样,确实意味着故障之间存在一定的相关性,因此当您选择与哪些服务共享DBMS时,您可能需要考虑到这一点(例如,如果服务B会因为服务a停机而看到负载增加,那么它们共享太多基础设施可能不是一个好主意(。

还有一种观点认为,当两个服务的数据库恰好位于同一个DBMS中时,这一事实增加了最终有人利用这一事实获得短期利益的机会,但这实际上取决于你对维护服务的团队的信任程度。

最新更新