Enterprise Cache Protocol Федоров Вадим «Школа Инноваций InterSystems 2007»

Презентация:



Advertisements
Похожие презентации
Администрирование информационных систем Лекция 4. Система управления базами данных.
Advertisements

Обобщенная архитектура СУБД. Область SQL содержит данные связывания, временные буферы, дерево разбора и план выполнения для каждого оператора SQL, Область.
Распределенная обработка информации Разработано: Е.Г. Лаврушиной.
Организация распределенных прикладных систем. Попытаемся ответить на вопросы Как устроены распределенные прикладные системы? Каковы наиболее важные их.
Технология модели «клиент-сервер». Роли Компьютер, управляющий тем или иным ресурсом, принято называть сервером этого ресурса Компьютер, желающий воспользоваться.
1 Современные системы программирования. Часть 2. Системное и прикладное программное обеспечение Малышенко Владислав Викторович.
Администрирование БД. Репликация баз данных.. Процесс репликации Репликация – процесс автоматического распределения копий данных и объектов БД между экземплярами.
Основы DB2 Белькова Евгения, программист отдела тестирования, группа DB2 Tools.
Сетевые службы Для конечного пользователя сеть это не компьютеры, кабели и концентраторы и даже не информационные потоки, для него сеть это, прежде всего,
Модели транзакций Параллельное выполнение транзакций.
Учебный курс Технологии и средства разработки корпоративных систем Лекция 1 Открытые системы. Клиент и сервер Лекции читает кандидат технических наук,
Распределенная обработка данных Различные модели в технологии баз данных.
1 С:Облачный архив Для технических специалистов и сервис-инженеров Обзорный вебинар для партнеров Фирмы «1 С» Ф.И.О. докладчика, должность.
Применение иерархического метода для построения защищенной операционной системы. Выполнила Шилова О. И-411.
Модели транзакций Журнализация и буферизация. Зачем нужна буферизация Если бы запись об изменении базы данных, которая должна поступить в журнал при выполнении.
Проф. В.К.Толстых, Технологии разработки Internet- приложений Администрирование IIS 5, 6 сайт, виртуальный каталог, приложение, пул, рабочий.
1 из 4 Данный документ носит исключительно информационный характер. КОРПОРАЦИЯ МАЙКРОСОФТ НЕ ПРЕДОСТАВЛЯЕТ В ЭТОМ ДОКУМЕНТЕ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ.
СУБД Microsoft Access 2003 ЗНАКОМСТВО. Что такое Access? Access – Приложение, входящее в состав пакета Microsoft Office (разработано компанией Microsoft).
Управление памятью. В ИРТУАЛЬНАЯ ПАМЯТЬ Основная идея заключается в разбиении программы на части, и в память эти части загружаются по очереди. Программа.
Базы данных База данных – это информационная модель, позволяющая в упорядоченном виде хранить данные о группе объектов, обладающих одинаковым набором.
Транксрипт:

Enterprise Cache Protocol Федоров Вадим «Школа Инноваций InterSystems 2007»

План Как работает ECP Как настраивать ECP Кое-что о Caché Что такое Enterprise Cache Protocol (ECP) Восстановление после сбоев Что учитывать при разработке приложений Примеры использования ECP

План Как работает ECP Как настраивать ECP Кое-что о Caché Что такое Enterprise Cache Protocol (ECP) Восстановление после сбоев Что учитывать при разработке приложений Примеры использования ECP

Устройство Caché Caché хранит данные и программы в базах данных Caché хранит данные и программы в базах данных База данных состоит из одного или нескольких файлов (cache.dat + extent-ы), которые хранятся на сервере База данных состоит из одного или нескольких файлов (cache.dat + extent-ы), которые хранятся на сервере Сервер Caché управляет несколькими базами данных (до 256 баз данных у одного сервера) Сервер Caché управляет несколькими базами данных (до 256 баз данных у одного сервера)

