Распределен сметачки систем

мини|десно|250п|Делумна претстава на интернетот со неговите јазли
**Дистрибуиран компјутерски систем** може да се дефинира на повеќе начини. Не постои единствена дефиниција. Еден начин е да се дефинира како систем кај кој машинската опрема и програмската опрема се наоѓаат на различни локации и комуникацијата помеѓу нив се одвива со разменување на пораки што се испраќаат преку компјутерска мрежа,. Друга дефиниција за дистрибуиран компјутерски систем е како множество на независни компјутери што на корисниците им даваат услуга на тој начин што тие имаат претстава дека работат со еден единствен компјутер.

Системите што го сочинуваат дистрибуираниот систем се различни. Тоа значи дека е потребно оваа хетерогеност да се надмине за да корисникот не чувствува дека работи со повеќе системи. Тоа се постигнува преку поставување на дополнителна програмска опрема на секој од системите. Таа се нарекува посредничка програмска опрема или на англиски middleware,.

Пример за еден дистрибуиран систем е Интернет мрежата која ги користи протоколите од TCP/IP моделот. Првите апликации што се направени за овој голем дистрибуиран систем работат со клиент-опслужувач комуникација,. Подоцна се развиени и таканаречените peer-to-peer апликации. Интернет ги задоволува целите кон кои се стреми секој добро конструиран дистрибуиран компјутерски систем, односно ги има следните својства на дистрибуиран систем: транспарентност, отвореност, размерливост.

Како и кај централизираните системи, така и кај дистрибуираните, вообичаено е на секој елемент да му се даде име. Именувањето кај компјутерските системи е начин или правило по кое се доделуваат имињата на компонентите што го сочинуваат системот. Адреса е локација на која се наоѓа елемент со дадено име. На пример, кај Интернет мрежата локацијата на секој систем е одредена со неговата адреса според Интернет протоколот. Системот на имиња што се користи во Интернет се вика систем за именување на домени или на англиски DNS (Domain Name System).

Важен проблем на кој треба да се внимава кога се работи со дистрибуираните системи е фактот што различни системи имаат различни часовници. Со оглед на тоа што голем број апликации го користат времето на системот при извршување на некои операции може да дојде до несакани ефекти поради тоа што часовниците на системите не се синхронизирани. Затоа кај Интернет за синхронизирање на часовниците се користи мрежниот протокол за време или на англиски NTP (Network Time protocol). Кога синхронизација не е направена се користат таканаречени логички часовници.

Голема предност на дистрибуираните систем е тоа што тие се многу поотпорни на неправилности кои можат да настанат при нивното функционирање. Ова нивно својство уште се нарекува толеранција на неправилно работење кај дистрибуираните компјутерски системи.

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

## Својства на дистрибуираните системи
Основната цел на еден дистрибуиран компјутерски систем е да ги поврзе корисниците на кои им ги дава своите услуги, да им овозможи пристап до потребните ресурси, како и да овозможи меѓусебна соработка на ресурсите заради добро опслужување на корисниците. Работата на корисниците се олеснува, доколку дистрибуираниот систем содржи доволно машинска опрема и доволно програмска опрема. Најголем и најуспешен дистрибуиран систем, денес е Интернет, кој претставува Компјутерска мрежа од мрежи и користи едноставни протоколи за размена на податотеки, електронска пошта, документи, аудио и видео записи. Ваквата раширеност на еден систем може да доведе до бројни проблеми во безбедноста, приватноста и меѓусебната комуникација на корисниците.

Главни одлики кои треба да ги поседува еден дистрибуиран компјутерски систем се:

* *Функционална сепарација* - се заснова на обезбедување на функционалности/услуги на секој ентитет во системот;
* *Инхерентна дистрибуција* - се однесува на ентитети како што се информации, луѓе и системи. На пример, различни информации се создадени и одржувани од различни луѓе. Овие информации може да бидат генерирани, зачувани, анализирани и употребени од различни системи или апликации, а притоа не мора да се свесни за постоењето на другите ентитети во системот;
* *Доверливост* - долгорочно чување на податоците и нивно реплицирање на различни локации;
* *Размерливост* - додавање на повеќе ресурси за да се зголемат перформансите или достапноста;
* *Економичност* - споделување на ресурси на повеќе ентитети со цел намалување на трошоците.
Други особини или цели кои треба да ги постигне еден Дистрибуиран компјутерски систем се: транспарентност, отвореност, размерливост, конкурентност, толеранција на грешки, безбедност.

