Обновления базы данных LiquiBase и Kubernetes - PullRequest
0 голосов
/ 24 июня 2018

Допустим, у меня есть база данных со схемой v1 и приложение, которое тесно связано с этой схемой v1.то есть SQLException генерируется, если записи в базе данных не соответствуют классам сущностей.

Как мне развернуть изменение, которое изменяет схему базы данных, и развертывает приложение, имеющее состояние гонки.то есть пользователь запрашивает приложение для поля, которое больше не существует.

1 Ответ

0 голосов
/ 24 июня 2018

Эта проблема на самом деле не специфична для kubernetes, она возникает в любой системе с более чем одним сервером - kubernetes просто делает ее более передней и центральной из-за того, как происходит автоматическое переключение.Слова «тесно связанные» в вашем вопросе являются полной ошибкой проблемы real здесь.

При этом «ответ» на самом деле будет зависеть от того, какая из следующих ментальных моделей лучшедля вашей команды:

  • не допускайте противоречия между двумя последовательными схемами
  • используйте страницу «обслуживания», которая удерживает трафик от пакетов, пока они не будут полностью развернуты
  • просто примите SQLException s и добавьте лучшую логику повторения для потребителей

Мы используем первый, потому что развертывание kubernetes запекается в нашей инженерной культуре, и мы знаем что pod-old и pod-new будут работать одновременно, и поэтому изменения схемы должны быть инкрементными и обратно совместимыми как минимум для одного поколения pods.

Однако иногда мы просто соглашаемся, что инженерные усилия для этогоЭто дороже, чем 500-х годов, что определенное критическое изменение повлечет за собой, поэтому мы обманываем и масштабируем реплики на низком уровне, а затем развертываем и предупреждаемнаша команда мониторинга, что будут исключения, но они перевернутся.Мы можем сделать это частично, потому что в клиент встроена логика повторения.

...