Устройство Caché Каждый сервер Caché управляет кешом базы данных, в который поднимаются данные, которые запрашивают приложения, работающие с Caché Каждый сервер Caché управляет кешом базы данных, в который поднимаются данные, которые запрашивают приложения, работающие с Caché Каждый сервер Caché управляет кешом программ, в который «поднимаются» программы, запускаемые приложениями, работающими с Caché Каждый сервер Caché управляет кешом программ, в который «поднимаются» программы, запускаемые приложениями, работающими с Caché Данные и программы остаются в кеше пока они не вытесняются новыми данными и программами Данные и программы остаются в кеше пока они не вытесняются новыми данными и программами При перезагрузке Caché кеш данных и программ очищается При перезагрузке Caché кеш данных и программ очищается Кеширование значительно увеличивает производительность Caché Кеширование значительно увеличивает производительность Caché

Устройство Caché Приложения работают с данными и программами через области (Namespace) Приложения работают с данными и программами через области (Namespace) Область – логическое объединение данных и программ, которые хранятся в одной или нескольких базах данных Область – логическое объединение данных и программ, которые хранятся в одной или нескольких базах данных В Caché можно гибко настраивать, какие глобалы и программы будут включены в область В Caché можно гибко настраивать, какие глобалы и программы будут включены в область

Устройство Caché Область может объединять данные из нескольких баз данных и несколько областей могут использовать данные из одной базы данных: Область может объединять данные из нескольких баз данных и несколько областей могут использовать данные из одной базы данных: Приложения работают с данными и программами через области независимо от того, где они физически находятся Приложения работают с данными и программами через области независимо от того, где они физически находятся Администратор Caché может прозрачно для приложений и пользователей быстро менять физическое местоположение данных и программ Администратор Caché может прозрачно для приложений и пользователей быстро менять физическое местоположение данных и программ Enterprise Cache Protocol позволяет располагать данные и программы и на других серверах Enterprise Cache Protocol позволяет располагать данные и программы и на других серверах

Как увеличить масштабируемость Увеличение мощности сервера Увеличение мощности сервера –SMP –NUMA Кластерные конфигурации Кластерные конфигурации –OpenVMS, Unix Enterprise Cache Protocol Enterprise Cache Protocol

Тестирование совместно с SUN Sun UltraSPARC III optimized with the Forte[tm] Developer 6 Update 2 C++ compiler (now the Sun ONE Studio product line) running the Solaris Operating Environment and InterSystems' Caché 5 supported 10,255 simulated users on a single server. Sun UltraSPARC III optimized with the Forte[tm] Developer 6 Update 2 C++ compiler (now the Sun ONE Studio product line) running the Solaris Operating Environment and InterSystems' Caché 5 supported 10,255 simulated users on a single server. Run Number CPUs Compiler Optimizations Users Caché Version Database References per econd Idle 18Нет , Нет , Нет , Нет , UltraSparc III ,00013

Enterprise Cache Protocol 3 сервера по 8 процессоров 3 сервера по 8 процессоров –Одно и то же приложение –Одна и та же нагрузка –Больше свободных ресурсов 8 CPUs 50% Idle 8 CPUs 5000 users 20% Idle 8 CPUs 5000 Users 20% Idle

План Как работает ECP Как настраивать ECP Кое-что о Caché Что такое Enterprise Cache Protocol (ECP) Восстановление после сбоев Что учитывать при разработке приложений Примеры использования ECP

ECP Server Архитектура ECP ECP-сервер ECP-клиент Приложение

Компоненты ECP ECP-сервер - сервер Caché, который предоставляет данные для одного или нескольких ECP-клиентов (до 254) ECP-сервер - сервер Caché, который предоставляет данные для одного или нескольких ECP-клиентов (до 254) ECP-клиент - сервер Caché, использующий данные одного или нескольких ECP серверов (до 254) ECP-клиент - сервер Caché, использующий данные одного или нескольких ECP серверов (до 254) Сервер Caché может быть одновременно и ECP- сервером, и ECP-клиентом Приложение – информационная система, которая работает с Caché Приложение – информационная система, которая работает с Caché

Использование ECP Приложение работает с ECP-клиентом так же как и с обычным сервером Caché. Можно работать с: Приложение работает с ECP-клиентом так же как и с обычным сервером Caché. Можно работать с: –Классами Caché –SQL –Глобалами –Программами Caché Object Script и Caché BASIC –CSP, SOAP –Интерфейсами к Java, С++, COM и т.д. Разница в том, что Разница в том, что –Некоторые данные приходят с ECP-сервера –Некоторые программы приходят с ECP-сервера

