我在 home-lab self-hosted 服务时,本来是共用 PostgreSQL 和 Redis 的,但是维护起来有点繁琐,很多服务不是有数据库备份和 docker-compose.yml 就能完整恢复的,现在都是给每个系统单独跑数据库实例,需要恢复就把对应的 docker-compose.yml + volumes 恢复一次。
所以现在像 s3 之类的服务我现在也是单独跑,当然,能存数据库或文件系统我就不额外引入服务,要是能存 Sqlite 这种内嵌数据库就不单独起。不知道各位用啥方案,能兼顾性能开销和维护的便利性。
最后附图一张,看起来跑一堆服务自用,日常性能开销也不大:
1
iseki 242 天前 via Android
这个取决于你的规模吧,重点是如果你实践微服务模式,那数据库从逻辑上一定要分开。部署在不在一起就看规模吧。
|
2
lo0pback 242 天前
请问这个是什么软件,
|
3
YaD2x 242 天前
我就一个数据库,没有容器化。所有容器化的服务共用这个库。一个服务对应一个数据库,对我 4 G 的内存太奢侈。不如 all in 一个库。前提是自己的服务,没啥特别重要的东西。
|
4
d460686680 242 天前
@lo0pback dozzle
|
5
chloerei 242 天前
共用省资源,独立好维护。
|
6
zzeskl 242 天前 via Android
单独买数据库云服务
|
8
wccc 242 天前
你不如买一下 ali 的 rds 最低配也就 99 一年
|
9
coolcoffee 242 天前
我觉得数据库实例共用的好一些,除非有特别的数据库版本指定要求。担心稳定性那就数据库做 3 实例集群或者是 redis 的 3 主 3 从集群。
all in one 是不存在故障恢复的,无论 cpu 、内存、硬盘、主板、电源哪个环节出问题都是 all in boom 。 |
10
IvanLi127 OP @coolcoffee 对欸,这么一说我想起来了,之前我就是数据库大版本我更新,然后有些服务跑不了,索性就起了两个版本分着用。后面觉得一不做,二不休,直接每个服务单独开实例了,省得研究服务到底支持什么版本的数据库。
|
11
KousukeSakurako 242 天前
忘记在哪看到的了说是每个服务建议单开一个数据库容器,然而我还是多个服务共用一个 PostgreSQL ,备份起来比较方便
|
12
pendulum 242 天前
应该独立
ref:《为什么每个微服务要有自己独立的数据库?》 https://www.maguangguang.xyz/why-mircroservice-need-independent-database |