Теги: спрингбатч
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 BootDevelop, чтобы сделать разработку проще и быстрее.
Согласно официальной документации,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-corepackage, вы можете использовать содержимое уровня инфраструктуры и уровня ядра, а затем реализовать бизнес-логику приложения на основе этих двух уровней.
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, на котором есть соответствующий исходный код и документация, примеры