1 / 70

Enterprise Cache Protocol

Enterprise Cache Protocol. Федоров Вадим «Школа Инноваций InterSystems 2007». План. Кое-что о Caché. Что такое Enterprise Cache Protocol (ECP). Как работает ECP. Как настраивать ECP. Восстановление после сбоев. Что учитывать при разработке приложений. Примеры использования ECP.

alvaro
Download Presentation

Enterprise Cache Protocol

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

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

  9. Тестирование совместно с 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. • http://wwws.sun.com/software/sundev/success/intersystems.html

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

More Related