2017-10-11 69 views
0

我有一个建筑问题。多个独立的mariadb用法:多个容器或一个?隔离与效率?

假设我们有一个有多个子系统的系统:AB等等。这些子系统中的每一个都需要保存他们的数据,他们都使用MariaDB。子系统A可能需要database(如create database ...),调用a_db;而子系统B可能需要一个名为b_db的数据库。此外,还有跨AB

没有数据共享在微服务和泊坞窗之前单片世界,是很常见的建立一个中央MariaDB实例,并要求每个子系统使用它,并只使用自己的database而在共享实例(也就是说,A使用a_dbB使用b_db,等等)

随着泊坞窗,我认为,我们还可以有多个MariaDB的容器运行,它们分别对应自己的体积存储(例如分别为/data/mdb_a/data/mdb_b)。

一个明显的优势是AB之间的完全隔离。不用担心A可能会与B的数据意外混淆。这两个子系统可以独立选择关闭/重启他们自己的MariaDB容器,甚至升级他们的MariaDB二进制文件。

另一方面,我的一些同事认为运行多个MariaDB容器效率不高,这种方法会浪费资源。

他们的良好经验测量和文章是讨论两种方法之间的权衡?

+0

正如你所说,有折衷。 “隔离”比“效率”更重要。您还不知道应用程序是否会接近使用服务器的功率。 –

+1

我曾与一位同事进行过这场辩论,我们想出了一个衡量什么时候需要包含数据库的指标,而且很简单,我们衡量每个应用程序的总数据库问题数量以及这些崩溃数量影响其他应用程序的次数。我们得到的百分比,如果它超过30%,我们会隔离有问题的应用程序,这会增加其他系统的稳定性。我会试着想出一个解释我们最终解决方案的答案。我们最终将所有内容集中到了一起,但我们不得不以特殊的方式处理数据库容器。 –

回答

1

容器化世界中的持久性存储仍处于起步阶段,并且在运行多个数据库副本(在本例中为mariadb)时,在高流量环境中可能会出现问题。

运行多个mariadb副本并使用共享持久性数据存储(例如NFS)(无论您使用的是多少个数据库)都可能导致一些损坏问题。

我自己并没有经历过这些事情,但在进行任何生产之前,您应该进一步研究容器中运行的数据库。网上有很多关于此的文章。

很多人仍然在虚拟机或裸机上运行他们的数据库,只在容器中运行数据库仅用于本地开发。

相关问题