【发布时间】:2019-10-30 03:01:03
【问题描述】:
https://dzone.com/articles/breaking-the-monolithic-database-in-your-microserv
当我想扩展一个服务(订单服务)时,如果订单的每个实例都有自己的数据库,那么当一些订单服务关闭时,我们将有不完整的数据。
或者那些相同的服务在扩展时使用一个共享数据库?那就是说数据库必须有冗余服务器?
【问题讨论】:
标签: microservices
https://dzone.com/articles/breaking-the-monolithic-database-in-your-microserv
当我想扩展一个服务(订单服务)时,如果订单的每个实例都有自己的数据库,那么当一些订单服务关闭时,我们将有不完整的数据。
或者那些相同的服务在扩展时使用一个共享数据库?那就是说数据库必须有冗余服务器?
【问题讨论】:
标签: microservices
那篇文章只说订单服务不应该与其他服务共享数据库。
如果您想将订单服务(水平)扩展到多个实例,这些实例仍然可以共享一个后备数据库(如果负载上升,您需要垂直扩展该数据库)。这并没有违反服务之间不共享数据库的原则(因为一切仍然保留在订单服务内部)。
或者您也可以对数据库进行分区/分片以水平扩展整个事物。
无论哪种方式,您的数据库都需要可供整个服务使用,因此如果您水平扩展它(即您有多个节点),您将需要冗余,因为实例故障的风险更高N 个实例比 1 个实例(有利的一面是,在分片设置中,如果您丢失了 N 个分片中的 1 个,那么另一个 N-1 可能仍然可用,以便您可以继续为部分客户群提供服务-- 而单节点垂直扩展的数据库在离线时会关闭所有内容)。
【讨论】: