Толеранција на неправилности Карактеристична особина на дистрибуираните системи според која се разликуваат од единичните машини е поимот на парцијални неправилности. Парцијална неправилност може да се случи кога една компонента на дистрибуираниот систем откаже. Оваа неправилност може да влијае врз правилното извршување на други компоненти, додека во исто време можат да постојат компоненти кој нема да бидат засегнати од оваа неправилност. За разлика од тоа, кај единичните системи доколку се појави неправилност, може да дојде до нестабилност на ниво на целиот систем.

Важна цел кај дизајнирањето на дистрибуираните системи е да се конструира таков систем што би можел автоматски да се оправи од парцијална неправилност без сериозни последици на вкупните перформанси. Кога ќе се случи некоја неправилност, добро дизајниранот дистрибуиран систем треба да продолжи со својата работа на некој прифатлив начин додека траат поправките, односно, треба да има толеранција на неправилности.

Основни концепти За еден дистрибуиран систем да биде толерантен кон неправилности потребно е да биде нешто што се нарекува „сигурен систем“. Сигурноста е термин кој покрива голем број на корисни барања кај дистрибуираните системи вклучувајќи: достапност, постојаност, безбедност и одржливост.

Достапноста се дефинира како особина која дозволува еден систем да може да се користи во било кое време. Исто така достапноста означува и дека еден систем функционира правилно во било кој момент и е во состојба да ги извршува барањата од страна на корисниците. Со други зборови, достапен систем е оној кој би бил во функција во дадено време.

Постојаноста е особина која му овозможува на системот да работи континуирано без неправилности. За разлика од достапноста, постојаноста е дефинирана во смисла на временски интервал наместо на момент во времето. Високо постојан систем е оној кој би продолжил да работи без прекин за време на релативно долг период. Ако системот е неупотреблив една милисекунда секој час, достапноста изнесува 99.9999 %, но сепак тој е непостојан. Спротивно на ова, еден систем кој никогаш не станува неупотреблив, но секој август се гаси на 2 недели поради одржување, има висок степен на постојаност, но само 96 % достапност.

Безбедноста се однесува на ситуација кога системот не работи правилно но сепак ништо катастрофално не се случува. На пример, кај системите со многу процеси, како системите во атомските централи или вселенските станици, се бара нивото на безбедност да биде високо. Доколку таквите системи престанат со правилна работа барем и на краток временски период, последиците можат да бидат катастрофални. Високото ниво на безбедност спречува, при пад на системот, последиците да бидат минимални.

Одржливоста се однесува на тоа колку лесно може да се поправи еден оштетен систем. Високо одржлив систем може да покаже висок степен на достапност, особено ако неправилностите можат да се дознаат и поправат автоматски. Сепак автоматското поправање на неправилностите е многу тешко.

За еден систем се вели дека е неупотреблив или паднат, кога не може да ги оствари своите должности. Поточно, кога еден систем е дизајниран да им овозможи голем број на услуги на корисниците, системот е неупотреблив или паднат кога нема да можат да се пружат една или повеќе услуги. Грешка претставува дел од состојбата на системот која може да води до неправилност на системот, односно негово откажување.

Градењето на сигурни системи е тесно поврзана со контролирањето на неправилностите. Постои разлика помеѓу спречување, отстранување и прогнозирање на грешки.

Грешките се класифицираат како минливи, повремени и постојани.

Минливите грешки се случуваат еднаш а потоа исчезнуваат. Повремените грешки се случуваат па потоа исчезнуваат, па по некое време повторно ќе се случат. Постојаните грешки постојат сè додека неправилната компонента не се замени, пример е изгорен чип или софтверска грешка.

Модели на неправилности

Системот којшто не функуцинора не ги овозможува услугите поради кои бил дизајниран, односно опслужувачите, комуникациските канали, или во некои случаи и двата, не ги извршуваат своите задачи. Во дистрибуираните системи, постојат таканаречени релации на зависност, односно функционирањето на една компонента зависи од функционирањето на друга. Постојат повеќе класификациски шеми за типовите на неправилности, меѓу кои и шемите опишани во „Cristian“ (1991) и „Hadzilacos and Toueg“ (1993):

Пад на системот Изоставување При примање При испраќање Временска грешка Грешка при одговор Вредносна грешка Грешка во транзиција Арбитражна грешка

Нај сериозни се арбитражните неправилности, исто така познати и како „Византиски неправилности“. Пример, еден опслужувач може да дава излезни податоци што всушност никогаш не ни требал да ги даде, но истите не можат да се откријат дека се неточни. Во некој ситуации може да се наиде на сценарио кога еден малициозен опслужувач соработува со други малициозни опслужувачи за да даваат неправилни податоци.

Маскирање на неправилностите со редундантност

Ако еден систем е толерантен кон неправилности, тогаш тој треба да се потруди да ги скрие неправилностите од другите процеси. Главната техника која се користи при маскирање на неправилностите е редундантноста. Постојат три типа на редундантност:

Информациска Временска Физичка

Кај информациската редундантност, дополнителни битови се додаваат за полесно оправување од неправилни битови. Пример, на пратените податоци може да се додаде Хамингов код за оправување од шум на линијата за пренос.

Кај временската редундантност една акција може да се повторува повеќепати. Пример ако некоја трансакција откаже, истата може да се повтори без да се нанесе штета. Временската редундантност е од помош особено кај повремените и минливите неправилности.

Кај физичката редундантност, дополнителни опреми или процеси се пуштаат во употреба за да се намали недостатокот од не функционирањето на некоја друга компонента. Физичката редундантност може да се изврши со додавање на хардверски или софтверски делови. Оваа редундантност со години се користи кај струјните кола.

Еластичност на процеси

Со помош на реплицирање на идентични процеси во групи, се намалува можноста од неправилна работа на процесите. Главната особина на ова организирање е кога се испраќа порака до самата група, сите процеси (членови) ја примаат. На овој начин, ако еден процес од групата откаже, некој друг процес може да ја преземе работата. Групите на процеси можат да бидат дунамични, односно можат да се создаваат нови групи, а старите да се уништуваат. Еден процес може да се придружи на нова група или да ја напушти за време на операциите. Исто така, еден процес може да биде член на повеќе групи во исто време.

Процесите се претставуваат на групи. Еден процес може да испрати порака до група на опслужувачи, без притоа да знае кои се тие опслужувачи, колку се на број или каде се наоѓаат. Во некои групи процесите се еднакви меѓусебно и колективно донесуваат одлуки, додека во други групи постојат процеси кои се главни координатори, односно групи каде има хиерархиска поделеност.

Двата типа на организација имаат свои предности и недостатоци. Кај првата група односно рамната група на процеси е симетрична и нема единствена точка на неправилност. Ако еден од процесите откаже, групата едноставно станува помала но може да продолжи со својата работа. Недостаток е тоа што донесувањето на одлуки е комплексна ситуација, која најчесто се решава со гласање, кое одзема време и ресурси. Кај хиерархиската група имаме спротивни својства. Доколку откаже координаторот на групата, целата група ќе престане со работа. Но додека групата е функционална, нема потреба од дополнителни ресурси и време за гласање.

Потребно е постоење на некој метод кој ќе биде одговорен за создавање и бришење на групи, како и некој кој ќе дозволува процесите да можат да напуштаат групи и да се приклучуваат на нови. Еден начин е да се има опслужувач за групи, на којшто ќе му се испраќаат сите побарувања. опслужувачот за групи потоа ќе може да чува своја база на податоци за сите групи и нивните членови. Методот е ефикасен и лесен за имплементација, меѓутоа тој има една точка на неправилност. Ако опслужувачот падне, менаџирањето на групите ќе престане да постои, со што може да се случи сите групи да треба да бидат структурирани од почеток како и да се изгуби работата што претходно ја извршувале. Спротивно на ова, менаџирањето на групите може да се извршува на дистрибуиран начин. Пример, ако еден процес сака да се приклучи на некоја група, може да испрати мултикаст до сите групи и да најави дека сака да се приклучи кон некоја. Спротивно на ова, доколку сака да напушти некоја група, потребно е да испрати порака за напуштање до сите. Но во практиката тоа не е толку едноставно, бидејќи процес кој ќе откаже не секогаш испраќа порака дека ќе биде надвор од употреба. Другите членови мораат сами да откријат дека еден од процесите откажал, на тој начин што ќе приметат дека процесот престанал да одговара. Откако ќе откријат, можат да го исфрлат од групата. Исто така, пристапувањето и напуштањето на групите мора да биде синхронизирано со податочните пораки кои се испраќаат. Постои уште една непрвилност кај менаџирањето со групи, а тоа е дека мора да постои некој протокол кој ќе ги изгради од почеток групите, кога повеќе машини ќе престанат да функционираат. Некои од процесите мора сами да ја преземат иницијативата.

Маскирање на неправилности и репликација

Групирањето на процеси овозможува маскирање на процеси со неправилност со тоа што ќе се сокријат во групата. Со други зборови може да се реплицираат процесите и да се организираат во групи за да се намали штетното влијание на самостоен процес и да се смести во група која е толерантна на неправилности. Постојат два начина за ваква репликација: Првиот начин претставува создавање на резервни процеси кај хиерархиски поделените групи. Кога координаторот ќе откаже неговата работа се предава на друг процес, кој се одбира со помош на алгоритам. Вториот начин е со користење на активна репликација кај рамните групи на процеси.

Главниот проблем кога се користи репликација за толеранција за неправилности, е да се одлучи колку репликација е потребно. Кај вториот случај на активна репликација кај рамните групи на процеси, кога еден процес ќе откаже потребни се k+1 процеси за да се овозможи k толерантна група.

Од друга страна доколку имаме Византиска неправилност, потребни се 2k+1 репликации за да се овозможи k толерантна група.

Детекција на неправилности

Покрај тоа што некои неправилности можат да се маскираат на различни начини, останува фактот дека тие најпрво треба да се откријат. Детекцијата на неправилности претставува основа кај толеранција на неправилности кај дистрибуираните системи. Кога станува збор за детекција на неправилности, најчесто има два механизма: активна проверка на процесите или пасивно чекање одговорите да почнат да доаѓаат од друг процес. Во практира најчесто се користи првиот механизам со проверка на процесите. Исто така постојат механизми кои користат часовници, механизми кои сугерираат секој активен процес да ги информира другите дека е активен.

Системот за детекција на неправилности треба да може да ги препознава неправилностите кои настануваат поради недостатоци во мрежата од неправилното работење на процесите, односно не треба да се дава одлуката на еден процес. Кога ќе се забележи неправилност во работењето на некој процес, потребно е повеќе процеси да пробаат да стапат во контакт со процесот што предизвикува неправилно работење, па потоа да одлучат дали тој процес е сè уште достапен. Доколку процесот работи, меѓусебно треба да се информираат за неговата состојба.

Доверливи клиент-опслужувач комуникации