“Не работает? Обнови кэш!”. Архитектура и механизм кэширования в SAP PI 7.4

Добрый день, коллеги и им сочувствующие!

Сегодня мы поговорим о такой вещи, как кэш. Нет, не о деньгах, к сожалению. 🙂

Что такое cache?


Wikipedia сообщает:

Кэш или кеш (англ. cache, от фр. cacher — «прятать»; произносится [kæʃ] — «кэш») — промежуточный буфер с быстрым доступом, содержащий информацию, которая может быть запрошена с наибольшей вероятностью. Доступ к данным в кэше осуществляется быстрее, чем выборка исходных данных из более медленной памяти или удаленного источника, однако её объем существенно ограничен по сравнению с хранилищем исходных данных.

Есть такой стандартный индийский комментарий на любую проблему в SAP PI – “Обновите кэш”. И действительно, часто это помогает. Почему? Давайте разбираться.

Могу предположить, что когда разрабатывалась архитектура SAP PI, то перед разработчиками возникли две задачи:

  • Разделить среду разработки и уже работающие интерфейсные объекты, позволить разработчику изменять интерфейс, не затрагивая его текущую продуктивную работу.
  • Учитывая количество различных компонент SAP XI/PI – наладить взаимодействие между ними, с учетом производительности.

Скорее всего, тогда и появилась идея использовать “кэш” как промежуточное хранилище для используемых в работе интерфейса объектов.

Общая схема кэширования в PI выглядит следующим образом:

Рис.1: Архитектура кэширования в SAP PI

Рис.1: Архитектура кэширования в SAP PI

Как это работает?

Обновление кэш происходит автоматически при активации объекта(-ов) в ESR или Integration Directory; процесс обновления кэш также можно инициировать вручную.

При активации объекта Enterprise Service Repository PI происходит следующая цепочка действий:

  • поиск всех связанных с ним объектов, которые также должны быть обновлены;
  • служба извещения (Cache Refresh Notification Service) передает информацию о требуемом обновлении в Integration Directory;
  • инициируется поиск всех связанных объектов в Integration Directory;
  • служба извещения (Cache Refresh Notification Service) передает все необходимые объекты “потребителям” – различным кэш-механизмам в PI.

“Потребителями” обновления являются следующие кэш-механизмы:

  • Mapping cache – здесь хранятся готовые (скомпилированные) программы преобразования;
  • CPA cache – здесь хранятся все объекты разработки и настройки, необходимые для выполнения интерфейса в Advanced Adapter Engine;
  • Integration Engine cache – здесь хранятся все объекты разработки и настройки, необходимые для выполнения интерфейса в Integration Engine; сюда также помещаются все объекты, необходимые для работы ccBPM;
  • Business System cache – кэш подключенной бизнес-системы SAP (ABAP), там хранятся все необходимые интерфейсные объекты для работы proxy и web-service интерфейсов.

Помимо этой цепочки, существует еще SLD-кэш в ESR и Integration Directory:

  • SLD-cache в ESR обновляется всякий раз, когда разработчик импортирует новый программный компонент.
  • SLD-cache в ID обновляется тогда, когда разработчик импортирует бизнес-систему.

SLD-кэш также можно обновить принудительно.

Мониторинг и администрирование

В PI существует ряд инструментов для мониторинга состояния и содержимого кэш-механизмов, а также для ручного обновления.

Первый инструмент входит в состав инструментов администрирования, расположенных на стартовой странице PI:

Рис.2: Инструменты мониторинга

Рис.2: Администрирование

Выбираем вкладку “Repository”, группу инструментов “Lock and Cache Administration”, инструмент “Java Virtual Machine Cache”.

Рис.3: различные кэш-механизмы J2EE, связанные с ESR

Рис.3: различные кэш-механизмы J2EE, связанные с ESR

Как видим, виртуальная машина имеет несколько различных кэш-механизмов. Нас, в частности интересует SLD cache. На данной странице мы можем принудительно обновить нужный кэш, нажав кнопку “Refresh Selected Caches”.

В этой же группе инструментов можно использовать “Data Cache”:

Рис. 4: обновление CPACache

Рис. 4: обновление CPACache

Рис. 5: обновление Mapping Cache

Рис. 5: обновление Mapping Cache

Здесь можно принудительно обновить CPACache и Mapping Cache. При переходе по ссылке “Refresh” напротив соответствующего кэш-механизма, будет открыта страница инструмента обновления.

Обновление CPACache имеет две опции: “Delta” и “Full”.

Рис.6: опции обновления CPACache

Рис.6: опции обновления CPACache

Delta-обновление пытается минимизировать время обновления и синхронизирует только те объекты, которые были изменены с момента последнего обновления. Опция “Full” проводит полную синхронизацию CPACache с репозитариями ESR и Integration Directory.

Скопировав URL вызова обновления CPAСache и Mapping Cache можно вызывать их напрямую. При вызове будут запрошены пользователь и пароль администратора.

На вкладке “Directory” присутствуют те же самые инструменты:

Рис. 7: Вкладка Directory - обновление SLD Cache

Рис. 7: Вкладка Directory – обновление SLD Cache

Рис. 8: Вкладка Directory - обновление CPACache

Рис. 8: Вкладка Directory – обновление CPACache

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

Более продвинутые инструменты можно найти в наборе “Configuration and Monitoring Home”, расположенном на той же начальной странице PI:
Заходим на http://<host>:<port>/dir и выбираем “Configuration and Monitoring Home” в правом нижнем углу.
Открывается следующий портал:

Рис.9: Инструменты мониторинга и настройки SAP PI

Рис.9: Инструменты мониторинга и настройки SAP PI

Выбираем в меню сверху страницы – кэш какой из частей PI мы хотим посмотреть: Integration Engine, Adapter Enginge, Business Process Engine или Mapping Runtime.

Рис. 10: Cache Monitor для Integration Engine (ABAP)

Рис. 10: Cache Monitor для Integration Engine (ABAP)

Рис. 11: Cache Monitor для Adapter Engine (J2EE)

Рис. 11: Cache Monitor для Adapter Engine (J2EE)

Рис. 12: Cache Monitor для программ преобразования (J2EE)

Рис. 12: Cache Monitor для программ преобразования (J2EE)

Выбираем “Cache Monitor” и наслаждаемся властью над всеми механизмами кэширования SAP PI:

Рис. 13: Cache Monitor для Adapter Engine - просмотр содержимого

Рис. 13: Cache Monitor для Adapter Engine – просмотр содержимого

Здесь можно посмотреть, что находится в кэш, синхронизировать отдельные объекты или весь кэш целиком.

Кэширование и разработка.

Для разработчика также созданы несколько полезных инструментов, с помощью которых можно мониторить и влиять на кэширование.

Откроем Enterprise Service Builder, выберем в меню “Environment”:

Рис. 14:  Инструменты работы с кэшированием в Enterprise Service Builder

Рис. 14: Инструменты работы с кэшированием в Enterprise Service Builder

Пункт “Clear SLD Data Cache” позволяет сбросить все кэшированные объекты SLD, при следующем обращении объекты будут считаны заново.
Этот инструмент бывает полезен, когда в SLD создается новый программный компонент, а при попытке его импортировать в ESR в списке компонент его не видно.

Пункт меню “Cache Status Overview” вызывает монитор службы извещения об обновлении (Cache Refresh Notification Service).
Вот, например, в мониторе видно, что был активирован объект разработки и об этом изменении успешно был информирован Integration Directory:

Рис. 15: сообщение об успешной активации объекта в кэш-мониторе ESR

Рис. 15: сообщение об успешной активации объекта в кэш-мониторе ESR

Дальнейшую судьбу кэширования этого объекта можно отследить уже в Integration Directory. Запускаем Integration Builder, вызываем меню “Environment” -> “Cache Status Overview”:

Рис. 16: сообщение об успешной активации объекта в кэш-мониторе Integration Directory

Рис. 16: сообщение об успешной активации объекта в кэш-мониторе Integration Directory

В мониторе видно, что активированный объект был успешно передан “потребителям”: в кэш Integration Cache (ABAP) и в кэш Adapter Engine (J2EE).

В Integration Builder также можно очистить SLD Cache, который хранит список Business Systems, определенных в SLD.
После очистки, при первом вызове импорта бизнес-систем, список систем будет заново считан из SLD.

Кэширование в ABAP.

Чтобы посмотреть, что находится в кэш ABAP-части, используется транзакция SXI_CACHE. Ее можно использовать как в ABAP-части PI, так и в подключенной бизнес-системе на базе WebAS ABAP:

Рис. 17: Транзакция SXI_CACHE

Рис. 17: Транзакция SXI_CACHE

В меню также есть инструменты для дельта- и полного обновления кэш в ABAP-части:

Рис. 18: Меню транзакции SXI_CACHE

Рис. 18: Меню транзакции SXI_CACHE


Дополнительно по кэшированию можно почитать:
How to Handle XPI Caches in SAP NetWeaver 2004s (NW7.0)
Analyzing the Runtime Cache (help.sap.com, PI 7.4)
Runtime Caches (help.sap.com, NW 7.4)

Удачи в интеграции!
Ваш Pitroff.

3 thoughts on ““Не работает? Обнови кэш!”. Архитектура и механизм кэширования в SAP PI 7.4

  1. Jitender Chauhan

    Hi Pitroff,

    I read your article on Bridges at SDN and I am really thankful to you for putting up a great article on the subject.
    This one too is a really nice blog on Cache. (Though I had to translate the page into English to read) 😉
    By any chance are you planning to publishing the “Overall caching scheme in the PI” diagram in english or Publishing this article on SDN(like you did for Bridges) so that many others can get benefit of understanding the concept? If so do let me know.

    Thanks and Regards,
    Jitender

    Reply
    1. pitroff.ru Post author

      Thanks a lot, Jitender!

      Ok, I’ll put the translation of this article to my plans. )
      But this wouldn’t be fast – have another job now.

      Regards,
      Alex

      Reply

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *