V računalništvu je odjemalec-strežnik model programske arhitekture, pri katerem so naloge in storitve razdeljene med vsaj dva tipa komponent: odjemalske programe in strežniške programe, ki komunicirata prek računalniškega omrežja ali celo na istem računalniku. Takšna aplikacija je primer porazdeljenega sistema — sestavljena je iz odjemalčeve in strežniške programske opreme, ki skupaj omogočata učinkovitejšo delitev delovne obremenitve.

Kako deluje

V modelu odjemalec-strežnik odjemalčev proces običajno vzpostavi povezavo do strežnika in pošlje zahtevo za določeno storitev ali podatke. Strežniški proces nato sprejme zahtevo, jo obdela in vrne odgovor odjemalcu. Ta potek (vzpostavitev povezave, poizvedba, obdelava, odgovor) je lahko enkraten ali pa se ponavlja v okviru trajne seje.

Interakcije med odjemalcem in strežnikom se pogosto ponazorijo z diagrami zaporedij, standardiziranimi v enotnem jeziku za modeliranje (UML). Ti diagrami prikazujejo vrstni red sporočil, čakalne dobe in morebitne asinhrone odzive.

Glavne komponente

  • Odjemalec: program ali naprava, ki zahteva storitev (npr. spletni brskalnik kot odjemalska aplikacija).
  • Strežnik: programska oprema ali strojna oprema, ki nudi storitev (npr. spletni strežnik, poštni strežnik, strežnik podatkovnih baz).
  • Omrežje: medij in protokoli, po katerih poteka komunikacija (lokalno omrežje ali internet).

Vrste in topologije

Osnovna oblika arhitekture odjemalec-strežnik uporablja le dve vrsti gostiteljev: odjemalce in strežnike. Ta konfiguracija se pogosto imenuje dvonivojska, saj odjemalec predstavlja eno raven, strežniški proces pa drugo raven.

Obstajajo tudi večnivojske (n-tier) arhitekture, kjer se dodatni sloji (npr. sloj poslovne logike, storitve za avtentikacijo, predpomnilniki) ločijo v samostojne strežniške komponente za boljšo modularnost in skalabilnost.

Če se odjemalčev in strežniški proces izvajata v istem računalniku, se to imenuje namestitev z enim sedežem (ang. single-host ali collocated).

Protokoli in primeri uporabe

Model odjemalec-strežnik podpira številne protokole, odvisno od vrste storitve:

  • HTTP/HTTPS: prenos spletnih strani in API‑jev (spletni brskalnik do spletnega strežnika).
  • SMTP/IMAP/POP3: izmenjava elektronske pošte (standardne omrežne funkcije, kot je elektronska pošta).
  • FTP/SFTP: prenos datotek.
  • SQL/TCP: dostop do podatkovnih zbirk in drugih podatkovnih storitev.
  • RPC/gRPC/REST: klici oddaljenih storitev in mikroservisi.

Veliko vrst aplikacij temelji na modelu odjemalec-strežnik — npr. dostop do spleta, strežniki za shranjevanje datotek, igre z osrednjim strežnikom, storitve za avtorizacijo in avtentikacijo ter baze podatkov. Spletni brskalnik je na primer odjemalski program v uporabniškem računalniku, ki lahko dostopa do informacij v katerem koli spletnem strežniku na svetu.

Stanje in brezstanje (stateful vs stateless)

Strežniki so lahko stateful (hranijo stanje seje med več zahtevami) ali stateless (vsaka zahteva vsebuje vse potrebne informacije za obdelavo). Stateless pristop (kot pri mnogih REST API-jih) poenostavi skaliranje, medtem ko stateful aplikacije omogočajo vzdrževanje uporabniških sej in zmožnosti, ki zahtevajo kontinuirano stanje.

Prednosti in slabosti

  • Prednosti:
    • Centralizirano upravljanje in varnost.
    • Jasna ločitev odgovornosti in enostavnejše posodabljanje strežniške logike.
    • Lažje varnostno kopiranje in nadzor dostopa do virov.
  • Slabosti:
    • Strežnik predstavlja točko odpovedi, če ni ustreznega načrtovanja redundance.
    • Možni ozki grli pri velikem številu odjemalcev brez primernih mehanizmov za skaliranje.

Skaliranje in zanesljivost

Za obvladovanje velikega števila odjemalcev in zagotavljanje visoke razpoložljivosti se uporabljajo tehnike, kot so:

  • Obremenitveno uravnoteženje (load balancing) med več strežniki.
  • Horizontano skaliranje (dodajanje več instanc strežnika).
  • Replikacija in grozdi baz podatkov.
  • Predpomnjenje (caching) in uporaba CDN za dostavo vsebin.

Varnostne vidike

Pri modelu odjemalec-strežnik so ključni varnostni ukrepi: zavarovanje komunikacije (npr. TLS/HTTPS), avtentikacija in avtorizacija, zaščita pred napadi (DDoS, vbrizg podatkov), redno varnostno posodabljanje strežnikov ter spremljanje in beleženje dogodkov. Centraliziran nadzor olajša uvajanje varnostnih pravil, vendar pomeni tudi, da uspešen napad na strežnik lahko vpliva na veliko število odjemalcev.

Primerjava z arhitekturo peer-to-peer (P2P)

Druga pogosto uporabljena arhitektura je znana kot peer-to-peer, ker lahko vsak gostitelj ali primerek aplikacije hkrati deluje kot odjemalec in strežnik. Za razliko od centraliziranih strežnikov modela odjemalec-strežnik imajo v P2P mrežah vsi vozliči enakovredne odgovornosti in status. Za arhitekture peer-to-peer se pogosto uporablja kratica P2P.

Glavne razlike:

  • P2P je bolj odporen proti centralni točki odpovedi, vendar je upravljanje in izvajanje varnostnih pravil bolj zapleteno.
  • Odjemalec-strežnik omogoča lažje centralno upravljanje, avtorizacijo in optimizacijo virov.

Zaključek

Programska arhitektura odjemalec-strežnik je temelj mnogih sodobnih omrežnih storitev in aplikacij. Z uporabo tega modela so bile razvite številne ključne internetne storitve, kot so izmenjava elektronske pošte, dostop do spleta in dostop do podatkovnih zbirk. Pravilna zasnova strežniških komponent, protokolov, varnosti in skalabilnosti je ključna za zanesljivo in učinkovito delovanje sistemov v praksi.