Klienta-servera arhitektūra: definīcija, darbība un piemēri

Klienta-servera arhitektūra: skaidra definīcija, darbības princips un praktiski piemēri. Uzzini, kā darbojas klienti un serveri, to veidi un salīdzinājums ar P2P risinājumiem.

Autors: Leandro Alegsa

Datorzinātnē klients-serveris ir programmatūras arhitektūras modelis, kas parasti sastāv no divām galvenajām daļām — klienta sistēmas un servera sistēmas, kuras savstarpēji sazinās pa datortīklā vai pat vienā datorā. Klienta-servera lietojumprogramma ir sadalīta sistēma, kas ietver gan klienta, gan servera programmatūru, un tā ļauj efektīvāk sadalīt darba slodzi starp vairākām iekārtām vai procesiem. Parasti klienta process iniciē savienojumu ar serveri un nosūta pieprasījumu, bet servera process gaida ienākošos pieprasījumus, apstrādā tos un atgriež rezultātu klientam.

Kā tas strādā — vienkāršs pieprasījuma/atbildes scenārijs

Ierasts klients-servera darbības secības piemērs:

  • Klients izveido savienojumu ar serveri (piemēram, izmantojot tīkla savienojumu uz noteiktu portu).
  • Klients nosūta pieprasījumu (piem., HTTP GET pieprasījumu tīmekļa lapai vai SQL vaicājumu datubāzei).
  • Servers saņem pieprasījumu, veic nepieciešamo apstrādi (piem., izgūst datus, aprēķina atbildi, pieslēdz citas pakalpojumu daļas).
  • Servers nosūta atbildi atpakaļ klientam.
  • Klients saņem atbildi un parāda vai apstrādā datus lietotājam.

Šo mijiedarbību bieži modelē ar secības diagrammām (standartizētā vienotajā modelēšanas valodā), kas attēlo ziņojumu plūsmu starp klientu un serveri.

Komponenti, protokoli un režīmi

Klienta-servera arhitektūrā galvenie komponenti ir klientprogramma, serverprogramma un sakaru protokoli. Izplatītākie protokoli ir:

  • HTTP/HTTPS — tīmekļa pārlūkprogrammas un tīmekļa serveri (piem., tīmekļa pārlūkprogramma kā klients).
  • SMTP/IMAP/POP3 — e-pasta sūtīšanai un saņemšanai (e-pasta pakalpojumi).
  • TCP/UDP — zema līmeņa transporta protokoli, uz kuriem balstās augstāka līmeņa protokoli.
  • SQL / datubāzu protokoli — piekļuve datubāzēm, bieži izmantojot speciālas draiveru bibliotēkas.
  • WebSocket, RPC, REST, SOAP — API un reāllaika saziņai piemēroti risinājumi.

Arhitektūras darbība var būt sinhrona (klients gaida servera atbildi) vai asinhrona (klients turpina darbu, kamēr atbilde tiek saņemta vēlāk). Tāpat serveris var būt stateless (neuztur sesijas stāvokli starp pieprasījumiem) vai stateful (uztur stāvokli, piemēram, pieslēguma sesiju).

Daudzlīmeņu un vienas vietas konfigurācijas

Pamata klients-servera modelis izmanto tikai divu veidu resursdatorus — klientus un serverus — tāpēc to sauc arī par divlīmeņu arhitektūru. Divlīmeņu arhitektūra nozīmē, ka klients darbojas kā viens līmenis, bet servera process — kā otrs.

Ja gan klienta, gan servera process darbojas vienā datorā, to sauc par vienas vietas konfigurāciju — tas var būt noderīgi testēšanai vai lokālām lietojumprogrammām.

Kompleksākās sistēmās tiek lietotas daudzlīmeņu (n-tier) arhitektūras, kur ir starpstāvs (piem., lietojumprogrammu serveris), datu slānis un priekšējā saskarne. Tā ļauj labāk skaitliēt, nodrošināt drošību un atdalīt atbildības.

Piemēri ikdienā

  • Tīmekļa pārlūks un tīmekļa serveris — pārlūkprogramma darbojas kā klients, pieprasa lapas no tīmekļa servera (tīmeklim).
  • E-pasts — pasta klients izmanto serverus, lai sūtītu un saņemtu ziņas (e-pasta protokoli).
  • Datubāzu piekļuve — lietojumprogramma pieprasa datus no datubāzes servera, izmantojot SQL savienojumu.
  • Failu serveri, attālinātā darbvirsma, LDAP autentifikācija u. c.

