Распределённая пакетная архитектура — это решение для сложных задач обработки данных, анализа и научных вычислений. Задачи распределяются по определённым серверам, планируются, разделяются на подзадачи и выполняются параллельно, что значительно повышает эффективность и надёжность выполнения.
Кроме того, асинхронная пакетная архитектура может быть развёрнута в сети как часть облачных вычислений предприятия.
Основные принципы:
-
Пример асинхронной пакетной обработки показывает основные принципы, но реальное применение гораздо сложнее. Например, компании необходимо создать годовой отчёт, который должен быть разделён по различным отделам и филиалам компании. Данные для отчёта поступают из финансовой системы компании, ERP-системы и CRM-системы.
-
Технический анализ:
-
- Генерация отчёта начинается с извлечения данных из различных систем, их обработки и объединения в итоговый отчёт. Каждый шаг обработки должен быть классифицирован по отделам и филиалам.
-
- Отчёт каждого филиала должен быть объединён после завершения обработки данных. Затем создаётся общий отчёт для всей компании.
-
- Извлечение и обработка данных для каждого отдела и филиала могут выполняться параллельно. Также возможно параллельное выполнение обработки данных и объединение общих отчётов.
-
Этапы пакетного выполнения:
- Клиент или приложение инициируют событие, связанное с годовым отчётом.
- Главный сервер получает событие и находит предварительно настроенную диаграмму выполнения пакета (например, диаграмма может включать узлы для извлечения данных из финансовых систем, ERP и обработки данных).
- Главный сервер разбивает задачу на множество подзадач (например, извлечение данных из ERP для отдела A, B и C) и отправляет их на серверы задач для параллельного выполнения.
- Сервер задач выполняет задачи, такие как извлечение данных ERP для отделов A и B.
- После выполнения задачи сервер задач отправляет информацию о завершении обратно главному серверу.
- Главный сервер проверяет, завершены ли все задачи в пакете, и если да, создаёт следующий набор задач (например, обработка данных для отделов A, B и C), повторяя процесс до тех пор, пока все задачи не будут выполнены (и все отчёты не будут созданы).
Общая логическая структура:
- Событие инициируется приложением или центром событий и достигает развёрнутого главного сервера через сервер сообщений о событиях.
- Главный сервер разделяет событие на задачи согласно заранее определённой диаграмме узлов и направляет их на сервер сообщений о задачах, записывая журнал.
- Сервер задач получает соответствующие задачи от сервера сообщений о задачах в зависимости от своих ресурсов и выполняет их, обеспечивая балансировку нагрузки.
- После завершения выполнения сервер задач записывает журнал и отправляет информацию о выполнении обратно серверу сообщений о задачах.
- Главный сервер снова получает информацию о выполнении от сервера сообщений о задачах и определяет статус завершения узлов и событий. Если узлы не завершены, продолжается разделение и отправка задач. Если все задачи выполнены, событие считается завершённым.
Термины и определения:
- Пакетная система OpenHandX-Batch — краткое название распределённой пакетной архитектуры.
- Событие — запрос на пакетную обработку, отправленный приложением в пакетную систему.
- Узел — этап сложного события, представляющий собой отдельную задачу.
- Диаграмма узлов — схема, объединяющая несколько узлов в последовательность выполнения, называемую диаграммой потока узлов.
- Задача — конкретная реализация узла, обычно один узел делится на одну задачу, хотя узел также может представлять собой определение группы похожих задач.
Ключевые особенности:
- Поддержка нескольких приложений — возможность развертывания нескольких приложений на одном главном сервере или группе главных серверов, управляемых главным сервером.
- Поддержка асинхронных событий — главный сервер может одновременно обрабатывать и контролировать несколько событий, используя приоритеты и веса событий для управления ресурсами сервера.
- Распределённое выполнение задач — каждая задача выполняется отдельным сервером задач параллельно, поддерживая горячее развёртывание во время выполнения.
- Автоматическая балансировка нагрузки — каждый сервер задач и главный сервер автоматически анализируют свои ресурсы и принимают задачи для выполнения.
- Разнообразие диаграмм узлов и поддержка событий — главные серверы предоставляют древовидные и многоуровневые диаграммы узлов, а также поддержку отдельных типов задач. Диаграммы узлов позволяют определять последовательности выполнения для сложных событий. Поддерживается восстановление после сбоев.
- Гибкость расширения — главные серверы, серверы задач и серверы событий предоставляют обширные интерфейсы, позволяющие настраивать диаграммы узлов, события и задачи.
- Быстрое создание интерфейсов — серверы задач предоставляют основной интерфейс для разработки бизнес-кода для всех приложений, также поддерживая Spring Framework.
- Надёжность и отказоустойчивость — каждый экземпляр главного сервера имеет свой собственный контейнер выполнения и поток, а серверы задач имеют свои независимые контейнеры задач и потоки выполнения, гарантируя, что сбой в одной задаче не повлияет на другие задачи. Кроме того, главный сервер отслеживает выполнение каждой задачи и даже после сбоя сервера может автоматически возобновить выполнение с предыдущего этапа. Диаграммы узлов поддерживают механизмы восстановления после ошибок, позволяя настраивать обработку ошибок в соответствии с важностью узла, условиями выполнения и требованиями к восстановлению.
- Безопасность и уровни доступа — все инструменты пакетной обработки обеспечивают управление пользователями и паролями, а протоколы передачи событий и задач поддерживают шифрование и сжатие.
- Различные модели применения — полная асинхронная пакетная система требует развёртывания главных серверов, серверов задач и серверов событий. При меньших требованиях можно гибко развернуть только серверы задач или комбинацию главных серверов и серверов задач.
- Богатые возможности мониторинга и анализа — главные серверы, серверы задач и серверы событий имеют собственные инструменты мониторинга и управления, позволяющие запускать, приостанавливать и перезапускать серверы. Пакетные системы также предоставляют инструменты для анализа журналов в реальном времени, включая состояние выполнения событий, узлов и задач, а также прогресс выполнения.
Преимущества производительности:
-
Главные серверы:
-
- Приём событий, отправка задач и получение информации о задачах могут быть настроены различными способами: JMS-сервер, база данных, очередь памяти или WebService, где очередь памяти обеспечивает наибольшую эффективность, за которой следует WebService.
-
- Для сложных диаграмм узлов с длительным временем выполнения можно использовать асинхронные интерфейсы для повышения скорости главного сервера.
-
Серверы задач:
-
- Отправка и получение информации о задачах также могут быть настроены разными способами: JMS-серверы, базы данных, очереди памяти или WebServices, где очереди памяти обеспечивают наибольшую эффективность, а затем WebServices.
-
- Каждая задача выполняется в отдельном потоке выполнения.
-
- Управление задачами осуществляется менеджером экземпляров задач, который по умолчанию использует одноэкземплярную модель с многократным выполнением для снижения накладных расходов на создание новых задач во время выполнения.
Комментарии ( 0 )