各位用容器化自部署服务时,会给每个系统单独配数据库,还是尽量共用?

242 天前
 IvanLi127

我在 home-lab self-hosted 服务时,本来是共用 PostgreSQL 和 Redis 的,但是维护起来有点繁琐,很多服务不是有数据库备份和 docker-compose.yml 就能完整恢复的,现在都是给每个系统单独跑数据库实例,需要恢复就把对应的 docker-compose.yml + volumes 恢复一次。

所以现在像 s3 之类的服务我现在也是单独跑,当然,能存数据库或文件系统我就不额外引入服务,要是能存 Sqlite 这种内嵌数据库就不单独起。不知道各位用啥方案,能兼顾性能开销和维护的便利性。

最后附图一张,看起来跑一堆服务自用,日常性能开销也不大:

2106 次点击
所在节点    Docker
12 条回复
iseki
242 天前
这个取决于你的规模吧,重点是如果你实践微服务模式,那数据库从逻辑上一定要分开。部署在不在一起就看规模吧。
lo0pback
242 天前
请问这个是什么软件,
YaD2x
242 天前
我就一个数据库,没有容器化。所有容器化的服务共用这个库。一个服务对应一个数据库,对我 4 G 的内存太奢侈。不如 all in 一个库。前提是自己的服务,没啥特别重要的东西。
d460686680
242 天前
@lo0pback dozzle
chloerei
242 天前
共用省资源,独立好维护。
zzeskl
242 天前
单独买数据库云服务
IvanLi127
242 天前
@lo0pback Dozzle ,用来在线看 Docker 容器的日志。
wccc
242 天前
你不如买一下 ali 的 rds 最低配也就 99 一年
coolcoffee
242 天前
我觉得数据库实例共用的好一些,除非有特别的数据库版本指定要求。担心稳定性那就数据库做 3 实例集群或者是 redis 的 3 主 3 从集群。

all in one 是不存在故障恢复的,无论 cpu 、内存、硬盘、主板、电源哪个环节出问题都是 all in boom 。
IvanLi127
242 天前
@coolcoffee 对欸,这么一说我想起来了,之前我就是数据库大版本我更新,然后有些服务跑不了,索性就起了两个版本分着用。后面觉得一不做,二不休,直接每个服务单独开实例了,省得研究服务到底支持什么版本的数据库。
KousukeSakurako
242 天前
忘记在哪看到的了说是每个服务建议单开一个数据库容器,然而我还是多个服务共用一个 PostgreSQL ,备份起来比较方便
pendulum
242 天前
应该独立

ref:《为什么每个微服务要有自己独立的数据库?》 https://www.maguangguang.xyz/why-mircroservice-need-independent-database

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1026456

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX