Share
Embed
Мирчук Дмитрий - Практическое применение shared memory
Ilya Kaznacheev
October 19, 2019
Transcript
15 slides
-
Тезисы доклада Докладчик: Дмитрий Мирчук Руководитель группы разработки [email protected] •Что
такое Shared memory •Как можно ее использовать •Какие у нее есть особенности •И как мы успешно ее применили в собственной разработке -
Что такое shared memory? Общая для апликейшн сервера область с
разными буферами Работаем с конкретным paging buffer: • Кластеры данных - data cluster • Объекты общей памяти - shared memory object (начиная с версии 6.40) -
Что такое shared memory (2 часть) Data clusters Shared memory
objects • Работают на старых версиях • Не поддерживают ссылки • Нет механизма блокировок • Отсутствуют удобные средства мониторинга и использования • Присутствуют только с 6.40 + • Сложнее в реализации -
Use cases User A Work process 1 Work process 2
User B Work process 3 •Передача данных между разными программами •Обмен данными между разными пользователями без использования БД •Использование в качестве буфера для уменьшение нагрузки на БД и увеличения скорости чтения данных •Любые комбинации вышеуказанных вариантов DB Buffer (shared memory) -
Вход в приложение (Login) Подготовительны е операции ~10 секунд Дальнейшая
работа с приложением … Функция 1 Функция 2 Функция 3 Функция 4 Функция N Начальный экран обязательны для Подготовительные операции: • Обязательны для большинства дальнейших операций • Время выполнения всех операций может доходить до 10-ти секунд • В будущем прогнозировалось увеличение времени выполнения Подробнее про приложение -
Дополнительные особенности: • Результат одинаков для любого пользователя • Результат
не меняется в течение одного дня Вход в приложение (Login) Подготовительны е операции ~10 секунд Дальнейшая работа с приложением … Функция 1 Функция 2 Функция 3 Функция 4 Функция N Начальный экран User not depend Еще немного деталей -
Что получилось в итоге В итоге: • Операции запускаются новчью
в фоновом задании • Результат сохраняется в атрибутах объекта shared memory • В процессе развития проекта вынесли туда еще больше алгоритмов Вход в приложение (Login) Shared memory object Дальнейшая работа с приложением … Функция 1 Функция 2 Функция 3 Функция 4 Функция N Начальный экран Подготовительн ые операции 30+ секунд -
Особенности Shared Memory. С чем столкнулись при разработке • (-)
Ограничение по памяти • (-) Shared memory на каждой инстанции аппликейшн сервера – своя • (-) Скорость чтения атрибутов класса shared memory медленнее примерно 15-20 %, чем скорость чтения внутренних атрибутов классов (хэштаблиц) • (+) Возможность иметь несколько разных инстанций • (~) Устаревание версий • (~) Блокировки не кумулятивные • (~) Решение оказалось достаточно удачным, что некоторые алгоритмы сильно не оптимизировали • (~) Пришлось сделать свой монитор -
Другие особенности Shared Memory •(+) Есть своя система блокировок •(+)
Версионность •(+) Есть возможность вносить изменения по commit work -
Выводы •Shared memory можно использовать для обмена данными между процессами,
пользователями или в качестве хранения сложнодобываемых данных •C shared memory лучше работать с помощью объектов •Если правильно приготовить, Shared memory реально помогает •Готовьте Shared memory правильно! -
Краткая инструкция приготовления • Создаем область (shared memory area) –
это класс, имя которого и будет именем области. Класс должен наследоваться от CL_SHM_AREA. • Создаем класс конструктор области – он должен содержать интерфейс IF_SHM_BUILD_INSTANCE и иметь реализацию метода построения IF_SHM_BUILD_INSTANCE~BUILD. • Создаем класс объекта shared memory – в его настройках ставим флажок «Использовать общую память». Атрибуты именно этого класса будут использоваться для хранения данных. Чаще всего этот класс совмещают с классом конструктора из предыдущего пункта. • Теперь можно получить shared memory c помощью методов класса области attach_for_read/attach_for_write/attach_for_update -
Ссылки, полезная литература и транзакции Ссылки: • http://www.kodyaz.com/sap-abap/abap-shared-memory-objects-tutorial.aspx • https://blogs.sap.com/2015/02/19/how-to-use-shared-object-memory-and-sap-memory-to-shar
e-the-objects-for-processing-in-sap-with-an-example/ Литература: • Abap cookbook, chapter 15.3 “Working with Shared Memory Objects” Полезные транзакции: • shma – управление отдельной областью • shmm – монитор областей • se24 – построитель классов