### Транспарентност
„Дистрибуираниот систем кој за корисниците и апликациите изгледа како да е еден компјутерски систем, се нарекува транспарентен“ . Дистрибуираните компјутерски системи мораат да поседуваат повеќе видови на транспарентност и тоа:
* *Транспарентност на пристап*, претставува криење од корисникот на кој начин системот пристапува кон различни системи и ресурси. Причина за ваквото криење е тоа што на корисникот не му е важно како системот работи и како ќе дојде до бараните информации, туку него го интересира само да ја добие услугата која ја бара.
* *Транспарентност на локација* значи да се сокрие точната локација на системот, на пример при повикување на одредено мрежно место, корисникот не го интересира местото на опслужувачот на кој се наоѓа мрежното место, туку само да го добие бараното мрежно место на својот прелистувач.
* *Транспарентност на миграција* е криење на фактот дека даден ресурс ја променил својата локација. Тоа значи, на пример, ако дојде до промена на локацијата на Опслужувачот, тоа не би го интересирало корисникот кој пристапува на опслужувачот. 
* *Транспарентност на релокација* се однесува на криење на пренесувањето на ресурсот, во време на негово користење. Пример за ваков вид на транспарентност е кога корисник на безжичен Преносен компјутер континуирано и без прекин го користи својот Преносен компјутер, а притоа се движи и се поврзува со нова пристапна точка, без да знае дека се направила промена на поврзувањето.
* *Транспарентност на репликација* се однесува на криење на фактот дека постојат повеќе копии на некој ресурс. Репликациите помагаат за подобра работа на дистрибуираниот систем. Криењето се постигнува така што сите репликации имаат исто име. Ова, исто така повлекува да систем кој поддржува транспарентност на репликација, треба да поддржува и транспарентност на локација, бидејќи во спротивно би било невозможно да се однесува на копии на различни локации .
* *Транспарентност на истовремено користење (англ. concurrency)*, се однесува на криење на фактот дека повеќе ентитети истовремено, користат исти ресурси.Корисниците и апликациите треба да пристапуваат кон податоците или објектите, без меѓусебно да си попречуваат во тоа. Ова бара многу сложен механизам и контрола во дистрибуираниот систем и неговата имплементација претставува тешка задача.
* *Транспарентност на откажување на системот* е да се сокрие откажувањето на еден систем од корисникот. Ако се случи откажување на системот, а да постои копија на тој систем, корисникот ќе биде префрлен на копијата на системот и ќе ја добие бараната услуга, без притоа да е свесен дека настанало извесно откажување на системот.
* *Перзистентна транспарентност* е криење од корисникот во која Компјутерска меморија се наоѓа бараниот ресурс, т.е. дали се наоѓа во внатрешна меморија или на тврд диск. За корисникот е невидливо дека опслужувачот ја променува својата состојба од примарната кон секундарната меморија. „Перзистентноста игра важна улога во дистрибуираните системи, но еднакво е важна и за недистрибуираните системи.“

#### Степен на транспарентност
Во некои случаи транспарентноста не е добра идеја, затоа што може да има негативно влијание. Понекогаш корисникот мора да биде свесен за дистрибуираноста на системот, за да може да се однесува соодветно. На пример, при пренос на податоци низ медиуми, може да дојде до задоцнето пристигање на информациите поради времето на пропагација или поради оддалеченоста на системите што во ваков случај бара трпение од страна на корисникот, додека да ги добие бараните информации. Понекогаш самиот систем во моментот не може да се поврзе со бараниот систем, па на корисникот му дава информација дека постојано ќе се обидува да воспостави врска. И во ваков случај корисникот треба да знае за што се работи, па за да не ги оптоварува дополнително ресурсите на системот, згодно е да го прекине барањето на комуникацијата, и да се обиде повторно подоцна да воспостави врска. Значи, се прави баланс помеѓу високиoт степен на транспарентност и перформансите на системот.

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

### Размерливост
За еден дистрибуиран систем се вели дека е размерлив, ако ефикасно работи при зголемување на бројот на корисниците и ако не се намалуваат перформансите на системот при додавање на нови ресурси. Според Neuman, размерливоста на системот може да се мери во најмалку 3 различни димензии, а тоа се : 
# Системот може да е размерлив зависно од неговата *големина*, т.е. лесно може да се зголемува бројот на корисници и ресурси на дадениот систем, а притоа неговите перформанси да не се променуваат;
# *Географски размерлив систем* е оној во кој корисниците и ресурсите може да се географски оддалечени;
# *Административно размерлив систем* е оној кој сѐ уште може да биде лесен за управување, иако со различни делови од системот управуваат различни администраторски авторитети.
Интернет е размерлив во поглед на сите три димензии. Од неговите почетоци до денес, бројот на корисници е енормно зголемен, а неговите перформанси може да се каже дека не се значително променети и дека сѐ уште се користат истите основни протоколи кои се користеле и во почетокот. И во поглед на географијата, е исто. Во почетокот Интернет бил распространет само во САД, а денес е распространет на сите континенти со истите перформанси. Во поглед на администрирањето, денес постојат многу сервис услужници кои се грижат за управувањето со Интернетот, што значи администрирањето не е централизирано, туку тоа се однесува на ентитети кои дистрибуирано управуваат со системот.
Во поглед на размерливоста, може да настанат различни видови на проблеми и тоа:
# *Користење на централизирани опслужувачи* т.е. кога еден опслужувач го користат сите корисници и со значително зголемување на бројот на корисниците може да дојде до откажување на опслужувачот.
# *Користење на централизирана [[база на податоци]]* т.е. со значително зголемување на количината на податоците во базата, ќе се оневозможи зачувувањето на податоците во базата или пристапот кон податотеката.
# *Користење на централизирани алгоритми* т.е. големиот број на информации ќе доведе до откажување на системот на кој е имплементиран алгоритамот.

