TwKit
正在载入
TwKit

昨天这个帖子下面的回复我都看了下,然后现在终于有时间去总结一下了。 尽量去总结了 4 点吧。 1、生命周期对不上 有个老哥说容器带走的是进程,数据库要守住的… · @Suercha007 · TwKit

@Suercha007

昨天这个帖子下面的回复我都看了下,然后现在终于有时间去总结一下了。 尽量去总结了 4 点吧。 1、生命周期对不上 有个老哥说容器带走的是进程,数据库要守住的是崩溃那一瞬间磁盘里已经提交的东西。 还有个老哥把机制拆得很细,我觉得是评论区最牛的的。 他说 docker stop 默认只等十秒就 SIGKILL,数据库还在刷盘就被杀了。buffer 按宿主机内存配,撞上 cgroup 上限直接 OOM。CPU 限额一触发 throttling,延迟就抖,而且查起来很费劲。再跟别的容器共用磁盘 IO,fsync 延迟完全不可控。 2、数据 不是简单的挂了会丢,比如忘了挂卷,容器一删全没。 用 latest 标签,哪天 pull 一下大版本升上去,数据文件格式对不上,库起不来。PG 尤其容易中招。 停容器没给够时间,可能要靠恢复,甚至丢事务。 还有一条我原来不知道,PG 在跑的时候直接拷数据目录,不能当备份用。 这都是细节。 3、IO 这一点讨论的最多。有人说 volume 绕不过 overlayfs,有人说挂到宿主机独立目录就没事。 有人说 docker 单机跑性能损耗不超过 5%,真正有坑的是上 K8s 之后。 4、人的问题 老哥原话是,你有几个脑袋去维护这种强状态的服务。你自己管一个库管一辈子没事,可你要是离职了,让后面 n 波人去管散在几十个环境里的上百个库试试。 这个自己体会吧。 因为我是做深度学习和 AI 落地这一块的,所以说之前数据库层面的东西接触的比较少,起码不用自己去部署吧。 学习到了。

曝光 41 · 评论 1 · 点赞 1 · 书签 0

查看原帖