План Как работает ECP Как настраивать ECP Кое-что о Caché Что такое Enterprise Cache Protocol (ECP) Восстановление после сбоев Что учитывать при разработке приложений Примеры использования ECP

Рассмотрим работу ECP ECP-сервер ECP-клиент Приложение

ECP и операция чтения Приложение читает узел глобала Приложение читает узел глобала –$Get,$Order,$Data … ECP-клиент запрашивает узел глобала у ECP-сервера и ждет ответа. ECP-клиент запрашивает узел глобала у ECP-сервера и ждет ответа. –ECP-клиент запрашивает блоки данных синхронно –Точно так же идет работа Caché с локальным диском ECP-сервер обрабатывает запрос ECP-клиента ECP-сервер обрабатывает запрос ECP-клиента ECP-сервер посылает узел глобала и блок, в котором содержится этот узел ECP-сервер посылает узел глобала и блок, в котором содержится этот узел –Узел глобала посылается на ECP-клиент как можно быстрее –Блок может быть послан позже ECP-клиент работает с узлом глобала точно так же, как если бы он поступил с локальной базы данных ECP-клиент работает с узлом глобала точно так же, как если бы он поступил с локальной базы данных

ECP и операция записи Приложение записывает узел глобала Приложение записывает узел глобала –Set, Kill, $Increment, … ECP-клиент проверяет есть ли записываемое значение в кеше ECP-клиента ECP-клиент проверяет есть ли записываемое значение в кеше ECP-клиента –Если блок есть и изменение происходит в рамках этого блока, то он обновляется –Если в результате изменения произойдет разделение блока (block split), то блок помечается как устаревший (discarded) и информация об этом посылается на ECP- сервер ECP-клиент асинхронно посылает изменения узла глобала на ECP-сервер ECP-клиент асинхронно посылает изменения узла глобала на ECP-сервер –Клиентский процесс не останавливается так как процесс уведомления ECP-сервера асинхронный –Процесс записи аналогичен записи в локальный кэш сервера Caché ECP-сервер получит и обработает изменение узла глобала ECP-сервер получит и обработает изменение узла глобала Если измененный блок используют другие ECP-клиенты, то ECP-сервер уведомляет их том, что блоки, которые хранятся в их кеше, устарели Если измененный блок используют другие ECP-клиенты, то ECP-сервер уведомляет их том, что блоки, которые хранятся в их кеше, устарели

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

Обновления без блокировок Блокировки защищают данные от одновременных обновлений Блокировки защищают данные от одновременных обновлений ECP-сервер ECP-клиент 2 ECP-клиент 1 Считываем x x=3 Считываем x x=3 Пишем x x=4 Пишем x x=5 Обновление 1 (Прибавить 1 к «x») Обновление 2 (Прибавить 2 к «x»)

Обновления с блокировками Блокировки обеспечивают работу с «правильными» данными Блокировки обеспечивают работу с «правильными» данными ECP-сервер ECP-клиент 2 ECP-клиент 1 Lock x Считываем x x=3 Lock x Считываем x x=4 Пишем x x=4 Unlock x Пишем x x=6 Unlock x Обновление 1 (Прибавить 1 к «x») Обновление 2 (Прибавить 2 к «x»)

Оптимизация блокировок ECP-сервер координирует блокировки ECP-сервер координирует блокировки ECP-сервер может на короткое время делегировать управление блокировками ECP- клиенту ECP-сервер может на короткое время делегировать управление блокировками ECP- клиенту –Если запрашиваемой блокировки не существует на ECP-сервере, то она создается и управление этой блокировкой передается на ECP-клиент –Если запрашиваемая блокировка существует на ECP-сервере, но она может быть создана, то управление этой блокировкой передается на ECP-клиент –Если на ECP-сервере есть локальная блокировка или блокировкой управляет другой ECP-клиент, то ECP-клиент ожидает ответа ECP-клиент управляет блокировкой (аналогично локальному серверу Caché) пока ECP-клиент управляет блокировкой (аналогично локальному серверу Caché) пока –Есть очередь на эту блокировку, порожденную локальными процессами –Количество операций с этой блокировкой меньше заданной (максимум 60) Управление передается обратно на ECP-сервер и может быть передано другим ECP-клиентам Управление передается обратно на ECP-сервер и может быть передано другим ECP-клиентам