### Грешки
Во дистрибуираните системи некои компоненти може да откажат. Откажувањето на една или повеќе компоненти не треба да го доведе до откажување целиот систем, туку компонентите кои откажале треба да се изолираат, а останатите компоненти да си ја продолжат својата работа. Прашањата кои се поставуваат во врска со справувањето со грешки, се однесуваат на тоа како да се детектираат, како да се маскираат и како да се толерираат ваквите откажувања и секако, на кој начин системот може да се опорави од откажувањето.
Детекција на грешки е процес на идентификување на еден систем дека се наоѓа во невалидна состојба. Најчестите техники на детектирање на грешки се:
*Проверка на репликации* – се врши споредување на повеќе реплики на компоненти кои истовремено извршуваат исти услуги. Се споредува исходот од репликите и секое несовпаѓање е индикација за грешка во една или повеќе компоненти.
*Проверка на тајмингот* – се користи за откривање на грешки во тајмингот. Грешката настанува ако услугата не е завршена, а тајмерот истекол. При овие проверки може да настанат проблеми ако постојат варијации во извршувањето на функциите.
*Проверка на ограничувањето на извршувањето* – ова значи дека за време на извршувањето се проверуваат одредени ограничувања.
*Дијагностички проверки* – тоа се ревизии од позадина, со кои се утврдува дали една компонента функционира правилно. Во многу случаи дијагностичките проверки врз компонентите се вршат ако е познат влезот дали ќе се добие очекуваниот излез.
Маскирањето на откажувањето се постигнува со изолирање на штетата која настанува при откажувањето, на тој начин што најпрво ќе се определи степенот до кој грешката ќе се шири. За да се утврди тоа, потребно е да се разбере и да се следи протокот на информации во системот, почнувајќи од онаа компонента за која се знае дека откажала. Понатаму се проверува од грешки секоја наредна компонента и границата се поставува кај таа компонента кај која нема да се детектира грешка. Откако ќе се утврди границата, тој дел од системот ќе се изолира сè додека не се исправи откажувањето кое настанало. 
Толеранција на откажувањето е способноста на системот да ја извршува својата функција правилно, дури и тогаш кога постојат внатрешни грешки. Целта на толеранцијата на откажувањето е да се зголеми сигурноста, во смисла да може да му се верува на системот дека точно ќе ги извршува услугите за кои е дизајниран. Дополнителен, но посебен пристап кон зголемувањето на ваквата сигурност на еден систем е превенцијата од откажувања, кој се состои од техники чија намера е да се елиминираат околностите под кои се јавуваат откажувањата. 
За да се опорави од откажувањето, системот е потребно да се врати во валидна состојба. Постојат два пристапи за остварување на вакво опоравување и тоа: опоравување од грешка со враќање наназад (англ. backward error recovery), каде системот се враќа во претходната валидна состојба и опоравување од грешка со одење нанапред (англ. forward error recovery), каде системот преминува од погрешната состојба кон нова валидна состојба.

### Безбедност
Безбедноста кај дистрибуираните системи е исклучително важна. Додека кај централизираните системи проблемот се сведува на физичка безбедност, кај дистрибуираните системи парадигмата за безбедност е сосема поинаква и се однесува на доверливост во поглед на меѓусебна комуникација на два субјекти и притоа таа комуникација не ја дознава трет субјект, интегритет во смисла на непроменливост на пораките кои се испраќаат помеѓу субјектите кои комуницираат и автентикација во смисла на нивно точно меѓусебно идентификување. Сите овие аспекти се обезбедуваат со помош на криптографија или шифрирање, кое се користи со цел да се зачува тајноста на податоците и за превенција од нивно неавторизирано променување.
Покрај овие, може да се појават и други закани, како што се различни видови на напади кои може да направат штети на самите системи. Исто така можни се и напади со одложување на услуги (англ. Denial of Service), кои можат да предизвикаат оневозможување на давање на услуги на цели системи и најразлични видови на малициозен софтвер, компјутерски вируси, црви, тројански коњи итн.

## Наводи


Категорија:Децентрализација