Mūsdienu tīkla pakalpojumi dažkārt kombinē vairākus klientu-servera elementus vai izmanto mikroservisu pieeju, kur katrs serviss darbojas kā atsevišķs serveris, ko izmanto kā klients augstākā līmeņa lietojumprogramma.

Salīdzinājums ar vienādranga arhitektūru (P2P)

Cits saistītās programmatūras arhitektūras veids ir pazīstams kā vienādranga (peer-to-peer), jo katrs resursdators vai lietojumprogrammas gadījums var vienlaikus darboties gan kā klients, gan kā serveris. Atšķirībā no centralizētiem serveriem klienta-servera modelī, vienādranga tīkliem raksturīga decentralizācija — katram mezglam ir līdzvērtīgas tiesības un pienākumi. Vienādranga arhitektūras bieži saīsināti apzīmē ar akronīmu P2P.

Gan klienta-servera, gan P2P arhitektūras tiek plaši izmantotas atkarībā no vajadzībām — klienta-serveris ir labs centralizētām, kontrolētām sistēmām; P2P piemērots datu izplatīšanai un sadarbībai bez centralizēta servera.

Priekšrocības un trūkumi

  • Priekšrocības: centralizēta pārvaldība, vieglāka datu konsistence, skaidri atdalītas atbildības, drošības politiku centralizācija, vieglāka mērogošana ar load balancing.
  • Trūkumi: single point of failure (ja serveris nokrīt, pakalpojums var apstāties), nepieciešami resursi servera uzturēšanai, iespējama veiktspējas ierobežošana, ja nav pareizas horizontālās skalēšanas.

Drošība, mērogojamība un uzturēšana

Drošība klienta-servera vidēs ietver autentifikāciju, autorizāciju, datu šifrēšanu (piem., TLS/HTTPS), ugunsmūrus un ievainojamību pārvaldību. Mērogošanai izmanto slodzes sadalītājus (load balancers), kešus (caching), replikāciju un horizontālu servisu palielināšanu. Uzturēšanā svarīgi ir atjauninājumi, monitorings un žurnālu (log) analīze, lai identificētu problēmas un nodrošinātu augstu pieejamību.

Noslēgums

Klienta-servera arhitektūra ir viens no tīkla skaitļošanas pamatmodeļiem, un, pateicoties savām īpašībām, tā ir izmantota daudzos ikdienas pakalpojumos — no piekļuves tīmeklim līdz piekļuvei datubāzēm, e-pastam un citām zināmām sistēmām. Sapratne par klienta-servera darbību, tās priekšrocībām un ierobežojumiem palīdz veidot drošas, mērogojamas un uzticamas tīkla lietojumprogrammas.

Vienādranga tīkls.Zoom
Vienādranga tīkls.

Uz vienu serveri balstīts tīkls.Zoom
Uz vienu serveri balstīts tīkls.

Klientu raksturojums

  • Vienmēr iniciē pieprasījumus serveriem.
  • Gaida atbildes.
  • Saņem atbildes.
  • Parasti vienlaicīgi savienojas ar nelielu skaitu serveru.
  • Parasti tieši mijiedarbojas ar galalietotājiem, izmantojot jebkuru lietotāja saskarni, piemēram, grafisko lietotāja saskarni.

Servera raksturlielumi

  • Vienmēr gaidiet pieprasījumu no kāda klienta.
  • Apkalpo klientu pieprasījumus un pēc tam atbild klientiem ar pieprasītajiem datiem.
  • Serveris var sazināties ar citiem serveriem, lai apkalpotu klienta pieprasījumu.
  • Ja pieprasījuma apstrādei ir nepieciešama papildu informācija (vai ir ieviesta drošība), serveris pirms pieprasījuma apstrādes var pieprasīt klientam papildu datus (paroles).
  • Galalietotāji parasti tieši nesadarbojas ar serveri, bet izmanto klientu.