ECP и транзакции Транзакция начинается на ECP-клиенте Транзакция начинается на ECP-клиенте Если затрагиваются данные, которые находятся на ECP-сервере, то Если затрагиваются данные, которые находятся на ECP-сервере, то –В таблицу ECP-транзакций попадает информация о изменяемых данных –На ECP-сервер посылается сообщение о старте транзакции ECP-сервер получает информацию о транзакции на ECP-клиенте и стартует соответствующую транзакцию ECP-сервер получает информацию о транзакции на ECP-клиенте и стартует соответствующую транзакцию ECP-сервер поддерживает таблицу локальных транзакций, созданных по запросам ECP-клиентов ECP-сервер поддерживает таблицу локальных транзакций, созданных по запросам ECP-клиентов ECP-клиент посылает сообщение о завершении транзакции ECP-клиент посылает сообщение о завершении транзакции ECP-сервер завершает соответствующую локальную транзакцию и стирает запись о ней в таблице локальных транзакций ECP-сервер завершает соответствующую локальную транзакцию и стирает запись о ней в таблице локальных транзакций Поддержка транзакций устойчива с сбоям ECP-сервера Поддержка транзакций устойчива с сбоям ECP-сервера Рекомендуемая конфигурация – один ECP-сервер и любое количество ECP-клиентов Рекомендуемая конфигурация – один ECP-сервер и любое количество ECP-клиентов

Оптимизация производительности Для оптимизации и ECP-сервер, и ECP-клиент объединяют небольшие ECP- сообщения (запрос на блокировку, освобождение блокировки, информация о том, что блок устарел и т.д.) в одно сообщение Для оптимизации и ECP-сервер, и ECP-клиент объединяют небольшие ECP- сообщения (запрос на блокировку, освобождение блокировки, информация о том, что блок устарел и т.д.) в одно сообщение –ECP минимизирует количество сообщений, избегая длительной задержки сообщений –Синхронные и асинхронные сообщения обрабатываются по-разному

Кеширование блоков ECP кэширует блоки на ECP-клиенте ECP кэширует блоки на ECP-клиенте –Так же как локальный сервер кеширует используемые блоки в памяти Блок, который содержит запрашиваемый узел глобала может быть направлен на ECP-сервер сразу же вместе с узлом глобала или через некоторое время Блок, который содержит запрашиваемый узел глобала может быть направлен на ECP-сервер сразу же вместе с узлом глобала или через некоторое время ECP-клиент поддерживает кэш блоков, который используют приложения, работающие с ECP-клиентом ECP-клиент поддерживает кэш блоков, который используют приложения, работающие с ECP-клиентом

Согласованность данных в ECP-системе Необходимо поддерживать согласованность данных в ECP-системе Необходимо поддерживать согласованность данных в ECP-системе Записи на ECP-клиенте передаются асинхронно на ECP-сервер Записи на ECP-клиенте передаются асинхронно на ECP-сервер ECP-сервер поддерживает таблицу ECP-клиентов ECP-сервер поддерживает таблицу ECP-клиентов –В таблице хранится список кешированных блоков на ECP-клиентах Когда ECP-сервер записывает блок он он проверяет есть ли этот блок в кэше Когда ECP-сервер записывает блок он он проверяет есть ли этот блок в кэше –Если есть, то ECP-сервер посылает информацию о том, что блок «устарел» на соответствующие ECP-клиенты ECP следит за порядком блокировок, записей и устареванием блоков ECP следит за порядком блокировок, записей и устареванием блоков –Гарантируется когерентность данных в ECP-системе

План Как работает ECP Как настраивать ECP Кое-что о Caché Что такое Enterprise Cache Protocol (ECP) Восстановление после сбоев Что учитывать при разработке приложений Примеры использования ECP

Настройка ECP Для настройки ECP в Портале управления системой есть закладка «ECP настройки» ( [Домашняя страница] > [Конфигурация] > [ECP настройки] ) Для настройки ECP в Портале управления системой есть закладка «ECP настройки» ( [Домашняя страница] > [Конфигурация] > [ECP настройки] )

