如果不共享数据库,如何扩展微服务

时间:2019-06-16 02:49:13

标签: microservices

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

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

或者这些相同的服务在向上扩展时正在使用一个共享数据库?那么这意味着数据库必须具有冗余服务器吗?

1 个答案:

答案 0 :(得分:1)

该文章仅说订购服务不应与其他服务共享数据库。

如果要将订单服务水平扩展到多个实例,则这些实例仍可以共享一个后备数据库(如果负载增加,则需要垂直扩展该数据库)。这不违反在服务之间不共享数据库的原则(因为所有内容仍保留在订购服务之内)。

或者您也可以对数据库进行分区/分片以横向扩展整个对象。

无论哪种方式,您的数据库都必须对整个服务可用,因此,如果您水平扩展数据库(即您有多个节点),则由于实例故障的风险较高,因此您将需要冗余N个实例比1个实例多(在分片设置中,从正面看,如果您丢失了N个分片之一,则其他N-1仍然可用,以便您可以继续为部分客户群提供服务-而一个垂直扩展的单节点数据库将在离线时关闭所有内容。