Priekšrocības

  • Vairumā gadījumu klienta-servera arhitektūra ļauj sadalīt datorsistēmas lomu un pienākumu izpildi starp vairākiem neatkarīgiem datoriem, kas viens otru pazīst tikai ar tīkla starpniecību, tāpēc viena no šī modeļa priekšrocībām ir vieglāka uzturēšana. Piemēram, ir iespējams nomainīt, labot, uzlabot vai pat pārvietot serveri, kamēr tā klienti par to nezina un šīs izmaiņas to neietekmē. Šo neatkarību no izmaiņām sauc arī par iekapsulēšanu.
  • Visi dati tiek glabāti serveros, kuriem parasti ir labāka drošības kontrole nekā lielākajai daļai klientu. Serveri var labāk kontrolēt piekļuvi un resursus, lai garantētu, ka datiem var piekļūt un tos mainīt tikai tie klienti, kuriem ir atbilstošas atļaujas.
  • Tā kā datu glabāšana ir centralizēta, šo datu atjauninājumus administratoriem ir daudz vieglāk veikt nekā P2P arhitektūrā. P2P arhitektūrā datu atjauninājumi var būt jāizplata un jāpiemēro katram tīkla "vienaudzim", kas ir gan laikietilpīgi, gan saistīti ar kļūdām, jo var būt tūkstošiem vai pat miljoniem vienaudžu.
  • Jau ir pieejamas daudzas progresīvas klienta-servera tehnoloģijas, kas izstrādātas, lai nodrošinātu drošību, lietotājam draudzīgas saskarnes un ērtu lietošanu.
  • Tas darbojas ar vairākiem dažādu specifikāciju klientiem.

Trūkumi

  • Tīklu datplūsmas bloķēšana ir viena no problēmām, kas saistīta ar klienta-servera modeli. Palielinoties vienlaicīgu klientu pieprasījumu skaitam uz konkrētu serveri, serveris var kļūt pārslogots. Pretstatā tam ir P2P tīkls, kura joslas platums faktiski palielinās, pievienojot vairāk mezglu, jo P2P tīkla kopējo joslas platumu var aptuveni aprēķināt kā katra mezgla joslas platuma summu šajā tīklā.
  • Salīdzinot klienta-servera modeli ar Peer to Peer modeli, ja viens serveris nedarbojas, klientu pieprasījumus nevar apkalpot, bet P2P tīklos serveri parasti ir sadalīti starp daudziem mezgliem. Pat ja viens vai vairāki mezgli nedarbojas, piemēram, ja mezglam neizdodas lejupielādēt failu, pārējo mezglu rīcībā joprojām jābūt datiem, kas vajadzīgi, lai pabeigtu lejupielādi.

Piemēri

Jautājumi un atbildes

J: Kas ir klienta-servera programmatūras arhitektūra?


A: Klienta-servera programmatūras arhitektūra ir modelis, kas sastāv no divām daļām - klienta sistēmas un servera sistēmas, kuras abas sazinās datortīklā vai vienā datorā.

Q: Kā darbojas klienta-servera lietojumprogramma?


A: Klienta-servera lietojumprogramma ir sadalīta sistēma, ko veido klienta un servera programmatūra. Klienta process vienmēr uzsāk savienojumu ar serveri, bet servera process vienmēr gaida pieprasījumus no jebkura klienta.

J: Kas notiek, ja klienta process un servera process darbojas vienā datorā?


A: Ja gan klienta process, gan servera process darbojas vienā datorā, to sauc par vienas vietas konfigurāciju.

J: Kādas priekšrocības sniedz klienta servera lietojumprogrammas izmantošana?


A: Izmantojot klienta servera lietojumprogrammu, var labāk sadalīt darba slodzi starp vairākiem datoriem vai lietotājiem.

J: Kas iniciē savienojumus klienta servera lietojumprogrammās?


A: Klienta servera lietojumprogrammās savienojumus vienmēr iniciē klienta process.


J: Kas gaida pieprasījumus klienta servera lietojumprogrammās?


A: Servera process vienmēr gaida pieprasījumus klienta servera lietojumprogrammās.

J: Kā vairāki datori vai lietotāji var savstarpēji dalīt darba slodzi?


A: Vairāki datori vai lietotāji var koplietot darba slodzi, izmantojot sadalītu sistēmu, piemēram, klienta servera lietojumprogrammu.


Meklēt
AlegsaOnline.com - 2020 / 2025 - License CC3