将数据库保存在容器中是一种反图案



我有一个有关使用容器的最佳实践的问题。在容器中拥有数据库是一个反图案吗?

我已经看过几次在容器中的DBS实现,我很想了解您的想法。从我的理解中,容器应轻巧有效地无状态。他们还应该用作牛而不是宠物(如在那样,很容易销毁,您不依靠一个容器来执行业务功能(。

从我对DBS的了解,它们通常不是牛,并且取决于其不重量的应用。它们也几乎固有地说。

很明显,我对DB托管在容器中的持怀疑态度,但我真的很想听听你们的想法。我对DBA工作不太熟悉,所以听到有更多经验的人(尤其是您实施它并且有经验,可以与您交谈(会很棒。

这是一个很好的问题,尽管它有点广泛。这完全取决于您确切地运行什么以及如何计划工作负载。

要记住容器的事情是,这里确实没有任何魔术。容器最终归结至内核水平(cGroup(限制在一个过程中施加的限制,并且编排层(例如Kubernetes或Cloudfoundry Diego(负责对何时杀死该容器以越过这些限制(例如,从记忆中(。p>通常,有许多高级因素需要牢记

  • 该项目的数据耐久性要求是什么
  • 工作负载是什么(例如,小时峰值,不可预测的负载等(
  • 您的正常运行时间SLA是什么,您的客户是否可以将数据层的新大师置于优雅
  • 最重要的是,容器化项目层试图实现的正确模式。

除此之外,您还必须查看编排环境的特征。如果您需要能够坚持磁盘内容,则需要确保选择能够填写此要求的容器编排。

您可能使用内存中引擎的碎片MongoDB群集类似于缓存层的内存引擎,该引擎比Memcache(例如能够查询/过滤缓存本身过滤(需要更多的功能。根据您项目的要求,丢失此"缓存"层并按需重建它可能完全可以。

在其他工作负载中。您可以在Kubernetes顶部运行类似EntrprisingB ARK之类的东西来提供聚类,高度可用的容器化后Ql。这带有其自身的挑战,但是它使您能够在微型服务体系结构中实现服务经纪模型,以部署和持续到每个微服务的数据层,以减轻单层数据层的方式,该数据层容易容易居住。这种类型的架构问题。

相关内容

最新更新