Модел клијент—сервер

Модел клијент—сервер је структура дистрибуираних апликација која дели задатке између оних који обезбеђују ресурсе или услуге — сервера и оних који траже услуге — клијента.[1] Најчешће клијенти и сервери комуницирају преко компјутерске мреже на одвојеном хардверу, али могу бити смештени у истом систему. Сервер хост покреће сервер програме који деле своје ресурсе са клијентима. Клијент не дели своје ресурсе, али захтева серверов садржај или услугу. Клијенти започињу сесију комуникације са серверима који чекају долазеће захтеве. Примери компјутерских апликација који користе клијент—сервер модел су имејл, веб.

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

Улога клијента и сервера уреди

Клијент—сервер описује везу програма у апликацији који сарађују. Сервер обезбеђује функцију или услугу једном или више клијента који захтевају ту услугу. Сервери се класификују по врсти услуге које пружају. На пример, веб-сервер омогућава преглед веб-страница, а фајл сервер обезбеђује компјутерске фајлове. Дељени ресурс може бити било који део софтвера и електронских компоненти сервер рачунара, од програма и података до процесора и уређаја за чување података. Сервери пружају услуге тако што деле своје ресурсе.

Да ли је компјутер клијент, сервер, или оба одређује врста апликације које захтевају услугу. На пример, један рачунар може истовремено покретати софтвер и за веб сервер и за фајл сервер да би обезбедио различите податке клијентима који имају различите захтеве. Софтвер клијента може комуницирати са софтвером сервера унутар истог рачунара.[2] Комуникација између сервера, на пример синхронизација података, се назива интер-сервер или сервер-то-сервер комуникација.

Комуникација између клијената и сервера уреди

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

Клијенти и сервери размењују поруке у виду захтев-одговор комуникацијског шаблона. Клијент пошаље захтев, а сервер врати одговор. Ова размена порука је пример интерпроцесне комуникације. Да би комуницирали, рачунари морају да имају заједнички језик и да следе правила да би и клијент и сервер знали шта да очекују. Језик и правила комуникације се дефинишу протоколом за комуникацију. Сви клијент- сервер протоколи функционишу у слоју апликација. Протокол слоја апликација дефинише основни шаблон дијалога. Да би се размена података формализовала још више, сервер може да имплементира апликациони програмски интерфејс (АПИ).[3] АПИ је слој апстракције за приступање услузи. Ограничавајући комуникацију на тачно одређени формат садржаја олакшава се рашчлањивање, а тиме што се апстрахује приступ олакшава се размена података на различитим платформама. [4]

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

Пример уреди

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

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

Овај пример илуструје образац дизајна који се може применити на модел клијент-сервер: раздвајање појединачних проблема.

Почеци уреди

Рани облик клијент-сервер архитектуре је линк удаљеног уноса, још од ОС/360 (најављеног 1964. године), коме је захтев био да покрене посао, а одговор је био резултат.

Приликом формулисања клијент-сервер модела током шездесетих и седамдесетих година 20. века, научници који су створили АРПАНЕТ (на Институту за Истраживање на Стенфорду) користили су израз сервер-хост (или домаћин-сервер) и усер-хост (или корисник-домаћин), а они се појављују у раним документима RFC 5[5] и RFC 4.[6] Употреба ових термина је настављена на Xероx ПАРЦ систему средином седамдесетих.

Један од контекста у којем су истраживачи користили ове термине био је у дизајну програмског језика рачунарске мреже под називом Децоде-Енцоде Лангуаге (ДЕЛ).[5] Сврха овог језика била је да прихвати команде са једног рачунара (корисничког хоста), који би кориснику вратио статусне податке док је кодирао команде у мрежним пакетима. Други компјутер који подржава ДЕЛ, сервер-хост, прима пакете, декодира их и враћа форматиране податке корисничком хосту. Програм ДЕЛ на корисничком хосту добија резултате које приказује кориснику. Ово је трансакција клијент-сервер. Развој ДЕЛ-а је тек почео 1969. године, када је Министарство одбране Сједињених Америчких Држава основало АРПАНЕТ (претходник интернета).

