вторник, 15 ноября 2022 г.

Преимущества и проблемы интеграции данных и приложений

Конкретные преимущества метода интеграции путем обмена сообщениями:

Удаленная связь. Обмен сообщениями позволяет отдельным приложениям обмениваться данными - принимать и передавать данные. В пределах одного приложения это не важно, так как объекты могут просто совместно использовать одни и те же данные, размещенные в памяти. А вот отправка данных на другой компьютер намного сложнее и требует копирования данных с одного компьютера на другой. Это означает, что объекты должны быть «сериализуемыми», то есть преобразоваными в простой поток байтов, который можно отправлять по сети. Удаленная связь позволяет организовать обмен сообщениями между отдельными приложениями.

Интеграция платформ/языков программирования. Возможно разные компьютерные системы используют разные языки программировани, разные технологии и платформы. Для интеграции таких разнородных приложений может потребоваться демилитаризованная зона промежуточного программного обеспечения для согласования приложений. Например, обмен может быть организован с помощью плоских файлов. В этих обстоятельствах система обмена сообщениями может быть универсальным переводчиком между приложениями, которая работает с разными языками программирования и платформами. Система обмена сообщения работает на своих условиях, но позволяет приложениям общаться так как использует общую парадигму обмена сообщениями. Эта универсальная связь является сердцем шаблона шины сообщений.

Асинхронная связь. Обмен сообщениями обеспечивает подход к общению по принципу «отправил и забыл». Отправителю не нужно ждать, пока получатель получит и обработает сообщение. Ему даже не нужно ждать, пока система обмена сообщениями доставит сообщение. Отправителю нужно только дождаться отправки сообщения, например. чтобы сообщение было успешно сохранено в канале системой обмена сообщениями. После сохранения сообщения отправитель может выполнять другую работу, пока сообщение передается в фоновом режиме. Получатель может захотеть отправить подтверждение или результат обратно отправителю, для чего требуется другое сообщение, доставка которого должна быть обнаружена механизмом обратного вызова отправителя.

Переменное время доставки. При синхронной связи вызывающая сторона должна дождаться завершения обработки вызова получателем, прежде чем вызывающая сторона сможет получить результат и продолжить. Таким образом, вызывающий абонент может совершать вызовы только с той скоростью, с которой их может выполнять получатель. С другой стороны, асинхронная связь позволяет отправителю направлять запросы получателю в своем собственном темпе, а получателю обрабатывать запросы в своем собственном темпе. Это позволяет обоим приложениям работать с максимальной пропускной способностью и не тратить время на ожидание друг друга.

Регулирование нагрузки (дросселирование). Слишком много вызовов одновременно может привести к перегрузке приемника. Это может привести к снижению производительности и даже к выходу из строя приемника. Асинхронная связь позволяет получателю контролировать скорость, с которой он обрабатывает запросы. Негативное воздействие на вызывающих абонентов, вызванное этим регулированием, сведено к минимуму, поскольку связь является асинхронной, поэтому вызывающие абоненты не блокируются в ожидании получателя.

Надежная связь. Обмен сообщениями обеспечивает надежную доставку, которую не может обеспечить удаленный вызов процедур (RPC). Причина, по которой обмен сообщениями более надежен, чем RPC, заключается в том, что в ходе обмена сообщениями сообщения сохраняются в ходе передачи сообщений. Данные упакованы в виде сообщений, которые являются атомарными, независимыми единицами. Когда отправитель отправляет сообщение, система обмена сообщениями сохраняет это сообщение. Затем он доставляет сообщение, пересылая его на компьютер получателя, где оно снова сохраняется. Хранение сообщения на компьютере отправителя и компьютере получателя считается надежным. Что ненадежно, так это пересылка (перемещение) сообщения с компьютера отправителя на компьютер получателя, поскольку получатель или сеть могут не работать должным образом. Система обмена сообщениями преодолевает это, повторно отправляя сообщение до тех пор, пока оно не будет успешным. Этот автоматический повтор позволяет системе обмена сообщениями преодолевать проблемы с сетью, так что отправителю и получателю не нужно беспокоиться об этих деталях.

