Кто-нибудь здесь имеет опыт обработки партии (например, пружинная партия) на кубернетах? Это хорошая идея?
Для Spring Batch у нас (у команды Spring Batch) есть некоторый опыт по этому вопросу, которым мы делимся в следующих выступлениях:
Выполнение пакетных заданий в kubernetes может быть хитрым:
- блоки могут быть перепланированы k8s на разных узлах в середине обработки
- задачи хрон могут запускаться дважды
- et c
Это требует дополнительной нетривиальной работы на стороне разработчика, чтобы убедиться, что пакетное приложение отказоустойчиво (устойчиво к сбоям узла, перепланированию модуля и т. Д. * 1057). *) и безопасен для выполнения дублирующихся заданий в кластерной среде.
Spring Batch позаботится об этой дополнительной работе для вас и может быть хорошим выбором для запуска пакетных рабочих нагрузок на k8s по нескольким причинам:
- Стоимость эфф цитата: Задания Spring Batch поддерживают свое состояние во внешней базе данных, что позволяет перезапустить их с последней точки сохранения в случае сбоя задания / узла или повторного планирования модуля
- Надежность: Безопасный от дублирования выполнения работ благодаря централизованному хранилищу заданий
- Отказоустойчивость: Повторить / Пропустить неудачные элементы в случае временных ошибок, таких как вызов к веб-службе, которая может быть временно отключена или перепланирована в облачной среде
Как предотвратить пакетную обработку одних и тех же данных, если мы используем функцию автоматического масштабирования kubernetes?
Создание для каждого задания отдельного набора данных - это путь к go (например, задание на файл). Но есть различные шаблоны, которые могут вас заинтересовать, см. Шаблоны заданий из документации k8s.