Клијент-хост и сервер-хост уреди

Клијент-хост и сервер-хост имају нешто другачија значења од клијента и сервера. Хост (домаћин) је сваки рачунар који је повезан са мрежом. Док се речи сервер и клијент могу односити и на рачунар или на рачунарски програм, сервер-хост и усер-хост увек се односе на рачунаре. Домаћин је вишенаменски рачунар, клијенти и сервери су само програми који се покрећу на домаћину. У моделу клијент-сервер, вероватније је да се сервер посвети задатку служења.

Једно од првих појављивања речи клијент је у документу "Одвајање података од функције у дистрибуираном систему датотека" из 1978. године који су написали Xероx ПАРЦ рачунарски научници Хауард Стургис, Џејмс Мичел и Џеј Израел. Аутори пажљиво дефинишу појам за читаоце и објашњавају да га користе да би направили разлику између корисника и мрежног чвора корисника (клијента).[7] (До 1992.године, израз сервер је ушао у општи говор.)[8][9]

Централизовано рачунарство уреди

Додатне информације: Историја персоналних рачунара, Децентрализовано рачунарство, и Кластер рачунари.

Клијент-сервер модел не захтева да сервер-домаћин мора да има више ресурса него клијент-домаћин, већ омогућава да било који рачунар опште намене прошири своје могућности користећи дељене ресурсе других домаћина. Централизовано рачунарство, међутим, конкретно додељује велике количине ресурса малом броју рачунара. Што је више обраде пребачено од клијента-домаћина на централне рачунаре, толико клијенти-домаћини могу бити једноставнији.[10] Највећим делом се ослања на мрежне ресурсе (сервере и инфраструктуре) за обраду и складиштење. Чвор без диска учитава чак и оперативни систем са мреже, а рачунарски терминал уопште нема оперативни систем; већ је само улазно/излазни интерфејс према серверу. Супротно, дебели (захтевни) клијент, попут персоналног рачунара, има много ресурса, и не ослања се на сервер у извршавању основних функција.

Како се цена микрорачунара смањивала, а њихова моћ расла од осамдесетих до касних деведесетих година 20. века, многе организације су се прешле са централизованих сервера, попут мејнфрејм рачунара и минирачунара, ка дебелим клијентима.[11] То је омогућило већу, индивидуализовану доминацију над рачунарским ресурсима, али компликовано управљање информационим технологијама.[10][12][13] Током 2000-их година, веб апликације су се развиле довољно да буду конкурентне апликационом софтверу развијеном за посебне микроархитектуре. Овај напредак, приступачније масовно складиштење и појава сервисно оријентисаних архитектура, био је међу факторима који су убрзали рачунарство у облаку од 2010-их.[14]

Поређење са пеер-то-пеер архитектуром (мрежом равноправних корисника) уреди

Поред модела клијент-сервер, дистрибуиране рачунарске апликације често користе пеер-то-пеер (П2П) архитектуру.

У моделу клијент-сервер, сервер је често направљен да ради као централизовани систем који служи многим клијентима. Снага рачунара, меморија и потребе складиштења сервера морају бити прилагођене очекиваном радном оптерећењу (тј. броју клијената који се истовремено повезују). Системи за балансирање оптерећења и системи за преоптерећење се често користе за процену имплементације сервера.

У пеер-то-пеер мрежи, два или више рачунара (вршњака) удружују своје ресурсе и комуницирају у децентрализованом систему. Вршњаци су једнаки, односно чворови имају исту моћ у нехијерархијској мрежи. За разлику од клијената у клијент-сервер мрежи или клијент-ред-клијент мрежи, вршњаци у пеер-то-пеер мрежи комуницирају директно једни с другима.[15] У пеер-то-пеер умрежавању, алгоритам у пеер-то-пеер комуникацијском протоколу балансира оптерећење, а чак и вршњаци са скромним ресурсима могу помоћи у дељењу оптерећења.[15] Ако чвор постане недоступан, његови дељени ресурси остају доступни све док га други вршњаци нуде. У идеалном случају, вршњак не мора да достигне високу доступност јер други, редундантни вршњаци надокнађују застој било ког ресурса; како се промена доступности и оптерећења вршњака мења, протокол преусмерава захтеве.