Конфигурация ECP-сервера Включите сервис %Service_ECP ( [Домашняя страница] > [Управление безопасностью] > [Сервисы] > [Редактировать сервис] ) Включите сервис %Service_ECP ( [Домашняя страница] > [Управление безопасностью] > [Сервисы] > [Редактировать сервис] ) Перезапустите Caché Перезапустите Caché ECP-сервер готов устанавливать соединения с ECP-клиентами ECP-сервер готов устанавливать соединения с ECP-клиентами

Ограничение доступа ECP-клиентов В Портале управления системой можно ограничить доступ ECP- клиентов к ECP-серверу В Портале управления системой можно ограничить доступ ECP- клиентов к ECP-серверу Можно указать: Можно указать: –Допустимые IP-адреса ECP- клиентов –Роли для соединения каждого ECP-клиента с ECP-сервером Обратите внимание на соответствие привилегий ролей соединения и ролей на ECP-клиенте (сервере приложений)! Обратите внимание на соответствие привилегий ролей соединения и ролей на ECP-клиенте (сервере приложений)!

Конфигурация ECP-клиента В Портале управления системой ECP-клиента (сервера приложений ECP) необходимо добавить информацию о ECP-сервере ( [Домашняя страница] > [Конфигурация] > [ECP настройки] ) В Портале управления системой ECP-клиента (сервера приложений ECP) необходимо добавить информацию о ECP-сервере ( [Домашняя страница] > [Конфигурация] > [ECP настройки] ) Нужно указать: Нужно указать: –Имя ECP-сервера –Адрес сервера (IP-адрес или имя DNS) –Номер порта

Конфигурация ECP-клиента Перезапустите Caché для активации изменений Перезапустите Caché для активации изменений ECP-клиент сконфигурирован ECP-клиент сконфигурирован ECP-клиент установит соединение с ECP-сервером, когда это будет необходимо ECP-клиент установит соединение с ECP-сервером, когда это будет необходимо

Настройка удаленной базы данных сервера приложений ECP Сервер приложений ECP (ECP-клиент) должен быть настроен на работу с сервером данных ECP (ECP- сервером) Сервер приложений ECP (ECP-клиент) должен быть настроен на работу с сервером данных ECP (ECP- сервером) Создайте новую удаленную базу данных на сервере приложений ECP (база данных физически расположена на сервере данных ECP) Создайте новую удаленную базу данных на сервере приложений ECP (база данных физически расположена на сервере данных ECP) На сервере приложений ECP создайте область, данные и программы которой хранятся в удаленной базе данных на сервере данных ECP На сервере приложений ECP создайте область, данные и программы которой хранятся в удаленной базе данных на сервере данных ECP

Настройка удаленной базы данных сервера приложений ECP В портале управления системой ( [Домашняя страница] > [Конфигурация] > [Удаленные базы данных] ) создайте новую удаленную базу данных В портале управления системой ( [Домашняя страница] > [Конфигурация] > [Удаленные базы данных] ) создайте новую удаленную базу данных Выберите сервер данных ECP Выберите сервер данных ECP Выберите каталог БД на сервере данных ECP Выберите каталог БД на сервере данных ECP Укажите имя удаленной БД на сервере приложений ECP Укажите имя удаленной БД на сервере приложений ECP

Состояния ECP-соединения Каждое ECP-соединение может иметь различный статус: Каждое ECP-соединение может иметь различный статус: –Not connected –Normal –Disabled –Trouble –Connection in Progress

Состояния ECP-соединения Not Connected Not Connected –Соединение определено, но еще не используется –ECP «демоны» для соединения не запущены. Если клиентский процесс обращается к серверу, «демоны» создаются для этого соединения и соединение переходит в состояние Connection In Progress

Состояния ECP-соединения Connection in Progress Connection in Progress –В процессе установки соединения –Сетевые «демоны» существуют и активно пытаются установить новое соединение –Это переходное состояние, которое существует пока соединение не установлено

Состояния ECP-соединения Normal Normal –Соединение функционирует нормально и недавно использовалось –«Демоны» на ECP-клиенте существуют и активно посылают запросы и получают ответы по сети –Состояние существует пока соединение не станет неработающим или будет закрыто

Состояния ECP-соединения Disabled Disabled –Соединение отключено системным администратором –«Демонов» нет –Приложения, использующие это соединение, получают ошибку –Приложения, использующие это соединение, получают ошибку

