【发布时间】:2021-08-19 15:38:01
【问题描述】:
假设我有几个不同的容器,每个容器都使用自己的数据库。在这种情况下,关于性能的最佳实践是什么?运行一个容器,比如 MySQL 服务器,其中包含所有数据库,还是每个数据库运行一个数据库服务器容器?
欢迎大家提出除表演以外的任何其他意见。
【问题讨论】:
-
性能规则 #1 - CPU / HDD 做的工作越少,结果越快。
假设我有几个不同的容器,每个容器都使用自己的数据库。在这种情况下,关于性能的最佳实践是什么?运行一个容器,比如 MySQL 服务器,其中包含所有数据库,还是每个数据库运行一个数据库服务器容器?
欢迎大家提出除表演以外的任何其他意见。
【问题讨论】:
由于 Docker 容器开销在这里并不显着且可以忽略不计,因此问题更多的是关于微服务范式中的架构。
性能确实是一个复杂的问题,没有一般的建议,但也许以下内容会对您有所帮助:
就个人而言,我怀疑在项目开始时应该尝试提前解决所有可能的性能问题(#MVP、#agile) 但是,请纠正我,但您似乎没有多少资源(一个主机?)并且希望提前节省这些资源。
好的,你现在最关心的是什么?
那么在同一主机上拥有两个并发 MySQL 实例可能不是那么好(但对于不同的设置来说不是问题)
对于一台主机,我建议开始使用一个数据库容器,但创建不同的模式。 它可能涉及标准容器的额外工作 (https://forums.docker.com/t/multiple-databases-in-official-mysql-container/8324)
我现在不会太在意,从一开始就从单独的数据库开始。 能够将您的服务与数据库横向分离是一个巨大的价值!我不想因为未来的性能问题而削弱这个设计决策。
【讨论】:
您希望使用单个数据库服务器,最好运行一个可以附加到的外壳以进行管理,与链接容器共享一个 Unix 套接字、一个端口或两者。这意味着您可以更轻松地将数据库容器作为服务进行管理、调整性能、监控使用情况、备份卷等。
当然,在某些非标准情况下,您可能希望拥有独立的服务器,例如运行具有隔离主机资源、用户、数据库的服务器,但我确信这不应该适用于开发人员环境。
【讨论】: