Rumah  >  Artikel  >  Operasi dan penyelenggaraan  >  数据库不适合docker及容器化的原因

数据库不适合docker及容器化的原因

王林
王林asal
2020-04-15 10:01:073056semak imbas

数据库不适合docker及容器化的原因

数据库不适合docker及容器化的几大原因:

1、数据不安全

即使你要把 Docker 数据放在主机来存储 ,它依然不能保证不丢数据。 Docker volumes 的设计围绕 Union FS 镜像层提供持久存储,但它仍然缺乏保证。

使用当前的存储驱动程序,Docker 仍然存在不可靠的风险。 如果容器崩溃并数据库未正确关闭,则可能会损坏数据。

2、运行数据库的环境需求

常看到 DBMS 容器和其他服务运行在同一主机上。 然而这些服务对硬件要求是非常不同的。

数据库(特别是关系型数据库)对 IO 的要求较高。 一般数据库引擎为了避免并发资源竞争而使用专用环境。如果将你的数据库放在容器中,那么将浪费你的项目的资源。 因为你需要为该实例配置大量额外的资源。 在公有云,当你需要 34G 内存时,你启动的实例却必须开 64G 内存。在实践中,这些资源并未完全使用。

怎么解决? 您可以分层设计,并使用固定资源来启动不同层次的多个实例。 水平伸缩总是比垂直伸缩更好。 

3、网络问题

要理解 Docker 网络,您必须对网络虚拟化有深入的了解。也必须准备应付好意外情况。你可能需要在没有支持或没有额外工具的情况下,进行 bug 修复。

4、状态

在 Docker 中打包无状态服务是很酷的,可以实现编排容器并解决单点故障问题。 但是数据库呢? 将数据库放在同一个环境中,它将会是有状态的,并使系统故障的范围更大。下次您的应用程序实例或应用程序崩溃,可能会影响数据库。

5、额外的隔离对数据库是不利的

其实我在第二点和第三点原因中提到了这一点。 但我把这个列为单独的原因,因为我想再次强调这一事实。 我们拥有的隔离级别越多,我们获得的资源开销就越多。 相比专用环境而言,容易水平伸缩可以使我们得到更多的好处。 然而在 Docker 中水平伸缩只能用于无状态计算服务,而不是数据库。

我们没有看到任何针对数据库的隔离功能,那为什么我们应该把它放在容器中?

推荐教程:docker教程

Atas ialah kandungan terperinci 数据库不适合docker及容器化的原因. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn