集群中 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 有很多方法可以解决这个问题。
我想尝试一下 kubernetes
,我可以启动一个简单的应用程序,但现在我想设计一些更复杂的东西。尽管如此,我还是想不通,如何在这种架构中处理数据库访问。
假设我有 100 个简单聊天应用程序的 pod 副本。他们都需要访问相同的数据库(或更像是数据集)并对它们执行 CRUD
操作。如何设计才能保持数据的一致性并消除死锁的风险?
如果可能,我想使用类似SQL
的数据库,这样我就可以轻松使用hibernate
和其他我熟悉的工具。
这有可能吗,还是我必须使用完全不同的方法?我要搜索的技术或架构的名称是什么?
1)可以使用连接池来减少这个数量,让连接设置更多aggressive/elastic;
2) 以这种方式拆分您的微服务,访问持久性是一种微服务,将您的 CRUD 服务暴露给您的持久性 (mysql/rdms/nosql/etc)。这样一来,您很可能不需要 pods 的数百个副本。
3) 死锁/锁定策略——正如安德鲁在评论中提到的,它更多地与您的软件开发架构相关,而不是 K8s 本身。 pros/cons 有很多方法可以解决这个问题。