Артефакт пакета данных - Spring Batch (1) введение и сценарии использования

Spring

Теги: спрингбатч


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组件图

Как упоминалось ранее,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Иметь некоторые знания. В следующей статье приступайте к написанию реальных боевых действий и постепенно создавайте приложения для пакетной обработки корпоративного уровня.

Справочные ресурсы