Теги: спрингбатч
1. Введение
Недавно использованныйSpring Batch
Займитесь переносом данных, синхронизацией данных, пакетной обработкой данных и т.д., вздохнитеSpring Batch
Простой дизайн и мощная абстракция пакетного программирования.
Как мы все знаем, с развитием технологии больших данных предприятия уделяют все больше и больше внимания данным, тому, как эффективно преобразовывать данные в информацию, чтобы помочь предприятиям проводить анализ данных, принимать бизнес-решения и повышать основную конкурентоспособность. Пакетная обработка является одним из важных средств для достижения этой цели. Благодаря пакетной обработке можно выполнять загрузку данных, извлечение, преобразование, проверку, очистку и другие функции. Эти задачи характеризуются большими объемами данных, отсутствием ручных операций и тесной связью со временем (например, обработка один раз за определенный период времени).
Для пакетных данных, будь то извлечение данных, миграция базы данных, синхронизация данных и другие службы, задействованные конкретные операции представляют собой не что иное, как чтение данных, их обработку и запись данных. Согласно этой идее, в процессе пакетного программирования требуется определенное количество усилий для достижения четкой структуры, общего интерфейса, видимого процесса и обработки ошибок.Spring Batch
Появление фреймворка заполняет этот пробел. Когда я впервые увидел этот фреймворк, мне очень захотелось увидеться поздно, разве не этого я хочу. Чтение, обработка и запись абстрагируются отдельно, черезSpring Batch
, вы можете превратить сложные бизнес-задачи в простые абстракции.В процессе программирования вам нужно только заботиться о конкретной бизнес-реализации и передать процесс и управление процессомSpring Batch
Бар.
Во время учебы я прочиталSpring Batch
Официальная документация Лю Сяна "Spring Batch Batch Processing Framework", эта серия будетSpring Batch
Введение и практика с кейсом, как мы надеемся, будут полезны для студентов начального уровня, и я надеюсь общаться с вами. Эта статья перваяSpring Batch
Вводить.
2. Введение в Spring Batch
2.1 Spring Batch — пакетная среда
Для использованияjava
Область технологий для разработки бизнес-программирования,Spring Framework
Несомненно лидер текущего развития предприятия, с самого началаspring
развиваться, чтобыSpring MVC
веб-разработки, а теперь на основеSpring Boot
Разработка микросервисов характеризуется упрощенной разработкой, расширенными спецификациями и быстрой интеграцией.spring
Существует также среда разработки, т.Spring Batch
. Spring Batch — это легкая, хорошо зарекомендовавшая себя пакетная среда, разработанная, чтобы помочь предприятиям создавать надежные и эффективные пакетные приложения. Он разработан на основе среды Spring, что упрощает использование исходных сервисов разработчиками, использовавшими среду Spring. текущая новая версияSpring Batch
непосредственно на основеSpring Boot
Develop, чтобы сделать разработку проще и быстрее.
Согласно официальной документации,Spring Batch
ОтSpring Source
иAccenture
Сотрудничество между Accenture и SpringSource, разработанное в сотрудничестве с (Accenture), в которую Accenture вложила многолетний опыт использования и создания пакетных архитектур, направлено на содействие стандартизации методов обработки программного обеспечения, сред и инструментов при создании пакетных приложений. последовательно использовать эти методы, рамки и инструменты. В любом случае разработчику выгодно избегать дублирования разработки.
2.2 Spring Batch не является структурой планирования
Spring Batch
Это абстракция пакетной логики и нормализация задач выполнения, которая отличается от структуры планирования. Его можно комбинировать со структурой планирования и планировать с помощью структуры планирования.Spring Batch
Задание, которое выполняет задачу для пакета. Структура планирования имеет соответствующее программное обеспечение с открытым исходным кодом на выбор, такое какquartz
,cron
,xxl-job
Ждать.
2.3 Краткое описание Spring Batch
Как было сказано ранее,Spring Batch
Как упростить пакетную обработку и стандартизацию. Проще говоря,Spring Batch
Упростить пакет доJob
иJob step
две части, вJob step
, обработка данных разделена на три этапа: чтение данных (Reader), обработка данных (Processor) и запись данных (Writer). Механизм обработки исключений делится на три типа: пропуск, повтор и перезапуск. Режим работы: разделен на многопоточность, параллельный, удаленный, раздел четыре. В процессе разработки большая часть работы разработчиков заключается в написании Reader, Processor и Writer в соответствии с бизнес-требованиями, что повышает эффективность пакетной разработки. в то же времяSpring Batch
Он также предоставляет множество программ чтения и записи по умолчанию, из коробки.
3. Преимущества Spring Batch и сценарии использования
заSpring Batch
Преимущества и сценарии использования подробно описаны в книге Spring Batch Batch Processing Framework. Лично я считаю, что она написана хорошо. Сейчас выдержки для справки и оценки.Spring Batch
Подходит ли он для самостоятельно развивающегося бизнеса.
3.1 Преимущества Spring Batch
-
Богатые готовые компоненты Готовые компоненты включают в себя чтение и запись различных ресурсов. Чтение/запись: поддержка чтения/записи текстового файла, чтения/записи файла XML, чтения/записи базы данных, чтения/записи очереди JMS и т. д. Он также предоставляет инфраструктуру, такую как хранилище заданий и планировщик заданий, что значительно упрощает разработку.
-
Чанк-ориентированная обработка Поддерживает многократное чтение, одну запись и позволяет избежать многократной записи в ресурсы, что значительно повышает эффективность пакетной обработки.
-
возможности управления бизнесом По умолчанию используется декларативная модель управления транзакциями, предоставляемая Spring.Операции, ориентированные на чанки, поддерживают управление транзакциями, а также поддерживают детальную настройку транзакций для каждой операции тасклета: уровень изоляции, поведение распространения, настройки времени ожидания и т. д.
-
управление метаданными Автоматически записывайте выполнение задания и шага, включая успех, сбой, информацию об исключении сбоя, время выполнения, повторные попытки, время пропуска, время выполнения и т. д., чтобы облегчить последующее обслуживание и просмотр.
-
Легко контролируемые пакетные приложения Обеспечивает гибкие режимы мониторинга, включая прямой просмотр базы данных,
Spring Batch
Представление API, представление консоли JMX и т. д. который также сказалSpring Batch Admin
, но этот проект больше не поддерживается, используйтеSpring Cloud Data Flow
. -
Богатые определения процессов Он поддерживает последовательные задачи, задачи с условным переходом, и сложные процессы задач могут быть организованы на основе этих двух задач.
-
Надежное пакетное приложение Он поддерживает пропуск, повтор и перезапуск заданий, а также позволяет избежать аварийного прерывания пакетных заданий из-за ошибок.
-
Масштабируемое пакетное приложение Механизм расширения включает в себя многопоточное выполнение шага (многопоточный шаг), многопоточное параллельное выполнение нескольких шагов (этап распараллеливания), удаленное выполнение заданий (удаленное разбиение на фрагменты) и секционированное выполнение (шаг разбиения).
-
Повторно используйте существующие ИТ-ресурсы предоставлять разнообразные
Adapter
возможности, чтобы существующие службы предприятий можно было легко интегрировать в приложения для пакетной обработки. Избегайте повторной разработки и повторного использования устаревших сервисных активов предприятия.
3.2 Типичные сценарии, используемые Spring Batch
-
Периодически отправлять пакетные задачи
-
параллельная пакетная обработка
-
Корпоративная обработка сообщений
-
Массивная параллельная пакетная обработка
-
Ручной или запланированный перезапуск после сбоя
-
Последовательная обработка зависимых задач (с возможностью расширения до пакетной обработки на основе рабочего процесса)
-
Частичная обработка: пропускать записи (например, при откате)
-
пакетная транзакция
4. Предварительный просмотр концепции Spring Batch
Многие из них перечислены вышеSpring Batch
Преимущества и применимые сценарии суффикса, затем мы кратко объясним его конкретную архитектуру и соответствующие концепции, используемые для реализации развития практики применения суффикса.
4.1 Пакетная архитектура Spring
отSpring Batch
изгитхаб проект с открытым исходным кодом, видно, что основнойspring-batch-infrastructure
иspring-batch-core
Код модуля, который также составляет его основную архитектуру. Как показано ниже:
На схеме выделены три основных высокоуровневых компонента: прикладной уровень (Application
), основной слой (Batch Core
) и уровень инфраструктуры (Batch Infrastructure
). Среди них прикладной уровень содержит разработчиков, использующихSpring Batch
Все пользовательские пакетные задания и пользовательский код написаны. Уровень ядра содержит основные классы среды выполнения, необходимые для запуска пакетных заданий и управления ими. это включает в себяJobLauncher
,Job
иStep
реализация. И прикладной уровень, и базовый уровень построены на общей инфраструктуре. Эта инфраструктура содержит общий read(ItemReader
),Писать(ItemWriter
) и сервисная обработка (например,RetryTemplate
). При разработке приложения см.spring-batch-infrastructure
иspring-batch-core
package, вы можете использовать содержимое уровня инфраструктуры и уровня ядра, а затем реализовать бизнес-логику приложения на основе этих двух уровней.
4.2 Основные концепции Spring Batch
Знаком сSpring Batch
, начните с основных понятий, эти понятия неизбежно будут использоваться в процессе разработки, поэтому сначала вам нужно их понять. На картинке нижеSpring Batch
Конкретная схема компонентов пакетной обработки:
Как упоминалось ранее,Spring Batch
На уровне инфраструктуры абстрактные задачи, такие какJob
иStep
,ОдинJob
несколькимиStep
завершить, каждыйstep
соответствует одномуItemReader
,ItemProcessor
иItemWriter
.Job
черезJobLauncher
начать,Job
иJob
результат и статус операции,Step
Результаты и статус операции будут сохранены вJobRepository
середина.
Описание концепции можно найти в таблице ниже:
доменный объект | описывать |
---|---|
JobRepository | Склад заданий, сохраняет статус и результаты во время выполнения задания и шага |
JobLauncher | Исполнитель задания — это точка входа для выполнения задания. |
Job | Пакетная задача, состоящая из одного или нескольких шагов |
Step | Конкретная логическая единица выполнения задачи |
Item | запись данных |
ItemReader | Чтение данных из источника данных |
ItemProcessor | Обработка данных, такая как очистка данных, преобразование, фильтрация, проверка и т. д. |
ItemWriter | Записать данные в указанное место назначения |
Chunk | Заданное количество коллекций Item, например, количество прочитанных чанков, будет записано |
Tasklet | Конкретная логика выполнения в шаге может выполняться повторно. |
5. Сравнение пакетных инструментов
В практических приложениях наиболее часто используемым сценарием пакетной обработки является синхронизация данных. В работе по интеграции данных часто необходимо синхронизировать данные из исходного местоположения в целевое местоположение для последующих логических операций. При выполнении такого рода инструмента пакетной обработки я проверил информацию в Интернете и обнаружил, что он используется чаще.kettleи Алиdatax,Для этих двух средств у каждого есть свои преимущества и недостатки, я тоже пробовал в свое время (если будет возможность, то напишу еще статью об их использовании) Далее можно краткое описание и сравнение .
5.1 kettle
Kettle — это инструмент ETL с открытым исходным кодом, который можно программировать визуально. Он упрощает обработку данных в Job и Transform. В Transform предоставляются различные инструменты для чтения, записи, преобразования и обработки данных. Разработчикам нужно только перетащить соответствующие инструменты в интерфейс инструмента и соединить шаги для выполнения задания ETL.Сочетание различных инструментов и шагов может сформировать относительно сложный рабочий процесс для выполнения задания ETL. Его преимущество заключается в визуальном программировании, которым очень легко пользоваться, что является преимуществом для тех, кто не знаком с программированием. Лично его рекомендуется использовать для простой работы ETL (т.е. логических суждений и операций не много). Но есть и минусы.Во-первых, он прост в освоении и сложен в освоении.В нем предусмотрено множество операций.С ними сложно ознакомиться и совместить для выполнения задачи. Во-вторых, для некоторых сложных логических суждений и операций чайник хоть и может это делать, но очень сложен в эксплуатации. В-третьих, неудобно отлаживать, хотя и имеет встроенную функцию отладки, реализовать пошаговую отладку затруднительно из-за параллельных операций при конвертации. Четвертое — потребление памяти, сам интерфейс чайника потребляет больше памяти при работе, а когда объем данных в задании большой, потребление памяти еще больше.
5.2 datax
DataX — это широко используемый автономный инструмент/платформа для синхронизации данных в Alibaba Group.MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS
Эффективная функция синхронизации данных между различными разнородными источниками данных. В качестве платформы синхронизации данных сама DataX абстрагирует синхронизацию различных источников данных от подключаемого модуля Reader, который считывает данные из исходного источника данных, и подключаемого модуля Writer, который записывает данные в цель. поддержка синхронизации данных любого типа источника данных. В то же время подключаемая система DataX как экосистема может связываться с существующим источником данных каждый раз, когда новый источник данных подключается к вновь добавленному источнику данных.
DataX также очень прост с точки зрения архитектуры: как средство переноса данных, он поддерживает синхронизацию данных любого типа.Spring Batch
Похожий по назначению, сам DataX, как инфраструктура автономной синхронизации данных, принимаетFramework + plugin
Архитектурное построение. Чтение и запись абстрактного источника данныхReader/Writer
Плагины, встроенные во всю структуру синхронизации.
Читатель: Читатель — это модуль сбора данных, который отвечает за сбор данных из источников данных и отправку данных в платформу.
Writer: Writer — это модуль записи данных, отвечающий за непрерывную выборку данных из Framework и запись данных в место назначения.
Платформа: Платформа используется для соединения устройств чтения и записи в качестве канала передачи данных для обоих, а также для решения основных технических проблем, таких как буферизация, управление потоком, параллелизм и преобразование данных.
Сам DataX также предоставляет относительно богатый Reader и Writer, согласно его документам, его относительно просто использовать в качестве инструмента для синхронизации данных. И он одобрен Али, так что вы можете использовать его с уверенностью. Однако недостатком является то, что он не часто поддерживается и обновляется.Последнее обновление на github было в прошлом году (2018), второе — это сложность вторичной разработки.Я пытался запустить исходный код и хотел заняться вторичной разработкой. Хотя он, наконец, побежал, это стоило больших сил. В-третьих, хотя структура и понятна, но использовать правила не очень гибко, в основном настраивается по правилам через конфигурационный файл json, настроить правила невозможно.
5.3 Общее ощущение
Условно говоря, единое рассмотрение простоты использования, масштабируемости, гибкости, программируемости, личных ощущенийSpring Batch
Он больше подойдет разработчикам с небольшой базой программирования (особенно с использованием фреймворков Spring и SpringBoot) и сможет свободно играть в бизнес-программирование.
6. Резюме
Эта статья оSpring Batch
Коротко знакомится с фреймворком, указываются его преимущества и сценарии использования, затем кратко поясняются основные понятия используемых компонентов, и, наконец, сравнивается с более распространенным чайником и DataX, надеюсь, что читатели это пропустят. статья.Spring Batch
Иметь некоторые знания. В следующей статье приступайте к написанию реальных боевых действий и постепенно создавайте приложения для пакетной обработки корпоративного уровня.
Справочные ресурсы
- 1. Официальный сайт Spring Batch: Есть документы и примеры Spring Batch
- 2. Исходный код Spring Batch на github: Он содержит исходный код, пример, статус выпуска и т. д.
- 3. Лю Сян «Среда пакетной обработки Spring Batch»: Spring Batch подробно описан в книге, и данная статья в основном относится к этой книге.
- 4. Официальный сайт чайника: официальный сайт чайника, скачать чайник можно здесь
- 5. официальный сайт датакс: github datax, на котором есть соответствующий исходный код и документация, примеры