【问题标题】:How to scale microservice if not sharing database如果不共享数据库,如何扩展微服务
【发布时间】:2019-10-30 03:01:03
【问题描述】:

https://dzone.com/articles/breaking-the-monolithic-database-in-your-microserv

当我想扩展一个服务(订单服务)时,如果订单的每个实例都有自己的数据库,那么当一些订单服务关闭时,我们将有不完整的数据。

或者那些相同的服务在扩展时使用一个共享数据库?那就是说数据库必须有冗余服务器?

【问题讨论】:

标签: microservices


【解决方案1】:

那篇文章只说订单服务不应该与其他服务共享数据库。

如果您想将订单服务(水平)扩展到多个实例,这些实例仍然可以共享一个后备数据库(如果负载上升,您需要垂直扩展该数据库)。这并没有违反服务之间不共享数据库的原则(因为一切仍然保留在订单服务内部)。

或者您也可以对数据库进行分区/分片以水平扩展整个事物。

无论哪种方式,您的数据库都需要可供整个服务使用,因此如果您水平扩展它(即您有多个节点),您将需要冗余,因为实例故障的风险更高N 个实例比 1 个实例(有利的一面是,在分片设置中,如果您丢失了 N 个分片中的 1 个,那么另一个 N-1 可能仍然可用,以便您可以继续为部分客户群提供服务-- 而单节点垂直扩展的数据库在离线时会关闭所有内容)。

【讨论】:

    猜你喜欢
    • 2016-12-25
    • 2018-05-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-07
    • 2019-01-31
    • 2015-06-10
    • 2020-03-18
    • 1970-01-01
    相关资源
    最近更新 更多