Состояния ECP-соединения Trouble Trouble –Соединение встретилось с проблемой –Соединение пытается автоматически исправить ситуацию –После исправления соединение переходит в состояние Not Connected или Normal

План Как работает ECP Как настраивать ECP Кое-что о Caché Что такое Enterprise Cache Protocol (ECP) Восстановление после сбоев Что учитывать при разработке приложений Примеры использования ECP

Восстановление после сбоев ECP может автоматически восстанавливать разорванное соединение между ECP-клиентом и ECP-сервером ECP может автоматически восстанавливать разорванное соединение между ECP-клиентом и ECP-сервером –Состояние соединения устанавливается «Trouble» –ECP-клиент пытается заново установить соединение с ECP-сервером

Соединение восстанавливается Состояние соединения переводиться в «Normal» Состояние соединения переводиться в «Normal» Все блокировки восстанавливаются в состояние перед разрывом соединения Все блокировки восстанавливаются в состояние перед разрывом соединения Все транзакции восстанавливаются в состояние перед разрывом соединения Все транзакции восстанавливаются в состояние перед разрывом соединения

Соединение не восстанавливается Соединение переводится в состояние «Not Connected» Соединение переводится в состояние «Not Connected» Все блокировки на сервере, которые относятся к потерянному ECP-клиенту, освобождаются Все блокировки на сервере, которые относятся к потерянному ECP-клиенту, освобождаются Все открытые транзакции, которые относятся к потерянному ECP-клиенту, откатываются Все открытые транзакции, которые относятся к потерянному ECP-клиенту, откатываются

Восстановление ECP-соединения В Портале управления системой задаются параметры восстановления ECP В Портале управления системой задаются параметры восстановления ECP Интервал времени на «проблемное» состояние (Server side wait interval) – сколько времени соединение будет в состоянии «Trouble» перед тем, как ECP-сервер объявит его мертвым (По- умолчанию, 60 секунд) Интервал времени на «проблемное» состояние (Server side wait interval) – сколько времени соединение будет в состоянии «Trouble» перед тем, как ECP-сервер объявит его мертвым (По- умолчанию, 60 секунд) Интервал попыток восстановить соединение (по-умолчанию, 5 секунд) Интервал попыток восстановить соединение (по-умолчанию, 5 секунд) Продолжительность ожидания на клиенте серверного восстановления (Client side wait interval) (по-умолчанию, 20 минут) Продолжительность ожидания на клиенте серверного восстановления (Client side wait interval) (по-умолчанию, 20 минут)

Восстановление ECP-соединения ECP-сервер и ECP-клиент ожидают восстановления связи разное время: по- умолчанию, 60 секунд и 20 минут ECP-сервер и ECP-клиент ожидают восстановления связи разное время: по- умолчанию, 60 секунд и 20 минут ECP-сервер «сдается» быстрее, чтобы освободить ресурсы ECP-сервер «сдается» быстрее, чтобы освободить ресурсы ECP-клиент ждет дольше, пытаясь увеличить шансы успешного восстановления соединения ECP-клиент ждет дольше, пытаясь увеличить шансы успешного восстановления соединения

Восстановление ECP-соединения При сбое сервера при перезагрузке ECP-сервер: При сбое сервера при перезагрузке ECP-сервер: –Пытается переустановить активные соединения –Разрешает восстановление блокировок, которые запрашивались ECP-клиентами –Заново обрабатывает запросы, которые поступили на ECP- сервер, но о которых не уведомили ECP-клиент –Объявить, что соединения «мертвыми» для всех клиентов, которые не отвечают и откатить транзакции, которые относятся к этим клиентам

Восстановление ECP-соединения При сбое на ECP-клиенте При сбое на ECP-клиенте –ECP-сервер объявляет соединение «мертвым» –Все открытые транзакции, относящиеся к клиенту откатываются, и все блокировки освобождаются –Во время восстановления ECP-клиент еще раз передает информацию о транзакциях и блокировках на ECP-сервер –Процессы ECP-клиент обрабатываются как обычно, за исключением небольшой задержки

