Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ободяк 3 курс / РСтаМ-том1-2011.docx
Скачиваний:
128
Добавлен:
19.04.2015
Размер:
8.73 Mб
Скачать
      1. Розподілені події

При розробці програмного забезпечення досить часто виникає потреба одержувати повідомлення про які-небудь події, що виникають асинхронно, тобто в деякі довільні моменти часу. У розподілених системах також виникає необхідність використання таких повідомлень, що одержуються від віддаленої системи. Можна виділити два підходи до обробки подій: тіснозв'язні й слабкозв’язні події. При тіснозв'язній події відбувається пряме повідомлення однієї сторони іншою стороною. Хоча цей метод можна використовувати, наприклад, разом з односпрямованим асинхронним викликом, йому властивий ряд недоліків, що обмежують його застосування в розподілених системах:

  • обидві компоненти системи повинні виконуватися одночасно;

  • для повідомлення декількох компонент про одну подію стороною, що повідомляє, повинні використовуватися механізми для ведення списку одержувачів подій;

  • утруднена фільтрація або протоколювання подій.

Тому в розподілених системах також застосовуються слабкозв’язні події, коли джерела події (видавці) не взаємодіють прямо з одержувачами подій (передплатниками). Проміжне середовище в цьому випадку повинне надати сервіс, що дозволяє передплатникові підписатися на будь-яку подію або відмовитися від підписки, а видавцеві – ініціювати подію для розсилання передплатникам (рис. 2.46).

Рис. 2.46  Передплатники й видавці слабкозв’язних подій

При використанні слабкозв’язних подій передплатники, видавці й менеджер подій можуть розташовуватися на різних комп'ютерах. Сама подія може бути реалізована як, наприклад, виклик менеджером подій деякого зареєстрованого методу віддаленого об'єкта.

      1. Розподілені транзакції

Транзакція– послідовність операцій з якими-небудь даними, що або успішно виконується повністю, або не виконується взагалі. У випадку неможливості успішно виконати всі дії відбувається повернення до первісних значень всіх змінених протягом транзакції даних (відкіт транзакції). Транзакція повинна мати наступні якості:

  • атомарність. Транзакція виконується за принципом "все або нічого";

  • погодженість. Після успішного завершення або відкоту транзакції всі дані перебувають у погодженому стані, їхня логічна цілісність не порушена;

  • ізоляція. Для об'єктів поза транзакцією не видні проміжні стани, які можуть приймати дані, що змінюються в транзакції. З погляду "зовнішніх " об'єктів, до успішного завершення транзакції вони повинні мати той же стан, у якому перебували до її початку;

  • сталість. У випадку успішності транзакції зроблені зміни повинні мати постійний характер (тобто збережені в енергонезалежній пам'яті).

Рис. 2.47  Розподілена транзакція

Транзакції є основою прикладних програм, що працюють із базами даних, однак у розподіленій системі може бути недостатньо використання тільки транзакцій систем управління базами даних. Наприклад, у розподіленій системі в транзакції може брати участь кілька розподілених компонент, що працюють із декількома незалежними базами даних (рис. 2.47).

Розподіленоюназивається транзакція, що охоплює операції декількох взаємодіючих компонент розподіленої системи. Кожна із цих компонент може працювати з якими-небудь СУБД або іншими службами, наприклад, використовувати черги повідомлень, або навіть працювати з файлами. При відкоті транзакції всі ці операції повинні бути скасовані. Для цього необхідно виконання двох умов:

  • проміжне середовище повинне підтримувати управління розподіленими між декількома компонентами транзакціями;

  • компоненти розподіленої системи не повинні працювати з якими-небудь службами або ресурсами, які не можуть брати участь у транзакції.

Розподілені транзакції є найважливішим елементом підтримки цілісності даних у розподіленій системі. Тому для їх ширшого застосування проміжне середовище може містити механізми, які при необхідності (і певних витратах часу на написання коду) дозволять використовувати в розподілених транзакціях зовнішні служби, що не підтримують транзакції. Такий механізм називається менеджером, що компенсує ресурс(compensating resource manager). Компенсація в цьому випадку означає повернення ресурсу до первісного стану при відкоті транзакції.

У цей час відбувається формування й стандартизація ще одного поняття, пов'язаного з підтримкою цілісності даних – господарської діяльності (business activity) стосовно до розподілених систем. Діяльність звичайно є відображенням деякого реального процесу, наприклад, покупки в магазині: від оформлення замовлення до підтвердження доставки кур'єром. Діяльність може містити в собі транзакції (оформлення замовлення покупця, замовлення товару у постачальника, і так далі – до підтвердження покупцем доставки). На відміну від транзакції, час життя якої передбачається коротким, діяльність може тривати довго (наприклад, місяць). Діяльність може підтримувати скасування зроблених змін (наприклад, оформлення повернення товару постачальнику при відмові покупця) шляхом використання завдань, що компенсують.

Соседние файлы в папке Ободяк 3 курс