微服务和数据库

时间:2016-12-07 13:38:59

标签: database docker cloud microservices docker-swarm

在微服务架构中部署数据库的最佳做法是什么,更确切地说是在分布式环境中,例如docker swarm?微服务原则规定每个服务应该是无状态的,以实现扩展。由于数据库显然处于状态,它是否应该位于集群外的固定位置,在集群初始化之前进行部署和配置?

我很困惑,因为所有docker组合示例都包含服务定义中的数据库容器。但事情并非那么简单。通常,数据库在准备使用之前需要进行大量配置。此外,docker很难协调服务启动顺序。

如果将数据库与服务器一起部署到docker swarm是一个很好的做法,那么如何确保cricial数据的一致性和持久性呢?

1 个答案:

答案 0 :(得分:1)

这是一个很好的问题,我认为就最佳实践而言,很多人仍在思考。答案真的取决于您的需求。有几种方法可以破解这个坚果,但这些是我现在正在使用的两个:

  • 在具有复制功能的专用计算机上以典型方式运行数据库
  • 我目前正在尝试将数据库作为服务运行在Docker Swarm集群上,并使用GlusterFS在集群中保留数据
    • 我在群集中有三台标记为数据库计算机的计算机
    • 这些数据库机器都运行GlusterFS容器,提供GlusterFS功能
      • 启动数据库服务时,我将GlusterFS共享映射到容器中,并指定该服务只应在标记为数据库节点的计算机上运行。使用此设置,数据库服务启动的节点并不重要,如果计算机出现故障,数据库服务将自动迁移到标记为数据库节点的另一个节点。 GlusterFS数据复制可确保持久数据的完整性。

如前所述,我的理解是,仍然有很多实验正在进行这项和最佳实践。没有完全建立。这些最佳实践最终将取决于您的需求和风险承受能力。