Восстановление ECP-соединения При проблемах с сетью При проблемах с сетью –ECP-сервер ждет 60 секунд и объявляет соединение мертвым –ECP-клиент пытается восстановить соединение с ECP-сервером заданное время (20 минут), если это невозможно, объявляет соединение «мертвым»

Восстановление ECP-соединения Если ECP-клиент объявляет соединение «мертвым»: Если ECP-клиент объявляет соединение «мертвым»: –Соединение не может быть восстановлено –ECP-клиент откатит все транзакции и освободит все блокировки, которые имеют отношение к ECP-серверу –Если клиенты ECP-клиента ожидают данные, они получат ошибку –Если клиенты ECP-клиента ожидают данные, они получат ошибку –Следующий запрос ECP-клиента заново установит соединение с ECP-сервером

Ограничение ECP Если транзакция затрагивает данные, которые хранятся на нескольких ECP-серверах, то существует возможность, что если произойдет сбой на вовлеченном в транзакцию ECP-сервере, и если этот ECP-сервер не восстановится за заданное время (20 минут), то транзакции будут завершены некорректно (ни commit, ни rollback) Если транзакция затрагивает данные, которые хранятся на нескольких ECP-серверах, то существует возможность, что если произойдет сбой на вовлеченном в транзакцию ECP-сервере, и если этот ECP-сервер не восстановится за заданное время (20 минут), то транзакции будут завершены некорректно (ни commit, ни rollback) Вывод Вывод –Использовать один ECP-сервер для данных –Размещать данные так, чтобы в транзакции попадали данные только одного ECP-сервера

План Как работает ECP Как настраивать ECP Кое-что о Caché Что такое Enterprise Cache Protocol (ECP) Восстановление после сбоев Что учитывать при разработке приложений Примеры использования ECP

Разработка приложений с учетом ECP ECP – это прежде скорее технология развертывания приложения, которая позволяет менять конфигурацию работающего приложения ECP – это прежде скорее технология развертывания приложения, которая позволяет менять конфигурацию работающего приложения Для того чтобы наиболее эффективно использовать ECP необходимо учесть ряд моментов во время проектирования и разработки приложений Для того чтобы наиболее эффективно использовать ECP необходимо учесть ряд моментов во время проектирования и разработки приложений

Производительность – функция $Data Функция $Data над неопределенной глобалью всегда требует запроса к ECP-серверу, чтобы проверить есть ли такая глобаль Функция $Data над неопределенной глобалью всегда требует запроса к ECP-серверу, чтобы проверить есть ли такая глобаль Выполнение $Data над неопределенным узлом глобала не требует обращения к ECP-серверу, если глобал находится в кэше ECP-клиента Выполнение $Data над неопределенным узлом глобала не требует обращения к ECP-серверу, если глобал находится в кэше ECP-клиента

Производительность – «Большие» строки Существует особенность обработки в ECP «больших строк» (755 символов для 2 k БД и 1996 символов для 8 k БД (используется в Caché по умолчанию)) Существует особенность обработки в ECP «больших строк» (755 символов для 2 k БД и 1996 символов для 8 k БД (используется в Caché по умолчанию)) Узлы глобалов, содержащие «большие» строки не хранятся в кеше ECP-клиента Узлы глобалов, содержащие «большие» строки не хранятся в кеше ECP-клиента Каждый запрос «большой строки» требует обращения к ECP-серверу Каждый запрос «большой строки» требует обращения к ECP-серверу

Производительность – функция $Increment $Increment автоматически увеличивает счетчик без блокировки на уровне приложения $Increment автоматически увеличивает счетчик без блокировки на уровне приложения –Функция $Increment реализована на уровне ядра Caché Каждый $Increment требует обращения к ECP-серверу Каждый $Increment требует обращения к ECP-серверу Иногда имеет смысл переделать приложение так, чтобы $Increment использовал данные, которые хранятся на ECP- клиенте Иногда имеет смысл переделать приложение так, чтобы $Increment использовал данные, которые хранятся на ECP- клиенте

Производительность - дополнительно Временные глобалы должны по возможности находиться на сервере приложений ECP Временные глобалы должны по возможности находиться на сервере приложений ECP Распределение нагрузки между серверами приложения ECP и кеширование данных Распределение нагрузки между серверами приложения ECP и кеширование данных Дополнительная память в кеше данных для системных структур ECP Дополнительная память в кеше данных для системных структур ECP

