
我在 home-lab self-hosted 服务时,本来是共用 PostgreSQL 和 Redis 的,但是维护起来有点繁琐,很多服务不是有数据库备份和 docker-compose.yml 就能完整恢复的,现在都是给每个系统单独跑数据库实例,需要恢复就把对应的 docker-compose.yml + volumes 恢复一次。
所以现在像 s3 之类的服务我现在也是单独跑,当然,能存数据库或文件系统我就不额外引入服务,要是能存 Sqlite 这种内嵌数据库就不单独起。不知道各位用啥方案,能兼顾性能开销和维护的便利性。
最后附图一张,看起来跑一堆服务自用,日常性能开销也不大:

1 iseki 2024-03-24 11:16:51 +08:00 via Android 这个取决于你的规模吧,重点是如果你实践微服务模式,那数据库从逻辑上一定要分开。部署在不在一起就看规模吧。 |
2 lo0pback 2024-03-24 11:45:04 +08:00 请问这个是什么软件, |
3 YaD2x 2024-03-24 11:55:27 +08:00 我就一个数据库,没有容器化。所有容器化的服务共用这个库。一个服务对应一个数据库,对我 4 G 的内存太奢侈。不如 all in 一个库。前提是自己的服务,没啥特别重要的东西。 |
5 chloerei 2024-03-24 12:04:17 +08:00 共用省资源,独立好维护。 |
6 zzeskl 2024-03-24 12:04:59 +08:00 via Android 单独买数据库云服务 |
8 fkmc 2024-03-24 13:04:47 +08:00 你不如买一下 ali 的 rds 最低配也就 99 一年 |
9 coolcoffee 2024-03-24 13:27:13 +08:00 我觉得数据库实例共用的好一些,除非有特别的数据库版本指定要求。担心稳定性那就数据库做 3 实例集群或者是 redis 的 3 主 3 从集群。 all in one 是不存在故障恢复的,无论 cpu 、内存、硬盘、主板、电源哪个环节出问题都是 all in boom 。 |
10 IvanLi127 OP @coolcoffee 对,这么一说我想起来了,之前我就是数据库大版本我更新,然后有些服务跑不了,索性就起了两个版本分着用。后面觉得一不做,二不休,直接每个服务单独开实例了,省得研究服务到底支持什么版本的数据库。 |
11 KousukeSakurako 2024-03-24 14:32:02 +08:00 忘记在哪看到的了说是每个服务建议单开一个数据库容器,然而我还是多个服务共用一个 PostgreSQL ,备份起来比较方便 |
12 pendulum 2024-03-24 14:59:05 +08:00 应该独立 ref:《为什么每个微服务要有自己独立的数据库?》 https://www.maguangguang.xyz/why-mircroservice-need-independent-database |