集群中 java 应用程序的数据库

Database for a java application in cluster

我想尝试一下 kubernetes,我可以启动一个简单的应用程序,但现在我想设计一些更复杂的东西。尽管如此,我还是想不通,如何在这种架构中处理数据库访问。

假设我有 100 个简单聊天应用程序的 pod 副本。他们都需要访问相同的数据库(或更像是数据集)并对它们执行 CRUD 操作。如何设计才能保持数据的一致性并消除死锁的风险?

如果可能,我想使用类似SQL的数据库,这样我就可以轻松使用hibernate和其他我熟悉的工具。

这有可能吗,还是我必须使用完全不同的方法?我要搜索的技术或架构的名称是什么?

1)可以使用连接池来减少这个数量,让连接设置更多aggressive/elastic;

2) 以这种方式拆分您的微服务,访问持久性是一种微服务,将您的 CRUD 服务暴露给您的持久性 (mysql/rdms/nosql/etc)。这样一来,您很可能不需要 pods 的数百个副本。

3) 死锁/锁定策略——正如安德鲁在评论中提到的,它更多地与您的软件开发架构相关,而不是 K8s 本身。 pros/cons 有很多方法可以解决这个问题。