I клијент-сервер и господар-слуга се сматрају поткатегоријама дистрибуираних пеер-то-пеер система.[16]

Види још уреди

Референце уреди

  1. ^ „Distributed Application Architecture” (PDF). Sun Microsystem. Pristupljeno 16. 6. 2009. 
  2. ^ The X Window System is one example.
  3. ^ Benatallah, B.; Casati, F.; Toumani, F. (2004). „Web service conversation modeling: A cornerstone for e-business automation”. IEEE Internet Computing. 8: 46. doi:10.1109/MIC.2004.1260703. 
  4. ^ Dustdar, S.; Schreiner, W. (2005). „A survey on web services composition” (PDF). International Journal of Web and Grid Services. 1: 1. doi:10.1504/IJWGS.2005.007545. 
  5. ^ а б Rulifson, Jeff (јун 1969). DEL. IETF. doi:10.17487/RFC0005 . RFC 5. Приступљено 30. 11. 2013. 
  6. ^ Shapiro, Elmer B. (март 1969). Network Timetable. IETF. doi:10.17487/RFC0004 . RFC 4. Приступљено 30. 11. 2013. 
  7. ^ Sturgis, Howard E.; Mitchell, James George; Israel, Jay E. (1978). „Separating Data from Function in a Distributed File System”. Xerox PARC. 
  8. ^ Харпер, Доуглас. „сервер”. Онлине Етyмологy Дицтионарy. Приступљено 30. 11. 2013. 
  9. ^ „Separating data from function in a distributed file system”. GetInfo. German National Library of Science and Technology. Pristupljeno 29. 11. 2013. 
  10. ^ а б Ниех, Јасон; Новик, Наоми; Yанг, С. Јае. „А Цомпарисон оф Тхин-Цлиент Цомпутинг Арцхитецтурес” (ПДФ). Тецхницал Репорт ЦУЦС-022-00. Неw Yорк: Нетwорк Цомпутинг Лабораторy, Цолумбиа Университy. [мртва веза]
  11. ^ d'Amore, M. J.; Oberst, D. J. (1983). „Microcomputers and mainframes”. Proceedings of the 11th annual ACM SIGUCCS conference on User services - SIGUCCS '83. str. 7. ISBN 0897911164. doi:10.1145/800041.801417. 
  12. ^ Толиа, Нирај; Андерсен, Давид Г.; Сатyанараyанан, M. (март 2006). „Qуантифyинг Интерацтиве Усер Еxпериенце он Тхин Цлиентс” (ПДФ). Цомпутер. ИЕЕЕ Цомпутер Социетy. 39 (3). 
  13. ^ Otey, Michael (22. 3. 2011). „Is the Cloud Really Just the Return of Mainframe Computing?”. SQL Server Pro. Penton Media. Pristupljeno 1. 12. 2013. 
  14. ^ Баррос, А. П.; Думас, M. (2006). „Тхе Рисе оф Wеб Сервице Ецосyстемс”. ИТ Профессионал. 8 (5): 31. дои:10.1109/МИТП.2006.123. 
  15. ^ а б Yонгсхенг, Х.; Xиаоyу, Т.; Зхонгбин, Т. (2013). „Ан Оптимизатион Модел фор тхе Интерцоннецтион амонг Пеерс оф тхе П2П Нетwорк”. Јоурнал оф Апплиед Сциенцес. 13 (5): 700. дои:10.3923/јас.2013.700.707. 
  16. ^ Varma, Vasudeva (2009). „1: Software Architecture Primer”. Software Architecture: A Case Based Approach. Delhi: Pearson Education India. str. 29. ISBN 9788131707494. Pristupljeno 4. 7. 2017. »Distributed Peer-to-Peer Systems [...] This is a generic style of which popular styles are the client-server and master-slave styles.«