Архитектура Синхронайзера
При проектировании архитектуры Синхронайзера мы не стали "изобретать велосипед". Все лучшее уже изобретено самой природой, надо только суметь это найти. Обычно подобные аналоги и становится наиболее эффективными и естественными решениями. За основу Системного Смнхронайзера мы взяли кровеносную систему - транспортную среду, которая осуществляет доставку необходимого материала (в нашем случае - информации) с целью поддержания жизнедеятельности клеток живого организма.
В нашем представлении разнообразные системы, которые в большом количестве используются во большинстве организаций, составляют тот самый живой организм, все части которого надо питать, связывать друг с другом, обеспечивать доставку необходимой информации, часто одновременно в несколько конечных точек назначения.
Архитектура Синхронайзера реализована максимально просто. При проектировании решения мы заложили следующие обязательные условия:
- Система является модульной, что позволяет адаптировать ее практически к любому бизнес-окружению Заказчика. Модули можно комбинировать друг с другом, добавлять, удалять, включать пользовательские модули и т.д.
- Сбой в любом модуле Синхронайзера не нарушит процесс синхронизации в целом. В самом крайнем случае перебои будут связаны с синхронизацией только отдельной системы, в то время как все остальные системы будут обмениваться данными бесперебойно.
- Формат XML лежит в основе синхросообщений (синхросообщение - элементарная единица передаваемых данных при синхронизации), которыми обмениваются системы, что позволяет легко управлять этими данными даже в малодоступном окружении, а также наложить на них дополнительную промежуточную обработку. В частности, синхросообщения легко зашифровать и дешифровать налету любыми доступными средствами, в том числе сторонними, и это не нарушит работу модулей Синхронайзера.
- Синхросообщения можно накапливать при отложенной синхронизации с внешней системой, если последняя недоступна, например, в связи с проведением регламентных работ. В этом случае, если отключенная система снова станет активной, Синхронайзер выполнит синхронизацию данных, последовательно обработав синхросообщения, поступившие ранее, в порядке их получения. Такой подход дает огромное преимущество в обеспечении высокой надежности передачи синхронизирующих данных, позволяя избегать любых потерь информации.
- Мультиплатформенность является отличительной характеристикой большинства модулей Синхронайзера, которые могут работать практически на любых операционных системах и платформах. Синхронайзер может быть развернут в Windows, Linux, Unix, HP-UX, Solaris и т.д.
- Пользователь может выбрать способ развертывания модулей Синхронайзера: автономные приложения или приложения, предназначенные для того или иного сервера приложений (Apache Tomcat или IBM WebSphere Application Server). В случае использования серверов приложений процедура инсталляции все равно крайне проста (например, в случае Apache Tomcat достаточно лишь переместить развертываемый модуль в папку приложений, и произойдет автоматическое развертывание модуля и его запуск).
В самом простейшем варианте Системный синхронайзер обеспечивает синхронизацию данных между двумя внешними системами. Для этого достаточно установить по одному специальному шлюзу для каждой из систем и модуль Mapper. Каждый шлюз обеспечивает надежный обмен данными со своей системой, если точнее, обработку входящих синхросообщений, а также создание исходящих синхросообщений по результатам изменений данных внутри связанной системы.
Модуль Mapper является транспортным маршрутизатором и обеспечивает корректное преобразование данных в соответствии с правилами синхронизации, которые настраиваются в т.н. карте синхронизации. Надо отметить, что карта синхронизации настраивается без какого-либо дополнительного программирования. Это обычный XML файл, в котором описывается весь набор необходимых преобразований. В частности, это могут быть наименования полей из входящих синхросообщений и наименования конечных полей, т.е. что именно и во что должно быть преобразовано. Кроме того, с помощью правил синхронизации можно описать преобразования данных, а не только преобразования наименований полей. Надо отметить, что под преобразованием данных могут подразумеваться не простые преобразования значений, а также и преобразования типов данных.
В более общем случае задачей Синхронизатора является перенаправление потоков сообщений к той системе, для которой конкретное синхросообщение предназначено. Здесь одновременно могут работать несколько Мапперов. При этом каждый может выполнять свою собственную функцию, связанную с необходимостью обеспечения специфической обработки данных. Например, информация об инцидентах (предположим, имеем такой тип данных в одной системе) должна быть преобразована в соответствии с одними правилами синхронизации, информация о проектных задачах (другой тип данных) - по другим правилам и т.д. Количество Мапперов, которые можно использовать - безгранично, т.к. все в конечном итоге определяется числом синхронизируемых систем, а также конкретными задачами, поставленными в области синхронизации данных.
Предположим надо организовать синхронизацию сразу трех систем. Могут быть разные схемы сборки модулей Синхронайзера в единую транспортную среду, но один из примеров такой сборки может быть представлен на следующем рисунке.
Здесь, чтобы отправить данные синхронизации из одной системы сразу в несколько других систем, необходимо предварительно поделить исходящий транспортный поток на несколько потоков с помощью специального модуля Splitter. После этого становится возможным использовать Mapper для преобразования синхронизирующих данных в соответствии с правилами синхронизации для конкретной целевой системы.
© 2008-2023 Финэкософт.

