【问题标题】:Microservices Replication: What about the Database?微服务复制:数据库呢?
【发布时间】:2022-01-08 23:52:28
【问题描述】:

假设您正在使用 ServiceFabricKubernetes,并且您正在托管事务数据仓库微服务(也许是一个不好的例子,但假设它只是一个简单的 CQRS 架构,由发送者、接收者、日期和支付金额的 ID 组成,写入和读取到 DB)。

为了论证,如果我们说这个微服务需要在不同的地理位置之间复制,以确保在一个数据库出现故障时数据可以恢复。

现在,我正在考虑的天真的方法是在接收到事务时触发一个事件,并且编排器微服务将在特定时间范围内接收事件处理确认。 但问题仍然是数据库呢?当我们扩展微服务并建立新的微服务实例时会发生什么? 他们将写入同一个数据库,不是吗?

一种解决方案可以是把数据库放在docker里面,让每个replica拥有,这样是不是一个好办法?

请分享您的想法和最佳实践。

【问题讨论】:

    标签: kubernetes microservices replication azure-service-fabric data-replicator


    【解决方案1】:

    当我们扩展微服务并建立新的微服务实例时会发生什么?他们会写入同一个数据库吗?

    是的,您的服务实例都共享同一个逻辑数据库。为了实现高可用性,您通常会运行分布式数据库集群,但它会显示为您的服务的单个数据库系统。

    一种解决方案可以是把数据库放在docker里面,让每个replica拥有,这样是不是一个好办法?

    不,您通常希望您的所有服务实例看到相同的一致数据。例如。发送到服务的两个不同实例的读取请求应使用相同的数据进行响应。

    如果数据库成为您的瓶颈,那么您可以通过实施缓存或分片数据来缓解这种情况,或者提供来自特定读取实例的读取请求。

    【讨论】:

      猜你喜欢
      • 2018-10-22
      • 1970-01-01
      • 2015-09-14
      • 2019-08-02
      • 2021-01-01
      • 1970-01-01
      • 2019-12-11
      • 2017-04-22
      • 2017-08-31
      相关资源
      最近更新 更多