【问题标题】:Database for a java application in cluster集群中 Java 应用程序的数据库
【发布时间】:2018-04-12 22:50:45
【问题描述】:

我想玩kubernetes,我可以启动一个简单的应用程序,但现在我想设计一些更复杂的东西。不过我不知道如何在这种架构中处理数据库访问。

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

如果可能的话,我想使用SQL-like 数据库,这样我就可以舒适地使用hibernate 和其他我熟悉的工具。

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

【问题讨论】:

  • 当然,这只是类似于多线程数据库访问和死锁/锁定策略 - RDBM 与 NoSql 等 - 一条老路 - 为什么 kubernetes 专门改变了这个问题?
  • 我不确定。我想知道是否有特定的设计模式可以使用。因为不一样,无论你有 2-3 台服务器,还是数百台带有微服务服务器的服务器,都需要立即对 db 做一些事情。或者不是吗,我可以依靠 MySQL/Oracle/任何数据库自己处理所有问题?注意:我作为软件开发人员使用数据库,但对它们没有任何深入的了解:)

标签: database design-patterns database-design architecture cluster-computing


【解决方案1】:

1) 您可以使用连接池来减少此数量,并使连接设置更具侵略性/弹性;

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

3) 死锁/锁定策略——正如 Andrew 在 cmets 中提到的,它更多地与您的软件开发架构相关,而不是 K8s 本身。有很多方法可以处理它的优点/缺点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    相关资源
    最近更新 更多