Отключенная операция. Некоторые приложения специально разработаны для работы без подключения к сети с последующей синхронизацией с серверами при наличии сетевого подключения. Такие приложения развертываются на таких платформах, как портативные компьютеры, КПК и автомобильные приборные панели. Обмен сообщениями идеально подходит для синхронизации этих приложений — синхронизируемые данные могут ставиться в очередь по мере их создания, ожидая повторного подключения приложения к сети.

Посредничество. Система обмена сообщениями действует как посредник для программ, которые могут отправлять и получать сообщения. Приложение может использовать его как каталог приложений или служб, доступных для интеграции. Если приложение временно отключается, ему нужно только повторно подключиться к системе обмена сообщениями, а не ко всем другим приложениям обмена сообщениями. Система обмена сообщениями может использоваться для обеспечения большого количества распределенных подключений к общему ресурсу, такому как база данных. Система обмена сообщениями может использовать избыточные ресурсы для обеспечения высокой доступности, балансировки нагрузки, перенаправления отказавших сетевых подключений, настройки производительности и повышения качества обслуживания.

Управление потоками. Асинхронная связь означает, что ни одно приложение не должно блокироваться, ожидая выполнения задачи другим приложением. Вместо блокировки в ожидании ответа вызывающая сторона может использовать обратный вызов, который предупредит вызывающую сторону о поступлении ответа. Большое количество заблокированных потоков могут создавать проблемы. Слишком много заблокированных потоков может привести к тому, что у приложения не будет доступных потоков. Более того, если приложение с некоторым динамическим количеством заблокированных потоков падает, то трудно восстановить такие потоки. При использовании обратных вызовов единственными потоками, которые блокируются, является небольшое известное количество слушателей, ожидающих ответов. Это оставляет большинство потоков доступными и определяет известное количество потоков-слушателей, которые можно легко восстановить после сбоя.

Недостатки асинхронного обмена сообщениями. Асинхронный обмен сообщениями не является панацеей интеграции. Он решает многие проблемы интеграции разрозненных систем элегантным способом, но также создает новые проблемы. Некоторые из этих проблем присущи асинхронной модели, в то время как другие проблемы зависят от конкретной реализации системы обмена сообщениями.

Комплексная модель программирования. Асинхронный обмен сообщениями требует от разработчиков работы с моделью программирования, управляемой событиями. Логика приложения больше не может быть закодирована одним методом., который вызывает другие методы. Логика делится на несколько обработчиков событий, которые реагируют на входящие сообщения. Такая система более сложна и труднее в разработке и отладке. Например, эквивалент простого вызова метода может потребовать сообщения запроса и канала запроса, сообщения ответа и канала ответа.

Вопросы сохранения последовательности сообщений. Каналы сообщений гарантируют доставку сообщения, но не гарантируют, когда оно будет доставлено. Это может привести к тому, что сообщения, отправляемые последовательно, будут выходить из строя. В ситуациях, когда сообщения зависят друг от друга, необходимо соблюдать особую осторожность, чтобы восстановить последовательность сообщений.

Синхронные сценарии. Не все приложения могут работать в режиме «отправить и забыть». Если пользователь ищет авиабилеты, он или она захочет увидеть цену билета сразу, а не через какое-то неопределенное время. Поэтому многим системам обмена сообщениями необходимо преодолеть разрыв между синхронными и асинхронными решениями.

Производительность. Системы обмена сообщениями добавляют некоторые накладные расходы. Требуются усилия, чтобы преобразовать данные в сообщение и отправить его, а также получить сообщение и обработать его. Если вам нужно передать огромный кусок данных, разделение его на миллион маленьких частей может быть не очень разумной идеей. Поэтому для больших массивов днных лучше подходят инструменты ETL (извлечение, преобразование и загрузка данных). Обмен сообщениями лучше всего подходит для синхронизации систем после первоначальной репликации данных.

Ограниченная поддержка платформы. Многие проприетарные системы обмена сообщениями доступны не для всех платформах. Часто проще передать файл по FTP на другую платформу, чем получить к нему доступ через систему обмена сообщениями.

Привязка к поставщику. Многие реализации систем обмена сообщениями полагаются на проприетарные протоколы. Даже общие спецификации обмена сообщениями, такие как JMS, не контролируют физическую реализацию решения. В результате разные системы обмена сообщениями обычно не соединяются друг с другом. Это может поставить вас перед совершенно новой задачей интеграции: интегрировать несколько интеграционных решений.

Комментариев нет:

Отправить комментарий