Настройка производительности ECP Сервера Caché должны быть правильно настроены Сервера Caché должны быть правильно настроены Производительность ECP очень сильно зависит от производительности сети Производительность ECP очень сильно зависит от производительности сети –Необходимо осуществлять мониторинг сети Производительность зависит от многих факторов Производительность зависит от многих факторов –Как приложение использует данные –Как приложение использует блокировки –Использование «больших» строк Кеширование Кеширование –Размер кеша данных и программ на сервере данных и сервере приложений ECP-сервере

Настройка производительности ECP Кеширование – очень сильно увеличивает производительность ECP Кеширование – очень сильно увеличивает производительность ECP Кеш данных Кеш данных –Желательно, чтобы кэш ECP-сервера содержал все данные, которые запрашивают ECP-клиенты. Иначе, к времени доставки на ECP- клиент добавится время доступа к диску ECP-сервера –Кеш ECP-клиента должен достаточным для данных, с которыми работают приложения. Иначе, данные придется часто убирать из кеша ECP-клиента и повторно запрашивать с ECP-сервера Кеш программ Кеш программ –Если ECP-клиент запрашивает программы у ECP-сервера, то для них нужно сконфигурировать буфер программ и на ECP- сервере и на ECP-клиенте

Обработка ошибки Если ECP не может восстановить соединение возникает ошибка Если ECP не может восстановить соединение возникает ошибка Желательно, чтобы приложения умели обрабатывать эту ошибку Желательно, чтобы приложения умели обрабатывать эту ошибку Основная идея обработки – откатить транзакцию и попробовать выполнить её заново Основная идея обработки – откатить транзакцию и попробовать выполнить её заново Некоторые операции ($Data или $Order) можно попробовать повторить, не откатывая транзакцию Некоторые операции ($Data или $Order) можно попробовать повторить, не откатывая транзакцию

План Как работает ECP Как настраивать ECP Кое-что о Caché Что такое Enterprise Cache Protocol (ECP) Восстановление после сбоев Что учитывать при разработке приложений Примеры использования ECP

НОВАТЭК. Опыт использования ECP ОАО «НОВАТЭК» занимается разведкой, добычей и переработкой природного газа и жидких углеводородов ОАО «НОВАТЭК» занимается разведкой, добычей и переработкой природного газа и жидких углеводородов На Caché разработана система финансового учета На Caché разработана система финансового учета Распределенная конфигурация: Распределенная конфигурация: –1 ECP-сервер –5 ECP-клиентов в России, Великобритании, Швейцарии

ЛЕТОГРАФ. Опыт использования ECP ЛЕТОГРАФ – партнер-разработчик InterSystems ЛЕТОГРАФ – партнер-разработчик InterSystems Система ЛЕТОГРАФ – портальная система для автоматизации документооборота и бизнес-процессов Система ЛЕТОГРАФ – портальная система для автоматизации документооборота и бизнес-процессов Для увеличения производительности, масштабируемости и доступности система может развертываться на ECP-кластере Для увеличения производительности, масштабируемости и доступности система может развертываться на ECP-кластере

ЛЕТОГРАФ. Опыт использования ECP

Настройка ECP-конфигурации для CSP- приложения

ECP Server Архитектура ECP ECP-сервер ECP-клиент Приложение

Итог по ECP ECP позволяет создавать много серверные конфигурации Caché ECP позволяет создавать много серверные конфигурации Caché Прозрачен для большинства приложений Прозрачен для большинства приложений Позволяет добиться высокой производительности и масштабируемости Позволяет добиться высокой производительности и масштабируемости Гарантирована согласованность данных Гарантирована согласованность данных ECP восстанавливается после сбоев ECP восстанавливается после сбоев ECP легко настраивать и сопровождать ECP легко настраивать и сопровождать ECP может объединять сервера Caché на разных платформах ECP может объединять сервера Caché на разных платформах

Дополнительная информация по ECP Документация СУБД Caché Документация СУБД Caché Документация по администрированию Caché 5.2 на русском языке Документация по администрированию Caché 5.2 на русском языке Документация системных классов ECP Документация системных классов ECP

Спасибо за внимание! Вопросы? Вадим Федоров «Школа Инноваций InterSystems 2007»