比方说,我有一个数据库,该数据库具有v1架构,并且该应用程序与该v1架构紧密耦合。也就是说,如果数据库中的记录与实体类不匹配,则会引发SQLException。
我应该如何部署更改数据库架构的更改,以及部署具有竞争条件的应用程序。即用户查询应用程序中不再存在的字段。
答案 0 :(得分:3)
这个问题实际上并不是特定于kubernetes的,它发生在具有多台服务器的任何系统中-kubernetes只是因为它的自动转换而使其变得更加集中。您的问题中的“紧密耦合”一词是此处 real 问题的遗忘。
也就是说,“答案”实际上取决于以下哪种心理模型对您的团队更合适:
SQLException
并向使用者添加更好的重试逻辑我们使用第一个,因为kubernetes的推出已融入我们的工程文化中,并且我们知道,pod-old和pod-new将同时运行,因此架构更改需要逐步进行,向后兼容至少一代Pod。
但是,有时我们只接受为此付出的工程成本比发生特定突破性变化所需的500倍成本更高,因此我们欺骗并降低了复制品的比例,然后将其推出并警告我们的监测团队将是例外,但它们会崩溃。我们之所以能够做到这一点,部分是因为客户端内置了重试逻辑。