You are on page 1of 334

Elosztott rendszerek: Alapelvek és paradigmák

Distributed Systems: Principles and Paradigms

Maarten van Steen1 Kitlei Róbert 2


1 VU Amsterdam, Dept. Computer Science
2 ELTE Informatikai Kar

1. rész: Bevezetés
2015. május 24.
Tartalomjegyzék

Fejezet
01: Bevezetés
02: Architektúrák
03: Folyamatok
04: Kommunikáció
05: Elnevezési rendszerek
06: Szinkronizáció
07: Konzisztencia & replikáció
08: Hibatűrés
10: Objektumalapú elosztott rendszerek
11: Elosztott fájlrendszerek
12: Elosztott webalapú rendszerek

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 2 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Definíció: Elosztott rendszer

Az elosztott rendszer
önálló számítógépek olyan összessége, amely
kezelői számára egyetlen koherens rendszernek tűnik.

Két szempont: (1) független számítógépek és


(2) egyetlen rendszer ⇒ köztesréteg (middleware).
Computer 1 Computer 2 Computer 3 Computer 4

Appl. A Application B Appl. C

Distributed system layer (middleware)

Local OS 1 Local OS 2 Local OS 3 Local OS 4

Network

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 3 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Az elosztott rendszer céljai

Távoli erőforrások elérhetővé tétele


Átlátszóság (distribution transparency)
Nyitottság (openness)
Skálázhatóság (scalability)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 4 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Átlátszóság
Fajta Angolul Mit rejt el az erőforrással kapcsolatban?
Hozzáférési/elérési Access Adatábrázolás; elérés technikai részletei
Elhelyezési Location Fizikai elhelyezkedés
Áthelyezési Migration Elhelyezési + a hely meg is változhat
Mozgatási Relocation Áthelyezési + használat közben is
történhet az áthelyezés
Többszörözési Replication Az erőforrásnak több másolata is lehet a
rendszerben
Egyidejűségi Concurrency Több versenyhelyzetű felhasználó is
elérheti egyszerre
Meghibásodási Failure Meghibásodhat és újra üzembe állhat

Megjegyzés
A fentiek lehetséges követelmények, amelyeket a rendszerrel kapcsolatban
támaszthatunk. A félév során megvizsgáljuk, hogy melyik mennyire érhető el.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 5 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Az átlátszóság mértéke
Mekkora átlátszóságot várhatunk el?
A teljes átlátszóságra törekvés általában túl erős:
A felhasználók különböző kontinenseken tartózkodhatnak
A hálózatok és az egyes gépek meghibásodásának teljes elfedése
elméletileg és gyakorlatilag is lehetetlen

Nem lehet eldönteni, hogy a szerver csak lassan válaszol vagy


meghibásodott
Távolról nem megállapítható, hogy a szerver feldolgozta-e a
kérésünket, mielőtt összeomlott

A nagymértékű átlátszóság a hatékonyság rovására megy, de a


késleltetést is el szeretnénk rejteni
Ilyen feladat lehet a webes gyorsítótárak (cache-ek) tökéletesen
frissen tartása
Másik példa: minden változás azonnal lemezre írása nagymértékű
hibatűréshez
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 6 / 31
1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Elosztott rendszerek nyitottsága


Nyitott elosztott rendszer
A rendszer képes más nyitott rendszerek számára szolgáltatásokat
nyújtani, és azok szolgáltatásait igénybe venni:
A rendszerek jól definiált interfészekkel rendelkeznek
Az alkalmazások hordozhatóságát (portability) minél inkább
támogatják
Könnyen elérhető a rendszerek együttműködése (interoperability)

A nyitottság elérése
A nyitott elosztott rendszer legyen könnyen alkalmazható heterogén
környezetben, azaz különböző
hardvereken,
platformokon,
programozási nyelveken.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 7 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Nyitottság: követelményrendszerek, mechanizmusok

A nyitottság implementálása
Fontos, hogy a rendszer könnyen cserélhető részekből álljon
Belső interfészek használata, nem egyetlen monolitikus rendszer
A rendszernek minél jobban paraméterezhetőnek kell lennie
Egyetlen komponens megváltoztatása/cseréje lehetőleg minél kevésbé
hasson a rendszer más részeire

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 8 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Nyitottság: követelményrendszerek, mechanizmusok


Példák
A nyitott rendszer követelményeket (policy) ír elő, amelyekhez jó, ha
minél több megvalósító megvalósítás (mechanism) érhető el a
rendszerben. Néhány szóbajöhető példa:
Mennyire erős konzisztenciát követeljünk meg a kliensoldalon
cache-elt adatokra? Legyen dinamikusan beállítható, hogyan
döntse el a rendszer az adatról, milyen erősen legyen konzisztens.
A letöltött kód milyen műveleteket hajthasson végre? A mobil
kódhoz rendeljünk különböző megbízhatósági szinteket.
Milyen QoS követelményeket támasszunk változó sávszéleségű
rendszerben? Minden folyamra külön lehessen QoS
követelményeket beállítani.
Milyen mértékben titkosítsuk a kommunikációs csatornánkat? A
rendszer kínáljon többfajta titkosítási mechanizmust, amelyek
közül választani lehet.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 9 / 31
1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Átméretezhetőség (scalability)
Átméretezhetőség
Ha egy „kis” rendszer megnő, az sokfajta kihívást jelenthet. Több különböző
jellege is megnőhet a rendszernek:
méret szerinti átméretezhetőség: több felhasználó és/vagy folyamat van
a rendszerben
földrajzi átméretezhetőség: a rendszert nagyobb területről veszik
igénybe, pl. egyetemen belüli felhasználás→világméretű
felhasználóbázis
adminisztrációs átméretezhetőség: biztonsági, karbantartási,
együttműködési kérdések merülnek fel, ha új adminisztrációs
tartományok kerülnek a rendszerbe

Megjegyzés
A legtöbb rendszer a méret szerinti átméretezhetőséget kezeli.
(Nem mindig) megoldás: erősebb szerverek használata.
A másik két jellegű átméretezhetőséget nagyobb kihívás kezelni.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 10 / 31
1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Technikák az átméretezhetőség megvalósítására

A kommunikációs késleltetés elfedése


A válaszra várás közben más tevékenység végzése:
Aszinkron kommunikáció használata
A beérkező választ külön kezelő dolgozza fel
Probléma: nem minden alkalmazás ültethető át ilyen
megközelítésre

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 11 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Technikák az átméretezhetőség megvalósítására

Elosztás
Az adatokat és a számításokat több számítógép tárolja/végzi:
A számítások egy részét a kliensoldal végzi (Java appletek)
Decentralizált elnevezési rendszerek (DNS)
Decentralizált információs rendszerek (WWW)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 12 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Technikák az átméretezhetőség megvalósítására

Replikáció/cache-elés
Több számítógép tárolja egy adat másolatait:
Replikált fájlszerverek és adatbázisok
Tükrözött weboldalak
Weboldalak cache-elése (böngészőkben, proxy szervereken)
Fájlok cache-elése (a szerver- és kliensoldalon)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 13 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Átméretezhetőség – a probléma

Megjegyzés
Az átméretezhetőség könnyen elérhető, de ára van:
Több másolat fenntartása (cache vagy replika) inkonzisztenciához
vezet: ha módosítunk egy másolatot, az eltér a többitől.
A másolatok konzisztensen tartásához globális szinkronizációra
van szükség minden egyes változtatás után.
A globális szinkronizáció viszont rosszul skálázható nagy
rendszerekre.

Következmény
Ha feladjuk a globális szinkronizációt, akkor kénytelenek vagyunk
bizonyos fokú inkonzisztenciát elviselni a rendszerünkben.
Az, hogy ez milyen mértékben elfogadható, rendszerfüggő.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Elosztott rendszerek fejlesztése: hibalehetőségek

Megjegyzés
Az elosztott rendszer környezetéről kényelmes lehet feltételezni, hogy
megbízható. Ha ez tévesnek bizonyul, az a rendszer újratervezéséhez
vezethet. Néhány ilyen feltételezés:
a hálózat hibamentes
a hálózat biztonságos
a hálózat homogén
a hálózati topológia nem változik
a kommunikációnak nincsen időigénye
a sávszélesség korlátlan
a kommunikációnak nincsen költsége
csak egy adminisztrátor van

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 15 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Elosztott rendszerek fajtái

Elosztott számítási rendszerek


grid
cloud
információs rendszerek
Elosztott információs rendszerek
Elosztott átható (pervasive, ubiquitous) rendszerek

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 16 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Elosztott számítási rendszerek

Számítási rendszer
Sok elosztott rendszer célja számítások végzése nagy teljesítménnyel.

Cluster (fürt)
Lokális hálózatra kapcsolt számítógépek összessége.
Homogén: ugyanaz az operációs rendszer, hardveresen nem vagy
csak alig térnek el
A vezérlés központosítva van, általában egyetlen gépre

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Elosztott számítási rendszerek

Master node Compute node Compute node Compute node

Management Component Component Component


application of of of
parallel parallel parallel
Parallel libs application application application

Local OS Local OS Local OS Local OS

Remote access Standard network


network
High-speed network

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 18 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Elosztott számítási rendszerek

Grid (rács)
Több gép, kevésbé egységesek:
Heterogén architektúra
Átívelhet több szervezeti egységen
Nagyméretű hálózatokra terjedhet ki

Megjegyzés
Az együttműködést sokszor virtuális szervezetek kialakításával segítik.
Ez a felhasználókat csoportosítja, akiknek így egységesen lehet
erőforrásokat kiutalni.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 19 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Elosztott számítási rendszerek

Felhő (cloud)
Többrétegű architektúra.

Google Apps
Software
aa Svc

Web services, multimedia, business apps YouTube


Flickr
Application
Software framework (Java/Python/.Net) MS Azure
Platform

Storage (DB, File) Amazon S3


aa Svc

Platforms

Computation (VM), storage (block) Amazon EC2


Infrastructure

Infrastructure
aa Svc

CPU, memory, disk, bandwidth Datacenters


Hardware

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 20 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Elosztott számítási rendszerek

Felhő
Négy különböző réteg:
Hardver: Processzorok, útválasztók (routerek), áramforrások,
hűtőberendezések. A felhasználók közvetlenül nem látják.
Infrastruktúra: Virtuális hardvert tesz elérhetővé: szerver,
adattároló, hálózati kapcsolat, számítási kapacitás lefoglalása és
kezelése.
Platform: Magasabb szintű absztrakciókat biztosít. Pl. az Amazon
S3 társzolgáltatás különböző fájlműveleteket biztosít; a
felhasználónak vödrei (bucket) vannak, ebbe feltölthet, letölthet
stb. fájlokat egy API segítségével .
Alkalmazás: A végfelhasználónak szánt, jellemzően grafikus
felületű alkalmazások.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 21 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Elosztott információs rendszerek

Elosztott információs rendszerek


Sok elosztott rendszer elsődleges célja adatok kezelése, illetve
meglevő ilyen rendszerek elérése. Példa: tranzakciókezelő rendszerek.

BEGIN_TRANSACTION(server, transaction)
READ(transaction, file-1, data)
WRITE(transaction, file-2, data)
newData := MODIFIED(data)
IF WRONG(newData) THEN
ABORT_TRANSACTION(transaction)
ELSE
WRITE(transaction, file-2, newData)
END_TRANSACTION(transaction)
END IF

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 22 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Elosztott információs rendszerek: tranzakciók


Modell
A tranzakció adatok összességén (adatbázis, objektumok vagy más adattár)
végzett művelet (lehetnek részműveletei), melynek az alábbi tulajdonságai
vannak. A kezdőbetűk rövidítéséből ACID-nek szokás nevezni a
követelményrendszert.

Oszthatatlan, elemi (atomicity): Vagy a teljes tranzakció végbemegy minden


részműveletével, vagy pedig az adattár egyáltalán nem változik meg.
Konzisztens (consistency): Az adattárra akkor mondjuk, hogy érvényes, ha
(az adattárra jellemző) feltételek teljesülnek rá. A tranzakció konzisztens,
ha érvényes állapotot állít elő. Ez a követelmény csak a tranzakció
végére vonatkozik: menet közben előállhat érvénytelen állapot.
Elkülönülő, sorosítható (isolation): Egyszerre zajló tranzakciók "nem
zavarják" egymást: olyan eredményt adnak, mintha egymás után sorban
futottak volna le.
Tartósság (durability): Végrehajtás után az eredményt tartós adattárolóra
mentjük, így a rendszer esetleges összeomlása után visszaállítható.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 23 / 31
1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Tranzakciófeldolgozó monitor (Transaction Processing


Monitor)
Megjegyzés
A tranzakciókat sokszor több szerver hajtja végre. Ezeket egy TP
monitor vezérli.

Server
Reply
Transaction Request
Requests
Request
Client Server
TP monitor
application
Reply
Reply
Request

Reply Server

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 24 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Alkalmazásintegráció nagy rendszerekben


Probléma
A TP monitor nem választja el az alkalmazásokat az adatbázisoktól.
Továbbá az alkalmazásoknak egymással is kommunikálniuk kell.

Client Client
application application

Communication middleware

Server-side Server-side Server-side


application application application

Távoli eljáráshívás (Remote Procedure Call, RPC)


Üzenetorientált köztesréteg (Message-Oriented Middleware, MOM)
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 25 / 31
1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Elosztott átható rendszerek

Átható rendszer
Sok modern elosztott rendszer kicsi, mobil elemekből áll.

Néhány jellemző
A környezet megváltozhat: A rendszernek ezt követnie kell.
Ad hoc szerveződés: A rendszer komponenseit nagyon különböző
módokon használhatják a felhasználók. Ezért a rendszernek könnyen
konfigurálhatónak kell lennie.
Megosztott szolgáltatások: Mivel a rendszer nagyon változékony, az
adatoknak könnyen kell áramlaniuk. Ennek elősegítésére a rendszer
elemei általában nagyon egyszerű szerkezetűek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 26 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Érzékelőhálózatok

Jellemzők
Az érzékelőket tartalmazó csúcsok
sok van belőlük (nagyságrendileg 10-1000 darab)
egyszerűek (kevés memória, számítási és kommunikációs
kapacitás)
sokszor elemről működnek, vagy áramforrás sem szükséges
hozzájuk

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 27 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Érzékelőhálózatok mint elosztott rendszerek


Sensor network

Operator's site

Sensor data
is sent directly
to operator

(a)

Each sensor
can process and Sensor network
store data
Operator's site
Query

Sensors
send only
answers
(b)
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 28 / 31
1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Példák
Tömegirányítás
Helyzet: rendezvény fix útvonalakkal (kiállítás, fesztivál)
Cél: az embereket a megfelelő helyre irányítani
a hasonló érdeklődésű emberek egy helyre menjenek
vészhelyzet esetén a fenti csoportokat ugyanahhoz a kijárathoz
irányítani
Cél: összetartozó embereket (pl. családokat) egyben tartani

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 29 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Példák

Szociális játék
Helyzet: Konferencia, a résztvevők különböző csoportokban
érkeztek.
Cél: A csoportok vegyítésének elősegítése.
Megközelítés: A rendszer figyeli, hogy a csoportok hogyan
viselkednek
Ha külön csoportokból származó embereket észlel, bónuszpontokat
kapnak az emberek és a csoportok egyaránt.
A rendszer kiosztja a csoportszintű pontokat a tagok között.
Az eredményeket elektronikus kitűzők mutatják (feedback and
social intervention).

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 30 / 31


1.1 Definíció 1.2 Célok 1.3 Elosztott rendszerek fajtái

Példa: Szociális játék


A szociális játék egy kitűzője.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 31 / 31


Elosztott rendszerek: Alapelvek és paradigmák
Distributed Systems: Principles and Paradigms

Maarten van Steen1 Kitlei Róbert 2


1 VU Amsterdam, Dept. Computer Science
2 ELTE Informatikai Kar

2. rész: Architektúrák
2015. május 24.
Tartalomjegyzék

Fejezet
01: Bevezetés
02: Architektúrák
03: Folyamatok
04: Kommunikáció
05: Elnevezési rendszerek
06: Szinkronizáció
07: Konzisztencia & replikáció
08: Hibatűrés
10: Objektumalapú elosztott rendszerek
11: Elosztott fájlrendszerek
12: Elosztott webalapú rendszerek

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 2 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés

Architektúrák

Architektúrafajták
Szoftverarchitektúrák
Architektúrák és köztesréteg
Az elosztott rendszerek önszervezése

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 3 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés

Architektúrafajták
Alapötlet
A rendszer elemeit szervezzük logikai szerepük szerint különböző
komponensekbe, és ezeket osszuk el a rendszer gépein.

Layer N Object Object

Layer N-1
Object Method call
Request Response
flow flow

Object
Layer 2
Object

Layer 1

(a) (b)

(a) A többrétegű megközelítés kliens-szerver rendszerek esetén jól működik


(b) Itt a komponensek (objektumok) összetettebb struktúrában
kommunikálnak, mindegyik közvetlenül küld üzeneteket a többieknek.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 4 / 26
2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés

Architektúrafajták

További architektúrafajták
A komponensek közötti kommunikáció történhet közvetlen kapcsolat nélkül
(„anonim”), illetve egyidejűség nélkül („aszinkron”).

Component Component Component Component

Event delivery Publish


Data delivery
Event bus

Publish Shared (persistent) data space

Component

(a) (b)

(a) Publish/subscribe modell (térben független)


(b) Megosztott, perzisztens adattár (térben és időben független)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 5 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Központosított architektúrák

Egyszerű kliens–szerver modell


Jellemzői:
egyes folyamatok szolgáltatásokat ajánlanak ki (ezek a szerverek)
más folyamatok ezeket a szolgáltatásokat szeretnék használni
(ezek a kliensek)
a kliensek és a szerverek különböző gépeken lehetnek
a kliens kérést küld (amire a szerver válaszol), így veszi igénybe a
szolgáltatást

Wait for result


Client

Request Reply

Server
Provide service Time

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 6 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Többrétegű architektúrák

Elosztott információs rendszerek rétegelése


Az elosztott információs rendszerek gyakran három logikai rétegre
(„layer” vagy „tier”) vannak tagolva.

Háromrétegű architektúra
Megjelenítés (user interface): az alkalmazás felhasználói felületét
alkotó komponensekből áll
Üzleti logika (application): az alkalmazás működését írja le
(konkrét adatok nélkül)
Perzisztencia (data layer): az adatok tartós tárolása

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 7 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Többrétegű architektúrák

User-interface
User interface level

HTML page
Keyword expression containing list
HTML
generator Processing
Query Ranked list level
generator of page titles
Ranking
Database queries algorithm

Web page titles


with meta-information
Database Data level
with Web pages

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 8 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Többrétegű architektúrák
A három rétegből néha több is egy gépen található meg.
Kétrétegű architektúra: kliens/egyszerű szerver
Egyrétegű architektúra: nagygépre (mainframe) kötött terminál
A kétrétegű architektúra többféleképpen bonthatja fel a három réteget:
Client machine

User interface User interface User interface User interface User interface
Application Application Application
Database

User interface

Application Application Application


Database Database Database Database Database

Server machine

(a) (b) (c) (d) (e)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 9 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Decentralizált architektúrák
Peer-to-peer architektúra
Az utóbbi években a peer-to-peer (P2P) architektúra egyre
népszerűbbé válik. A „peer” szó arra utal, hogy a csúcsok között
(többnyire) nincsenek kitüntetett szerepűek.
strukturált P2P: a csúcsok által kiadott gráfszerkezet rögzített
strukturálatlan P2P: a csúcsok szomszédai véletlenszerűek
hibrid P2P: néhány csúcsnak speciális szerepe van, ezek a
többitől eltérő szervezésűek

Overlay hálózat
overlay: A gráfban szomszédos csúcsok a fizikai hálózaton lehetnek
távol egymástól, a rendszer elfedi, hogy a köztük levő kommunikáció
több gépet érintve történik.
A legtöbb P2P rendszer overlay hálózatra épül.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 10 / 26
2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Strukturált P2P rendszerek


Alapötlet
A csúcsokat valamilyen struktúra szerint overlay hálózatba szervezzük
(pl. logikai gyűrű), és a csúcsoktól az azonosítójuk alapján lehet
szolgáltatásokat igénybe venni.

Actual node
0
15 1
14 {13,14,15} {0,1} 2 Példa: elosztott hasítótábla
Ebben a rendszerben kulcs-érték
13 3
párokat tárolunk.
12 {8,9,10,11,12} {2,3,4} 4 Az adott értéket tároló csúcsot
Associated hatékonyan meg lehet keresni a
data keys
11 5 kulcsa alapján, akármelyik csúcsra
10 {5,6,7} 6
is érkezik be a kérés.
9 7
8

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 11 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Strukturált P2P rendszerek


Példa: d dimenziós particionált tér
Az adatoknak most d mezője van, kulccsal nem rendelkeznek.
Az így adódó tér fel van osztva annyi tartományra, ahány csúcsunk
van; minden csúcs valamelyik tartomány adataiért felelős.
Ha egy új csúcs érkezik, kettébontunk egy tartományt.
Keys associated with
node at (0.6,0.7)
(0,1) (1,1)

(0.9,0.9) (0.9,0.9)

(0.2,0.8) (0.2,0.8)

(0.6,0.7) (0.6,0.7)
Actual node (0.9,0.6) (0.9,0.6)

(0.2,0.45)

(0.2,0.3)

(0.7,0.2) (0.7,0.2)
(0.2,0.15)

(0,0) (1,0)
(a)
(b)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 12 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Strukturálatlan P2P rendszerek

Strukturálatlan P2P rendszer


A strukturálatlan P2P rendszerek igyekeznek véletlen gráfstruktúrát
fenntartani.
Mindegyik csúcsnak csak részleges nézete van a gráfról (a teljes
hálózatnak csak egy kis részét látja).
Minden P csúcs időközönként kiválaszt egy szomszédos Q csúcsot
P és Q információt cserél, valamint átküldik egymásnak az általuk ismert
csúcsokat

Megjegyzés
A rendszer hibatűrését és a gráf véletlenszerűségét nagyban befolyásolja az,
hogy a harmadik lépésben pontosan milyen adatok kerülnek át.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 13 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Strukturálatlan P2P: pletykálás


Aktív szál Passzív szál
selectPeer(&B);
selectToSend(&bufs);
sendTo(B, bufs); receiveFromAny(&A, &bufr);
selectToSend(&bufs);
receiveFrom(B, &bufr); sendTo(A, bufs);
selectToKeep(cache, bufr); selectToKeep(cache, bufr);

selectPeer: A részleges nézetből kiválaszt egy szomszédot.


selectToSend: Az általa ismert szomszédok közül kiválaszt n darabot.
selectToKeep: (1) A megkapott csúcsokat eltárolja lokálisan.
(2) Eltávolítja a többszörösen szereplő csúcsokat.
(3) A tárolt csúcsok számát m darabra csökkenti. Erre
többfajta stratégia lehetséges.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Strukturálatlan P2P: pletykálás


Aktív szál Passzív szál
selectPeer(&B);
selectToSend(&bufs);
sendTo(B, bufs); receiveFromAny(&A, &bufr);
selectToSend(&bufs);
receiveFrom(B, &bufr); sendTo(A, bufs);
selectToKeep(cache, bufr); selectToKeep(cache, bufr);

selectPeer: A részleges nézetből kiválaszt egy szomszédot.


selectToSend: Az általa ismert szomszédok közül kiválaszt n darabot.
selectToKeep: (1) A megkapott csúcsokat eltárolja lokálisan.
(2) Eltávolítja a többszörösen szereplő csúcsokat.
(3) A tárolt csúcsok számát m darabra csökkenti. Erre
többfajta stratégia lehetséges.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Strukturálatlan P2P: pletykálás


Aktív szál Passzív szál
selectPeer(&B);
selectToSend(&bufs);
sendTo(B, bufs); receiveFromAny(&A, &bufr);
selectToSend(&bufs);
receiveFrom(B, &bufr); sendTo(A, bufs);
selectToKeep(cache, bufr); selectToKeep(cache, bufr);

selectPeer: A részleges nézetből kiválaszt egy szomszédot.


selectToSend: Az általa ismert szomszédok közül kiválaszt n darabot.
selectToKeep: (1) A megkapott csúcsokat eltárolja lokálisan.
(2) Eltávolítja a többszörösen szereplő csúcsokat.
(3) A tárolt csúcsok számát m darabra csökkenti. Erre
többfajta stratégia lehetséges.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Strukturálatlan P2P: pletykálás


Aktív szál Passzív szál
selectPeer(&B);
selectToSend(&bufs);
sendTo(B, bufs); receiveFromAny(&A, &bufr);
selectToSend(&bufs);
receiveFrom(B, &bufr); sendTo(A, bufs);
selectToKeep(cache, bufr); selectToKeep(cache, bufr);

selectPeer: A részleges nézetből kiválaszt egy szomszédot.


selectToSend: Az általa ismert szomszédok közül kiválaszt n darabot.
selectToKeep: (1) A megkapott csúcsokat eltárolja lokálisan.
(2) Eltávolítja a többszörösen szereplő csúcsokat.
(3) A tárolt csúcsok számát m darabra csökkenti. Erre
többfajta stratégia lehetséges.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Strukturálatlan P2P: pletykálás


Aktív szál Passzív szál
selectPeer(&B);
selectToSend(&bufs);
sendTo(B, bufs); receiveFromAny(&A, &bufr);
selectToSend(&bufs);
receiveFrom(B, &bufr); sendTo(A, bufs);
selectToKeep(cache, bufr); selectToKeep(cache, bufr);

selectPeer: A részleges nézetből kiválaszt egy szomszédot.


selectToSend: Az általa ismert szomszédok közül kiválaszt n darabot.
selectToKeep: (1) A megkapott csúcsokat eltárolja lokálisan.
(2) Eltávolítja a többszörösen szereplő csúcsokat.
(3) A tárolt csúcsok számát m darabra csökkenti. Erre
többfajta stratégia lehetséges.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Strukturálatlan P2P: pletykálás


Aktív szál Passzív szál
selectPeer(&B);
selectToSend(&bufs);
sendTo(B, bufs); receiveFromAny(&A, &bufr);
selectToSend(&bufs);
receiveFrom(B, &bufr); sendTo(A, bufs);
selectToKeep(cache, bufr); selectToKeep(cache, bufr);

selectPeer: A részleges nézetből kiválaszt egy szomszédot.


selectToSend: Az általa ismert szomszédok közül kiválaszt n darabot.
selectToKeep: (1) A megkapott csúcsokat eltárolja lokálisan.
(2) Eltávolítja a többszörösen szereplő csúcsokat.
(3) A tárolt csúcsok számát m darabra csökkenti. Erre
többfajta stratégia lehetséges.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Strukturálatlan P2P: pletykálás


Aktív szál Passzív szál
selectPeer(&B);
selectToSend(&bufs);
sendTo(B, bufs); receiveFromAny(&A, &bufr);
selectToSend(&bufs);
receiveFrom(B, &bufr); sendTo(A, bufs);
selectToKeep(cache, bufr); selectToKeep(cache, bufr);

selectPeer: A részleges nézetből kiválaszt egy szomszédot.


selectToSend: Az általa ismert szomszédok közül kiválaszt n darabot.
selectToKeep: (1) A megkapott csúcsokat eltárolja lokálisan.
(2) Eltávolítja a többszörösen szereplő csúcsokat.
(3) A tárolt csúcsok számát m darabra csökkenti. Erre
többfajta stratégia lehetséges.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay hálózatok topológiájának kezelése

Alapötlet
Különböztessünk meg két réteget:
(1) az alsó rétegben a csúcsoknak csak részleges nézete van;
(2) a felső rétegbe csak kevés csúcs kerülhet.
Az alsó réteg véletlenszerű csúcsokat ad át a felső rétegnek; a felső réteg
ezek közül csak keveset tart meg.

Protocol for
Structured Links to topology-
specific
overlay specific other nodes
overlay

Random peer

Protocol for
Random Links to randomly
randomized
overlay chosen other nodes
view

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 15 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: tórusz


Tórusz overlay topológia kialakítása
Ha megfelelően választjuk meg, milyen csúcsokat tartson meg a felső réteg,
akkor a kezdetben véletlenszerű overlay kapcsolatok hamarosan szabályos
alakba rendeződnek.
Itt egy távolságfüggvény szerinti megtartó szabály hat (az overlay a közelieket
veszi át), és már az első néhány lépés után jól látszik a kijövő tórusz-alakzat.

Time
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 16 / 26
2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Overlay topológia: példa: clusterezés


Most mindegyik i csúcshoz hozzárendelünk egy GID(i) ∈ N számot, és
azt mondjuk, hogy i a GID(i) csoportba tartozik. Szintén
távolságfüggvényt használunk:

1 ha GID(i) = GID(j)
dist(i, j) =
0 ha GID(i) 6= GID(j)
Itt is igen gyorsan kialakul a kívánt szerkezet: csak az azonos
csoportbeli csúcsok között lesz kapcsolat, kialakulnak a clusterek.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Superpeer csúcsok

Superpeer
superpeer: olyan kisszámú csúcs, amelyeknek külön feladata van

Néhány jellemző feladat


Regular peer
kereséshez index
Superpeer fenntartása
a hálózat állapotának
felügyelete
Superpeer
network csúcsok közötti
kapcsolatok létrehozása

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 18 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Hibrid arch.: kliens-szerver + P2P: edge szerver


Példa
edge szerver: az adatokat tároló szerver, a kliensekhez minél közelebb
van elhelyezve, jellemzően ott, ahol egy nagyobb hálózat az Internetre
csatlakozik
Content Delivery Network (CDN) rendszerekben jellemző, a
tartalomszolgáltatás hatékonyságát növelik és költségét csökkentik.

Client Content provider

ISP
ISP

Core Internet

Edge server
Enterprise network

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 19 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 A

Hibrid arch.: kliens-szerver + P2P: BitTorrent

Client node
K out of N nodes

Node 1
Lookup(F)

A BitTorrent .torrent file List of nodes Node 2


Web page Ref. to for F Ref. to storing F
file tracker
Web server server File server Tracker
Node N

Alapötlet
Miután a csúcs kiderítette, melyik másik csúcsok tartalmaznak
részeket a kívánt fájlból, azokat párhuzamosan tölti le, és egyúttal
önmaga is kiajánlja megosztásra.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 20 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés

Architektúrák és köztesréteg

Probléma
Előfordulhat, hogy az elosztott rendszer/alkalmazás szerkezete nem
felel meg a megváltozott igényeknek.
Ilyenkor legtöbbször nem kell újraírni a teljes rendszert: elegendő lehet
(dinamikusan) adaptálni a köztesréteg viselkedését.

Interceptor
interceptor: Távoli objektum elérése során a vezérlés szokásos
menetébe avatkozik bele, pl. átalakíthatja más formátumra a kérést.
Jellemzően az architektúra rétegei közé illeszthető.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 21 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés

Interceptors

Client application
Intercepted call
B.do_something(value)

Application stub

Request-level interceptor Nonintercepted call

invoke(B, &do_something, value)

Object middleware

Message-level interceptor

send([B, "do_something", value])

Local OS

To object B

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 22 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés

Adaptív middleware

Funkciók szétválasztása (separation of concerns): A szoftver


különböző jellegű funkciói váljanak minél jobban külön, így azokat
könnyebb egymástól függetlenül módosítani.
Önvizsgálat (reflection): A program legyen képes feltárni a saját
szerkezetét, és futás közben módosítani azt.
Komponensalapú szervezés: Az elosztott alkalmazás legyen
moduláris, a komponensei legyenek könnyen cserélhetőek. A
komponensek közötti függések legyenek egyértelműek, és csak
annyi legyen belőlük, amennyi feltétlenül szükséges.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 23 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés

Önszervező elosztott rendszerek

Adaptív rendszer képességei


Az egyes szoftverelemek adaptivitása kihat a rendszerre, ezért
megvizsgáljuk, hogyan lehet adaptív rendszereket készíteni.
Különféle elvárásaink lehetnek:
Önkonfiguráció
Önkezelő
Öngyógyító
Önoptimalizáló
Ön*

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 24 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés

Adaptivitás visszacsatolással
Visszacsatolásos modell
Az ön* rendszerek sokszor az alábbi jellegű visszacsatolásos
vezérléssel rendelkeznek: mérik, hogy a rendszer mennyire tér el a
kívánt tulajdonságoktól, és szükség szerint változtatnak a
beállításokon.

Uncontrollable parameters (disturbance / noise)

Initial configuration Corrections Observed output


Core of distributed system
+/- +/-
+/-
Reference input
Adjustment Metric
measures estimation

Analysis
Adjustment triggers Measured output

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 25 / 26


2.1 Architektúrafajták 2.2 Rendszerarchitektúrák 2.3 Architektúrák és köztesréteg 2.4 Önszervezés

Példa: Globule
Client

Origin server
ISP
ISP

Core Internet

Replica server
Enterprise network

Client Client

Kollaboratív webes CDN, a tartalmakat költségmodell alapján


helyezi el (minden szempontra: fontosság×költség).
A központi szerver (origin server) elemzi, ami történt, és az
alapján állítja be a fontossági paramétereket, hogy mi történt
volna, ha P oldalt az S edge szerver tárolta volna.
A számításokat különböző stratégiákra végzi el, végül a legjobbat
választja ki.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 26 / 26
Elosztott rendszerek: Alapelvek és paradigmák
Distributed Systems: Principles and Paradigms

Maarten van Steen1 Kitlei Róbert 2


1 VU Amsterdam, Dept. Computer Science
2 ELTE Informatikai Kar

3. rész: Folyamatok
2015. május 24.
Tartalomjegyzék

Fejezet
01: Bevezetés
02: Architektúrák
03: Folyamatok
04: Kommunikáció
05: Elnevezési rendszerek
06: Szinkronizáció
07: Konzisztencia & replikáció
08: Hibatűrés
10: Objektumalapú elosztott rendszerek
11: Elosztott fájlrendszerek
12: Elosztott webalapú rendszerek

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 2 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Szálak: bevezetés
Alapötlet
A legtöbb hardvereszköznek létezik szoftveres megfelelője.

Processzor (CPU): Hardvereszköz, utasításokat képes sorban végrehajtani,


amelyek egy megadott utasításkészletből származnak.
Szál (thread): A processzor egyfajta szoftveres megfelelője, minimális
kontextussal (környezettel). Ha a szálat megállítjuk, a kontextus
elmenthető és továbbfuttatáshoz visszatölthető.
Folyamat (process, task): Egy vagy több szálat összefogó nagyobb egység.
Egy folyamat szálai közös memóriaterületen (címtartományon)
dolgoznak, azonban különböző folyamatok nem látják egymás
memóriaterületét.

Hasonló elnevezések
Fontos: nem összekeverendő!

stream = folyam 6= folyamat = processz 6= processzor


Maarten van Steen, Kitlei Róbert Elosztott rendszerek 3 / 30
3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Kontextusváltás
Kontextusváltás
kontextusváltás: A másik folyamatnak/szálnak történő
vezérlésátadás, illetve a megfelelő kontextusok cseréje. Így egy
processzor több folyamatot/szálat is végre tud hajtani.
Processzor kontextusa: Az utasítások végrehajtásában szerepet
játszó kisszámú regiszter (elemi értéktároló) tartalma.
Szál kontextusa: Jellemzően nem sokkal bővebb a
processzorkontextusnál. A szálak közötti váltáshoz nem kell
igénybe venni az operációs rendszer szolgáltatásait.
Folyamat kontextusa: Ahhoz, hogy a régi és az új folyamat
memóriaterülete elkülönüljön, a memóriavezérlő (memory
management unit, MMU) tartalmának jórészét át kell írni, amire
csak a kernel szintnek van joga.
A folyamatok létrehozása, törlése és a kontextusváltás köztük
sokkal költségesebb a szálakénál.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 4 / 30
3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Szálak és operációs rendszerek

Hol legyenek a szálak?


A szálakat kezelheti az operációs rendszer, vagy tőle független
szálkönyvtárak. Mindkét megközelítésnek vannak előnyei és hátrányai.

Szálak folyamaton belül: szálkönyvtárak


előny: Minden műveletet egyetlen folyamaton belül kezelünk, ez
hatékony.
hátrány: Az operációs rendszer számára a szál minden művelete a
gazdafolyamattól érkezik ⇒ ha a kernel blokkolja a szálat (pl.
lemezművelet során), a folyamat is blokkolódik.
hátrány: Ha a kernel nem látja a szálakat közvetlenül, hogyan tud
szignálokat közvetíteni nekik?

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 5 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Szálak és operációs rendszerek

Szálak folyamaton kívül: kernelszintű szálak


A szálkönyvtárak helyezhetőek kernelszintre is. Ekkor minden szálművelet
rendszerhíváson keresztül érhető el.
előny: A szálak blokkolása nem okoz problémát: a kernel be tudja
ütemezni a gazdafolyamat egy másik szálát.
előny: A szignálokat a kernel a megfelelő szálhoz tudja irányítani.
hátrány: Mivel minden művelet a kernelt érinti, ez a hatékonyság
rovására megy.

Köztes megoldás?
Lehet-e olyan megoldást találni, ami ötvözi a fenti két megközelítés előnyeit?

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 6 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Solaris szálak
Könnyűsúlyú folyamatok
könnyűsúlyú folyamat (lightweight process, LWP): Kernelszintű szálak,
amelyek felhasználói szintű szálkezelőket futtatnak.

Thread state

User space
Thread

Lightweight process
Kernel space

LWP executing a thread

Támogatottsága
A legtöbb rendszer az előző két megközelítés valamelyikét támogatja.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 7 / 30
3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Szálak a kliensoldalon
Példa: többszálú webkliens
A hálózat késleltetésének elfedése:
A böngésző letöltött egy oldalt, ami több másik tartalomra hivatkozik.
Mindegyik tartalmat külön szálon tölti le, amíg a HTTP kéréseket
kiszolgálják, ezek blokkolódnak.
Amikor egy-egy fájl megérkezik, a blokkolás megszűnik, és a böngésző
megjeleníti a tartalmat.

Példa: több távoli eljáráshívás (RPC) egyszerre


Egy kliens több távoli szolgáltatást szeretne igénybe venni. Mindegyik
kérést külön szál kezeli.
Megvárja, amíg mindegyik kérésre megérkezik a válasz.
Ha különböző gépekre irányulnak a kérések, akár lineáris mértékű
gyorsulás is elérhető így.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 8 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Szálak a szerveroldalon
Cél: a hatékonyság növelése
Szálakat sokkal olcsóbb elindítani, mint folyamatokat (idő- és tárigény
szempontjából egyaránt).
Mivel egy processzor csak egy szálat tud végrehajtani, a
többprocesszoros rendszerek kapacitását csak többszálú szerverek
képesek kihasználni.
A kliensekhez hasonlóan, a hálózat késleltetését lehet elfedni azzal, ha
egyszerre több kérést dolgoz fel a szerver.

Cél: a program szerkezetének javítása


A program jobban kezelhető lehet, ha sok egyszerű, blokkoló hívást
alkalmaz, mint más szerkezet esetén. Ez némi teljesítményveszteséggel
járhat.
A többszálú programok sokszor kisebbek és könnyebben érthetőek, mert
jobban átlátható, merre halad a vezérlés.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 9 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Virtualizáció
Fontossága
A virtualizáció szerepe egyre nő több okból.
A hardver gyorsabban fejlődik a szoftvernél
Növeli a kód hordozhatóságát és költöztethetőségét
A hibás vagy megtámadott rendszereket könnyű így elkülöníteni

Program

Interface A
Program Implementation of
mimicking A on B
Interface A Interface B

Hardware/software system A Hardware/software system B

(a) (b)
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 10 / 30
3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

A virtuális gépek szerkezete


Virtualizálható komponensek
A rendszereknek sokfajta olyan rétege van, amely mentén virtualizálni
lehet a komponenseket. Mindig eldöntendő, milyen interfészeket kell
szolgáltatnia a virtuális gépnek (és milyeneket vehet igénybe).

Library functions Application

Library
System calls

Privileged Operating system General


instructions instructions
Hardware

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 11 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Process VM, VM monitor

Application Applications
Runtime system Operating system
Runtime system Operating system
Runtime system Operating system

Operating system Virtual machine monitor

Hardware Hardware

(a) (b)

Process VM: A virtuális gép (virtual machine, VM) közönséges


programként fut, bájtkódot (előfordított programkódot) hajt végre.
Pl. JVM, CLR, de vannak speciális célúak is, pl. ScummVM.
VM Monitor (VMM), hypervisor: Hardver teljeskörű virtualizációja,
bármilyen program és operációs rendszer futtatására képes. Pl.
VMware, VirtualBox.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 12 / 30
3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

VM monitorok működése

VM monitorok működése
Sok esetben a VMM egy operációs rendszeren belül fut.
A VMM a futtatott gépi kódú utasításokat átalakítja a gazdagép
utasításaivá, és azokat hajtja végre.
A rendszerhívásokat és egyéb privilegizált utasításokat, amelyek
végrehajtásához az operációs rendszer közreműködésére lenne
szükség, megkülönböztetett módon kezeli.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 13 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Kliens: felhasználói felület


Essence
A kliensoldali szoftver egyik legfontosabb feladata a (grafikus)
felhasználói interfész biztosítása.

Application server Application server User's terminal

Window Application Xlib interface


manager

Xlib Xlib
Local OS Local OS X protocol

X kernel
Device drivers

Terminal (includes display


keyboard, mouse, etc.)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Kliens: átlátszóság

A kliensekkel kapcsolatos főbb átlátszóságok


hozzáférési: az RPC kliensoldali csonkja
elhelyezési/áthelyezési: a kliensoldali szoftver tartja számon, hol
helyezkedik el az erőforrás
többszörözési: a klienscsonk kezeli a többszörözött hívásokat
Client machine Server 1 Server 2 Server 3

Client Server Server Server


appl. appl appl appl

Client side handles


request replication Replicated request

meghibásodási: sokszor csak a klienshez helyezhető – csak ott jelezhető


a kommunikációs probléma

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 15 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Szerver: általános szerkezet

Általános modell
szerver: Olyan folyamat, amely egy (vagy akár több) porton várja a
kliensek kéréseit. Egy adott porton (ami egy 0 és 65535 közötti szám)
a szerver egyfajta szolgáltatást nyújt.
A 0-1023 portok közismert szolgáltatásokat nyújtanak, ezeket Unix
alapú rendszereken csak rendszergazdai jogosultsággal lehet foglalni.

ftp-data 20 File Transfer [adatátvitel]


ftp 21 File Transfer [vezérlés]
ssh 22 Secure Shell
telnet 23 Telnet
smtp 25 Simple Mail Transfer
login 49 Login Host Protocol

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 16 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Szerver: általános szerkezet

Szerverfajták
szuperszerver : Olyan szerver, amelyik több porton figyeli a bejövő
kapcsolatokat, és amikor új kérés érkezik, új folyamatot/szálat indít
annak kezelésére. Pl. Unix rendszerekben: inetd.
iteratív↔konkurens szerver : Az iteratív szerverek egyszerre csak egy
kapcsolatot tudnak kezelni, a konkurensek párhuzamosan többet
is.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Szerver: sávon kívüli kommunikáció


Sürgős üzenetek küldése
Meg lehet-e szakítani egy szerver működését kiszolgálás közben?

Külön port
A szerver két portot használ, az egyik a sürgős üzeneteknek van fenntartva:
Ezt külön szál/folyamat kezeli
Amikor fontos üzenet érkezik, a normál üzenet fogadása szünetel
A szálnak/folyamatnak nagyobb prioritást kell kapnia, ehhez az
oprendszer támogatása szükséges

Sávon kívüli kommunikáció


Sávon kívüli kommunikáció használata, ha rendelkezésre áll:
Pl. a TCP protokoll az eredeti kérés kapcsolatán keresztül képes sürgős
üzenetek továbbítására
Szignálok formájában kapható el a szerveren belül
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 18 / 30
3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Szerver: állapot
Állapot nélküli szerver
Nem tart fenn információkat a kliensről a kapcsolat bontása után.
Nem tartja számon, melyik kliens milyen fájlból kért adatokat
Nem ígéri meg, hogy frissen tartja a kliens gyorsítótárát
Nem tartja számon a bejelentkezett klienseket: nincsen munkamenet
(session)

Következmények
A kliensek és a szerverek teljesen függetlenek egymástól
Kevésbé valószínű, hogy inkonzisztencia lép fel azért, mert valamelyik
oldal összeomlik
A hatékonyság rovására mehet, hogy a szerver nem tud semmit a
kliensről, pl. nem tudja előre betölteni azokat az adatokat, amelyekre a
kliensnek szüksége lehet

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 19 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Szerver: állapot

Állapotteljes szerverek
Állapotot tart számon a kliensekről:
Megjegyzi, melyik fájlokat használta a kliens, és ezeket előre meg
tudja nyitni legközelebb
Megjegyzi, milyen adatokat töltött le a kliens, és frissítéseket
küldhet neki

Előnyök és hátrányok
Az állapotteljes szerverek nagyon hatékonyak tudnak lenni, ha a
kliensek lokálisan tárolhatnak adatokat.
Az állapotteljes rendszereket megfelelően megbízhatóvá is lehet tenni
a hatékonyság jelentős rontása nélkül.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 20 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Szerver: háromrétegű clusterek

Logical switch Application/compute servers Distributed


(possibly multiple) file/database
system

Dispatched
request
Client requests

First tier Second tier Third tier

A diszpécserréteg
Az első réteg feladata nagyon fontos: a beérkező kéréseket
hatékonyan kell a megfelelő szerverhez továbbítani.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 21 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

A kérések kezelése
Szűk keresztmetszet
Ha minden kapcsolatot végig az első réteg kezel, könnyen szűk
keresztmetszetté válhat.

Egy lehetséges megoldás


A terhelés csökkenthető, ha a kapcsolatot átadjuk (TCP handoff).

Logically a
single TCP Response Server
connection

Request
Request (handed off)
Client Switch

Server

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 22 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Elosztott rendszerek: mobil IPv6

Believes server Client 1 Knows that Cient 1 Distributed server X


has address HA believes it is X
Server 1
Believes it is APP
connected to X Access point
TCP
with address CA1
Believes location MIPv6
of X is CA1
IP

Internet

Believes server Client 2 Server 2


has address HA
Believes it is APP
connected to X TCP
Access point
Believes location MIPv6 with address CA2
of X is CA2 IP
Knows that Cient 2
believes it is X

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 23 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Elosztott rendszerek: mobil IPv6


Essence
A mobil IPv6-ot támogató kliensek az elosztott szolgáltatás bármelyik
peer-jéhez kapcsolódhatnak.
A C kliens kapcsolódik a szerver otthonának (home address, HA)
IPv6 címéhez
A HA címen a szerver hazai ügynöke (home agent) fogadja a
kérést, és a megfelelő felügyeleti címre (care-of address, CA)
továbbítja
Ezután C és CA már közvetlenül tudnak kommunikálni (HA
érintése nélkül)

Példa: kollaboratív CDN-ek


Az origin server tölti be HA szerepét, és átadja a beérkező kapcsolatot
a megfelelő peer szervernek. A kliensek számára az origin és a peer
egy szervernek látszik.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 24 / 30
3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Kódmigráció: jellemző feladatok


Kódmigráció
kódmigráció: olyan kommunikáció, amely során nem csak adatokat
küldünk át

Jellemző feladatok
Néhány jellemző feladat, amelyhez kódmigrációra van szükség.a
Client-Server: a szokásos kliens-szerver kommunikáció, nincsen
kódmigráció
Remote Evaluation: a kliens feltölti a kódot, és a szerveren futtatja
Code on Demand: a kliens letölti a kódot a szerverről, és helyben
futtatja
Mobile Agent: a mobil ágens feltölti a kódját és az állapotát, és a
szerveren folytatja a futását
aA következő fólia ezeket a rövidítéseket tartalmazza.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 25 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Kódmigráció: jellemző feladatok


Before execution After execution
Client Server Client Server

code code
CS state state*
resource resource

code code
REV → state → state*
resource resource

code code
CoD state ← state* ←
resource resource

code code
MA state → → state*
resource resource resource resource

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 26 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Kódmigráció: gyenge és erős mobilitás


Objektumkomponensek
Kódszegmens: a programkódot tartalmazza
Adatszegmens: a futó program állapotát tartalmazza
Végrehajtási szegmens: a futtató szál környezetét tartalmazza

Gyenge mobilitás
A kód- és adatszegmens mozgatása (a kód újraindul):
Viszonylag egyszerű megtenni, különösen, ha a kód hordozható
Irány szerint: feltöltés (push, ship), letöltés (pull, fetch)

Erős mobilitás
A komponens a végrehajtási szegmenssel együtt költözik
Migráció: az objektum átköltözik az egyik gépről a másikra
Klónozás: a kód másolata kerül a másik gépre, és ugyanabból az
állapotból indul el, mint az eredeti; az eredeti is fut tovább
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 27 / 30
3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Kódmigráció: az erőforrások elérése


Erőforrások elérése
Az eredeti gépen található erőforrások költözés után a kód számára
távoliakká válnak.

Erőforrás–gép kötés erőssége


Mozdíthatatlan: nem költöztethető (pl. fizikai hardver)
Rögzített: költöztethető, de csak drágán (pl. nagy adatbázis)
Csatolatlan: egyszerűen költöztethető (pl. gyorsítótár)

Komponens–erőforrás kötés jellege


Milyen jellegű erőforrásra van szüksége a komponensnek?
Azonosítókapcsolt: egy konkrét (pl. a cég adatbázisa)
Tartalomkapcsolt: adott tartalmú (pl. bizonyos elemeket
tartalmazó cache)
Típuskapcsolt: adott jellegű (pl. színes nyomtató)
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 28 / 30
3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Kódmigráció: az erőforrások elérése

Kapcsolat az erőforrással
Hogyan tud a komponens kapcsolatban maradni az erőforrással?
Típuskapcsolt erőforrás esetén a legkönnyebb újrakapcsolódni
egy lokális, megfelelő típusú erőforráshoz
Azonosítókapcsolt vagy tartalomkapcsolt esetben:
rendszerszintű hivatkozást létesíthetünk az eredeti erőforrásra,
mozdíthatatlan erőforrások esetén ez az egyetlen lehetőség
minden más esetben is szóba jöhet, de általában van jobb megoldás
azonosítókapcsolt erőforrást érdemes áthelyeznia
tartalomkapcsolt erőforrást érdemes lemásolnia
a ha nem túl költséges

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 29 / 30


3.1 Szálak 3.2 Virtualizáció 3.3 Kliens 3.4 Szerver 3.5 Kódmigráció

Kódmigráció: heterogén rendszerben

Nehézségek
A célgép nem biztos, hogy képes futtatni a migrált kódot
A processzor-, szál- és/vagy folyamatkörnyezet nagyban függ a
lokális hardvertől, oprendszertől és futtatókörnyezettől

Megoldás problémás esetekben


Virtuális gép használata: akár process VM, akár hypervisor.
Természetesen a virtuális gépnek elérhetőnek kell lennie mindkét
környezetben.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 30 / 30


Elosztott rendszerek: Alapelvek és paradigmák
Distributed Systems: Principles and Paradigms

Maarten van Steen1 Kitlei Róbert 2


1 VU Amsterdam, Dept. Computer Science
2 ELTE Informatikai Kar

4. rész: Kommunikáció
2015. május 24.
Tartalomjegyzék

Fejezet
01: Bevezetés
02: Architektúrák
03: Folyamatok
04: Kommunikáció
05: Elnevezési rendszerek
06: Szinkronizáció
07: Konzisztencia & replikáció
08: Hibatűrés
10: Objektumalapú elosztott rendszerek
11: Elosztott fájlrendszerek
12: Elosztott webalapú rendszerek

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 2 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Az ISO/OSI hálózatkezelési modell

Application protocol
Application 7
Presentation protocol
Presentation 6
Session protocol
Session 5
Transport protocol
Transport 4
Network protocol
Network 3
Data link protocol
Data link 2
Physical protocol
Physical 1

Network

Hátrányok
Csak az üzenetküldésre koncentrál
Az (5) és (6) rétegek legtöbbször nem jelennek meg ilyen tisztán
Az elérési átlátszóság nem teljesül ebben a modellben

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 3 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Az alsó rétegek

A rétegek feladatai
Fizikai réteg: a bitek átvitelének fizikai részleteit írja le
Adatkapcsolati réteg: az üzeneteket keretekre tagolja, célja a
hibajavítás és a hálózat terhelésének korlátozása
Hálózati réteg: a hálózat távoli gépei között közvetít csomagokat
útválasztás (routing) segítségével

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 4 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Szállítási réteg

Absztrakciós alap
A legtöbb elosztott rendszer a szállítási réteg szolgáltatásaira épít.

A legfőbb protokollok
TCP: kapcsolatalapú, megbízható, sorrendhelyes átvitel
UDP: nem (teljesen) megbízható, általában kis üzenetek
(datagram) átvitele

Csoportcímzés
IP-alapú többcímű üzenetküldés (multicasting) sokszor elérhető, de
legfeljebb a lokális hálózaton belül használatos.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 5 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Köztesréteg
Szolgáltatásai
A köztesrétegbe (middleware) olyan szolgáltatásokat és protokollokat
szokás sorolni, amelyek sokfajta alkalmazáshoz lehetnek hasznosak.

Sokfajta kommunikációs protokoll


Sorosítás ((de)serialization, (un)marshalling), adatok
reprezentációjának átalakítása (elküldésre vagy elmentésre)
Elnevezési protokollok az erőforrások megosztásának
megkönnyítésére
Biztonsági protokollok a kommunikáció biztonságossá tételére
Skálázási mechanizmusok adatok replikációjára és
gyorsítótárazására

Alkalmazási réteg
Az alkalmazások készítőinek csak az alkalmazás-specifikus
protokollokat kell önmaguknak implementálniuk.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 6 / 44
Rétegek RPC Üzenetek Folyamok Multicasting

A kommunikáció fajtái
Synchronize at Synchronize at Synchronize after
request submission request delivery processing by server
Client

Request

Transmission
interrupt
Storage
facility

Reply

Server Time

A kommunikáció lehet...
időleges (transient) vagy megtartó (persistent)
aszinkron vagy szinkron

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 7 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

A kommunikáció fajtái
Synchronize at Synchronize at Synchronize after
request submission request delivery processing by server
Client

Request

Transmission
interrupt
Storage
facility

Reply

Server Time

Időleges vs megtartó
Megtartó kommunikáció: A kommunikációs rendszer hajlandó
huzamosan tárolni az üzenetet.
Időleges kommunikáció: A kommunikációs rendszer elveti az üzenetet,
ha az nem kézbesíthető.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 8 / 44
Rétegek RPC Üzenetek Folyamok Multicasting

A kommunikáció fajtái
Synchronize at Synchronize at Synchronize after
request submission request delivery processing by server
Client

Request

Transmission
interrupt
Storage
facility

Reply

Server Time

A szinkronizáció lehetséges helyei


Az üzenet elindításakor
Az üzenet beérkezésekor
A kérés feldolgozása után

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 9 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Kliens–szerver modell

Általános jellemzők
A kliens–szerver modell jellemzően időleges, szinkron kommunikációt
használ.
A kliensnek és a szervernek egyidőben kell aktívnak lennie.
A kliens blokkolódik, amíg a válasz meg nem érkezik.
A szerver csak a kliensek fogadásával foglalkozik, és a kérések
kiszolgálásával.

A szinkron kommunikáció hátrányai


A kliens nem tud tovább dolgozni, amíg a válasz meg nem érkezik
A hibákat rögtön kezelni kell, különben feltartjuk a klienst
Bizonyos feladatokhoz (pl. levelezés) nem jól illeszkedik

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 10 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Üzenetküldés

Üzenetorientált köztesréteg (message-oriented middleware, MOM)


Megtartó, aszinkron kommunikációs architektúra.
Segítségével a folyamatok üzeneteket küldhetnek egymásnak
A küldő félnek nem kell válaszra várakoznia, foglalkozhat mással
A köztesréteg gyakran hibatűrést biztosít

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 11 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

RPC: alapok

Az RPC alapötlete
Az alprogramok használata természetes a fejlesztés során
Az alprogramok a jó esetben egymástól függetlenül működnek
(„fekete doboz”),
... így akár egy távoli gépen is végrehajthatóak

Távoli eljáráshívás (remote


procedure call, RPC) Wait for result
Client
A távoli gépen futtatandó eljárása
Call remote Return
eléréséhez hálózati procedure from call
kommunikációra van szükség, ezt
Request Reply
eljáráshívási mechanizmus fedi el.
Server
a tekintsük Call local procedure Time
az alprogram szinonímájának and return results

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 12 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

RPC: a hívás lépései


Client machine Server machine

Client process Server process


1. Client call to
procedure Implementation 6. Stub makes
of add local call to "add"
Server stub
k = add(i,j) k = add(i,j)
Client stub
proc: "add" proc: "add"
int: val(i) int: val(i) 5. Stub unpacks
2. Stub builds message
int: val(j) message int: val(j)

proc: "add" 4. Server OS


Client OS int: val(i) Server OS hands message
int: val(j) to server stub

3. Message is sent
across the network

1 A kliensfolyamat lokálisan meghívja a 5 Az kicsomagolja a paramétereket,


klienscsonkot. átadja a szervernek.
2 Az becsomagolja az eljárás azonosítóját
és paramétereit, meghívja az OS-t. 6 A szerver lokálisan meghívja az eljárást,
megkapja a visszatérési értéket.
3 Az átküldi az üzenetet a távoli OS-nek.
7 Ennek visszaküldése a klienshez
4 Az átadja az üzenetet a hasonlóan zajlik, fordított irányban.
szervercsonknak.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 13 / 44
Rétegek RPC Üzenetek Folyamok Multicasting

RPC: paraméterátadás

A paraméterek sorosítása
A második lépésben a klienscsonk elkészíti az üzenetet, ami az
egyszerű bemásolásnál összetettebb lehet.
A kliens- és a szervergépen eltérhet az adatábrázolás (eltérő
bájtsorrend)
A sorosítás során bájtsorozat készül az értékből
Rögzíteni kell a paraméterek kódolását:
A primitív típusok reprezentációját (egész, tört, karakteres)
Az összetett típusok reprezentációját (tömbök, egyéb
adatszerkezetek)
A két csonknak fordítania kell a közös formátumról a gépeik
formátumára

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

RPC: paraméterátadás
RPC paraméterátadás szemantikája

Érték–eredmény szerinti paraméterátadási szemantika: pl. figyelembe


kell venni, hogy ha (a kliensoldalon ugyanoda mutató) hivatkozásokat
adunk át, azokról ez a hívott eljárásban nem látszik.
Minden feldolgozandó adat paraméterként kerül az eljáráshoz; nincsen
globális hivatkozás.

Átlátszóság
Nem érthető el teljes mértékű elérési átlátszóság.

Távoli hivatkozás
Távoli hivatkozás bevezetésével növelhető az elérési átlátszóságot:
A távoli adat egységesen érhető el
A távoli hivatkozásokat át lehet paraméterként adni

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 15 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Aszinkron RPC

Az RPC „javítása”
A szerver nyugtázza az üzenet megérkezését. Választ nem vár.

Client Wait for result Client Wait for acceptance

Call remote Return Call remote Return


procedure from call procedure from call

Request Request Accept request


Reply

Server Call local procedure Time Server Call local procedure Time
and return results
(a) (b)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 16 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Késleltetett szinkronizált RPC


Késleltetett szinkronizált RPC
Ez két aszinkron RPC, egymással összehangolva.

Wait for Interrupt client


acceptance
Client

Call remote Return


procedure from call Return
results Acknowledge
Accept
Request request
Server
Call local procedure Time
Call client with
one-way RPC

További lehetőség
A kliens elküldheti a kérését, majd időnként lekérdezheti a szervertől,
kész-e már a válasz.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 44
Rétegek RPC Üzenetek Folyamok Multicasting

RPC: a használt fájlok


Uuidgen

Interface
definition file

IDL compiler

Client code Client stub Header Server stub Server code

#include #include

C compiler C compiler C compiler C compiler

Client Client stub Server stub Server


object file object file object file object file

Runtime Runtime
Linker Linker
library library

Client Server
binary binary

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 18 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

RPC: a kliens csatlakozása a szerverhez


A kliens
1 A szolgáltatások katalógusba jegyzik be (globálisan és lokálisan
is), melyik gépen érhetőek el. (1-2)
2 A kliens kikeresi a szolgáltatást a katalógusból. (3)
3 A kliens végpontot igényel a démontól a kommunikációhoz. (4)

Directory machine

Directory
server
2. Register service
3. Look up server
Server machine
Client machine

5. Do RPC 1. Register endpoint


Server
Client

4. Ask for endpoint DCE


daemon Endpoint
table
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 19 / 44
Rétegek RPC Üzenetek Folyamok Multicasting

Időleges kommunikáció: socket

Server
socket bind listen accept read write close

Synchronization point Communication

socket connect write read close


Client

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 20 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Socket: példa Python nyelven


Szerver
import socket
HOST = ’’
PORT = SERVERPORT
srvsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
srvsock.bind((HOST, PORT))
srvsock.listen(N) # legfeljebb N kliens várakozhat
clsock, addr = srvsock.accept() # lokális végpont + távoli végpont címe
while True: # potenciálisan végtelen ciklus
data = clsock.recv(1024)
if not data: break
clsock.send(data)
clsock.close()

Kliens
import socket
HOST = ’distsys.cs.vu.nl’
PORT = SERVERPORT
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send(’Hello, world’)
data = s.recv(1024)
s.close()
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 21 / 44
Rétegek RPC Üzenetek Folyamok Multicasting

Üzenetorientált köztesréteg

Működési elv
A köztesréteg várakozási sorokat (queue) tart fenn a rendszer gépein.
A kliensek az alábbi műveleteket használhatják a várakozási sorokra.

PUT Üzenetet tesz egy várakozási sor végére


GET Blokkol, amíg a sor üres, majd leveszi az első üzenetet
POLL Nem-blokkoló módon lekérdezi, van-e üzenet, ha igen, le-
veszi az elsőt
NOTIFY Kezelőrutint telepít a várakozási sorhoz, amely minden be-
érkező üzenetre meghívódik

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 22 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Üzenetközvetítő
Üzenetsorkezelő rendszer homogenitása
Az üzenetsorkezelő rendszerek feltételezik, hogy a rendszer minden
eleme közös protokollt használ, azaz az üzenetek szerkezete és
adatábrázolása megegyező.

Üzenetközvetítő
üzenetközvetítő (message broker): Olyan központi komponens, amely
heterogén rendszerben gondoskodik a megfelelő konverziókról.
Átalakítja az üzeneteket a fogadó formátumára.
Szerepe szerint igen gyakran átjáró (application-level gateway,
proxy) is, azaz a közvetítés mellet további (pl. biztonsági)
funkciókat is nyújt
Az üzenetek tartalmát is megvizsgálhatják az útválasztáshoz
(subject based vagy object based routing) ⇒ Enterprise
Application Integration
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 23 / 44
Rétegek RPC Üzenetek Folyamok Multicasting

Üzenetközvetítő

Repository with
conversion rules
Source client Message broker and programs Destination client

Broker
program

Queuing
layer
OS OS OS

Network

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 24 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Példa: WebSphere MQ (IBM)

Működési elv
Az üzenetkezelők neve itt sorkezelő (queue manager); adott
alkalmazásoknak címzett üzeneteket fogadnak
Az üzenetkezelőt össze lehet szerkeszteni a kliensprogrammal
Az üzenetkezelő RPC-n keresztül is elérhető
Az útválasztótáblák (routing table) megadják, melyik kimenő
csatornán kell továbbítani az üzenetet
A csatornákat üzenetcsatorna-ügynökök (message channel agent,
MCA) kezelik
Kiépítik a hálózati kapcsolatokat (pl. TCP/IP)
Ki- és becsomagolják az üzeneteket, és fogadják/küldik a
csomagokat a hálózatról

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 25 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Példa: WebSphere MQ (IBM)


Client's receive
Routing table Send queue queue Receiving client
Sending client

Queue Queue
Program manager manager Program

MQ Interface

Server Server
Stub MCA MCA MCA MCA Stub
stub stub

RPC Local network


(synchronous) Enterprise network
To other remote
Message passing queue managers
(asynchronous)

A csatornák egyirányúak
A sorkezelőkhöz beérkező üzenetek automatikusan továbbítódnak a
megfelelő lokális MCA-hoz
Az útválasztás paramétereit kézzel adják meg
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 26 / 44
Rétegek RPC Üzenetek Folyamok Multicasting

Példa: WebSphere MQ (IBM)


Álnevek
Távoli üzenetkezelőhöz álnevet (alias) is lehet rendelni, ez csak a lokális
üzenetkezelőn belül érvényes.

Alias table Routing table


LA1 QMC QMB SQ1 Alias table Routing table
LA2 QMD QMC SQ1 LA1 QMA QMA SQ1
QMD SQ2 LA2 QMD QMC SQ1
QMD SQ1
SQ2
SQ1
QMA SQ1
QMB

Routing table SQ1 QMC Routing table


QMA SQ1
QMA SQ1
QMC SQ2 SQ2 QMB SQ1
QMB SQ1
QMD SQ1
Alias table
LA1 QMA SQ1
LA2 QMC
QMD

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 27 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Folyamatos média

Az idő szerepe
Az eddig tárgyalt kommunikációfajtákban közös, hogy diszkrét
ábrázolásúak: az adategységek közötti időbeli kapcsolat nem
befolyásolja azok jelentését.

Folyamatos ábrázolású média


A fentiekkel szemben itt a továbbított adatok időfüggőek.
Néhány jellemző példa:
audio
videó
animációk
szenzorok adatai (hőmérséklet, nyomás stb.)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 28 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Folyamatos média

Adatátviteli módok
Többfajta megkötést tehetünk a kommunikáció időbeliségével
kapcsolatban.
aszinkron: nem ad megkötést arra, hogy mikor kell átvinni az
adatot
szinkron: az egyes adatcsomagoknak megadott időtartam alatt
célba kell érniük
izokron vagy izoszinkrona : felső és alsó korlátot is ad a csomagok
átvitelére; a remegés (jitter) így korlátozott mértékű
a α-=(fosztóképző), ἴσος=egyenlő, σύν=együtt, χρόνος=idő

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 29 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Folyam

Adatfolyam
adatfolyam: Izokron adatátvitelt támogató kommunikációs forma.

Fontosabb jellemzők
Egyirányú
Legtöbbször egy forrástól (source) folyik egy vagy több nyelő
(sink) felé
A forrás és/vagy a nyelő gyakran közvetlenül kapcsolódik
hardverelemekhez (pl. kamera, képernyő)
egyszerű folyam: egyfajta adatot továbbít, pl. egy audiocsatornát
vagy csak videót
összetett folyam: többfajta adatot továbbít, pl. sztereo audiót vagy
hangot+videót

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 30 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Folyam: QoS

Szolgáltatás minősége
A folyamokkal kapcsolatban sokfajta követelmény írható elő, ezeket
összefoglaló néven a szolgáltatás minőségének (Quality of Service,
QoS) nevezzük. Ilyen jellemzők a következők:
A folyam átvitelének „sebessége”: bit rate.
A folyam megindításának legnagyobb megengedett késleltetése.
A folyam adategységeinek megadott idő alatt el kell jutniuk a
forrástól a nyelőig (end-to-end delay), illetve számíthat az
oda-vissza út is (round trip delay).
Az adategységek beérkezési időközeinek egyenetlensége:
remegés (jitter).

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 31 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Folyam: QoS biztosítása


Differenciált szolgáltatási architektúra
Több hálózati eszköz érhető el, amelyekkel a QoS biztosítható.
Egy lehetőség, ha a hálózat routerei kategorizálják az áthaladó
forgalmat a beérkező adatcsomagok tartalma szerint, és egyes
csomagfajtákat elsőbbséggel továbbítanak (differentiated services).

A remegés csökkentése
A routerek pufferelhetik az adatokat a remegés csökkentésére.
Packet departs source 1 2 3 4 5 6 7 8

Packet arrives at buffer 1 2 3 4 5 6 7 8

Time in buffer
Packet removed from buffer 1 2 3 4 5 6 7 8
Gap in playback
0 5 10 15 20
Time (sec)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 32 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Folyam: QoS biztosítása


A csomagok elveszhetnek útközben. Ennek hatását mérsékelheti, ha a
csomagon belül az adatelemek sorrendjét kissé módosítjuk; ennek ára,
hogy a lejátszás lassabban indul meg.
Lost packet
Sent 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Delivered 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Gap of lost frames


(a)

Lost packet
Sent 1 5 9 13 2 6 10 14 3 7 11 15 4 8 12 16

Delivered 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

Lost frames
(b)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 33 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Összetett folyam szinkronizációja


Szinkronizáció a nyelőnél
Az összetett folyam alfolyamait szinkronizálni kell a nyelőnél, különben
időben elcsúszhatnának egymáshoz képest.
Receiver's machine

Application
Procedure that reads
two audio data units for
each video data unit

Incoming stream
OS

Network

Multiplexálás
Másik lehetőség: a forrás már eleve egyetlen folyamot készít
(multiplexálás). Ezek garantáltan szinkronban vannak egymással, a
nyelőnél csak szét kell őket bontani (demultiplexálás).
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 34 / 44
Rétegek RPC Üzenetek Folyamok Multicasting

Alkalmazásszintű multicasting
A hálózat minden csúcsának szeretnénk üzenetet tudjunk küldeni
(multicast). Ehhez hierarchikus overlay hálózatba szervezzük őket.
Chord struktúrában tárolt fa készítése
A multicast hálózatunkhoz generálunk egy azonosítót, így
egyszerre több multicast hálózatunk is lehet egy rendszerben.
Tegyük fel, hogy az azonosító egyértelműen kijelöl egy csúcsot a
rendszerünkbena . Ez a csúcs lesz a fa gyökere.
Terv: a küldendő üzeneteket mindenki elküldi a gyökérhez, majd
onnan a fán lefele terjednek.
Ha a P csúcs csatlakozni szeretne a multicast hálózathoz,
csatlakozási kérést küld a gyökér felé. A P csúcstól a gyökérig
egyértelmű az útvonalb ; ennek minden csúcsát a fa részévé
teszünk (ha még nem volt az). Így P elérhetővé válik a gyökértől.
a Ez az azonosító ún. rákövetkezője; a technikai részletek később jönnek.
b Részletek szintén később.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 35 / 44
Rétegek RPC Üzenetek Folyamok Multicasting

Alkalmazásszintű multicasting: költségek


End host
Router
A 1 1 C
30 20
Ra Re Rc

5
7
40 Rd
1 Rb 1
Internet D
B
Overlay network

Kapcsolatok terhelése: Mivel overlay hálózatot alkalmazunk,


előfordulhat, hogy egy üzenetküldés többször is igénybe veszi
ugyanazt a fizikai kapcsolatot.
Példa: az A → D üzenetküldés kétszer halad át az Ra → Rb élen.
Stretch: Az overlayt követő és az alacsonyszintű üzenetküldés
költségének hányadosa.
Példa: B → C overlay költsége 71, hálózati 47 ⇒ stretch = 71/47.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 36 / 44
Rétegek RPC Üzenetek Folyamok Multicasting

Járványalapú algoritmusok

Alapötlet
Valamelyik szerveren frissítési műveletet (update) hajtottak végre,
azt szeretnénk, hogy ez elterjedjen a rendszerben minden
szerverhez.
Minden szerver elküldi a változást néhány szomszédjának
(messze nem az összes csúcsnak) lusta módon (nem azonnal)
Tegyük fel, hogy nincs olvasás-írás konfliktus a rendszerben.

Két alkategória
Anti-entrópia: Minden szerver rendszeresen kiválaszt egy másikat,
és kicserélik egymás között a változásokat.
Pletykálás (gossiping): Az újonnan frissült (megfertőzött) szerver
elküldi a frissítést néhány szomszédjának (megfertőzi őket).

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 37 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Járvány: anti-entrópia

A frissítések cseréje
P csúcs Q csúcsot választotta ki.
Küldés (push): P elküldi a nála levő frissítéseket Q-nak
Rendelés (pull): P bekéri a Q-nál levő frissítéseket
Küldés–rendelés (push–pull): P és Q kicserélik az adataikat, így
ugyanaz lesz mindkettő tartalma.

Hatékonyság
A küldő–rendelő megközelítés esetében O(log(N)) nagyságrendű
forduló megtétele után az összes csúcshoz eljut a frissítés.
Egy fordulónak az számít, ha mindegyik csúcs megtett egy lépést.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 38 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Járvány: anti-entrópia: hatékonyság

1
0.9 pull
push
0.8
Fraction ignorant

0.7
0.6
0.5
0.4
0.3
0.2
0.1
0
5 10 15 20 25
Cycle

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 39 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Járvány: pletykálás

Működési elv
Ha az S szerver új frissítést észlelt, akkor felveszi a kapcsolatot más
szerverekkel, és elküldi számukra a frissítést.
Ha olyan szerverhez kapcsolódik, ahol már jelen van a frissítés, akkor
1
k valószínűséggel abbahagyja a frissítés terjesztését.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 40 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Járvány: pletykálás: hatékonyság


Hatékonyság
Kellően sok szerver esetén a tudatlanságban maradó szerverek
(akikhez nem jut el a frissítés) száma exponenciálisan csökken a k
valószínűség növekedésével, de ezzel az algoritmussal nem
garantálható, hogy minden szerverhez eljut a frissítés.
k
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Consider 10,000 nodes
k s Ns
-2.5 1 0.203188 2032
-5.0 2 0.059520 595
3 0.019827 198
-7.5 4 0.006977 70
-10.0 5 0.002516 25
ln(s) 6 0.000918 9
-12.5
7 0.000336 3
-15.0

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 41 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Járvány: értékek törlése

A törlési művelet nem terjeszthető


Ha egy adat törlésének műveletét is az előzőekhez hasonlóan
terjesztenénk a szerverek között, akkor a még terjedő frissítési
műveletek újra létrehoznák az adatot ott, ahová a törlés eljutott.

Megoldás
A törlést speciális frissítésként: halotti bizonyítvány (death certificate)
küldésével terjesztjük.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 42 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Járvány: értékek törlése

Halotti bizonyítvány törlése


A halotti bizonyítványt nem akarjuk örökké tárolni. Mikor törölhetőek?
Szemétgyűjtés-jellegű megközelítés: Egy rendszerszintű
algoritmussal felismerjük, hogy mindenhová eljutott a bizonyítvány,
és ekkor mindenhonnan eltávolítjuk. Ez a megoldás nem jól
skálázódik.
elavuló bizonyítvány: Kibocsátás után adott idővel a bizonyítvány
elavul, és ekkor törölhető; így viszont nem garantálható, hogy
mindenhová elér.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 43 / 44


Rétegek RPC Üzenetek Folyamok Multicasting

Járvány: példák
Példa: adatok elterjesztése
Az egyik legfontosabb és legjellemzőbb alkalmazása a járványalapú
algoritmusoknak.

Példa: adatok aggregálása


Most a cél a csúcsokban tárolt adatokból új adatok kiszámítása.
Kezdetben mindegyik csúcs egy értéket tárol: xi . Amikor két csúcs
pletykál, mindkettő a tárolt értékét a korábbi értékek átlagára állítja:
xi + xj
xi , xj ←
2
Mivel az értékek minden lépésben közelednek egymáshoz, de az
összegük megmarad, mindegyik érték a teljes átlaghoz konvergál.

∑i xi
x̄ =
N
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 44 / 44
Elosztott rendszerek: Alapelvek és paradigmák
Distributed Systems: Principles and Paradigms

Maarten van Steen1 Kitlei Róbert 2


1 VU Amsterdam, Dept. Computer Science
2 ELTE Informatikai Kar

5. rész: Elnevezési rendszerek


2015. május 24.
Tartalomjegyzék

Fejezet
01: Bevezetés
02: Architektúrák
03: Folyamatok
04: Kommunikáció
05: Elnevezési rendszerek
06: Szinkronizáció
07: Konzisztencia & replikáció
08: Hibatűrés
10: Objektumalapú elosztott rendszerek
11: Elosztott fájlrendszerek
12: Elosztott webalapú rendszerek

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 2 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Elnevezési rendszerek

Elnevezési rendszerek
Az elosztott rendszerek entitásai a kapcsolódási pontjaikon (access
point) keresztül érhetőek el. Ezeket távolról a címük azonosítja, amely
megnevezi az adott pontot.
Célszerű lehet az entitást a kapcsolódási pontjaitól függetlenül is
elnevezni. Az ilyen nevek helyfüggetlenek (location independent).
Az egyszerű neveknek nincsen szerkezete, tartalmuk véletlen szöveg.
Az egyszerű nevek csak összehasonlításra használhatóak.

Azonosító
Egy név azonosító, ha egy-egy kapcsolatban áll a megnevezett
egyeddel, és ez a hozzárendelés maradandó, azaz a név nem
hivatkozhat más egyedre később sem.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 3 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Strukturálatlan nevek

Strukturálatlan nevek feloldása


Milyen lehetőségek vannak strukturálatlan nevek feloldására? (Azaz:
hogyan találjuk meg a hozzárendelt kapcsolódási pontot?)
egyszerű megoldások (broadcasting)
otthonalapú megoldások
elosztott hasítótáblák (strukturált P2P)
hierarchikus rendszerek

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 4 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Névfeloldás: egyszerű megoldások


Broadcasting
Kihirdetjük az azonosítót a hálózaton; az egyed visszaküldi a jelenlegi címét.
Lokális hálózatokon túl nem skálázódik
A hálózaton minden gépnek figyelnie kell a beérkező kérésre

Továbbítómutató
Amikor az egyed elköltözik, egy mutató marad utána az új helyére.
A kliens elől el van fedve, hogy a szoftver továbbítómutató-láncot old fel.
A megtalált címet vissza lehet küldeni a klienshez, így a további
feloldások gyorsabban mennek.
Földrajzi skálázási problémák
A hosszú láncok nem hibatűrőek
A feloldás hosszú időbe telik
Külön mechanizmus szükséges a láncok rövidítésére

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 5 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Otthonalapú megközelítések
Egyrétegű rendszer
Az egyedhez tartozik egy otthon, ez tartja számon az egyed jelenlegi
címét.
Az egyed otthoni címe (home address) be van jegyezve egy
névszolgáltatásba
Az otthon számon tartja az egyed jelenlegi címét (foreign address)
A kliens az otthonhoz kapcsolódik, onnan kapja meg az aktuális
címet

Kétrétegű rendszer
Az egyes (pl. földrajzi alapon meghatározott) környékeken
feljegyezzük, hogy melyik egyedek tartózkodnak éppen arrafelé.
A névfeloldás először ezt a jegyzéket vizsgálja meg
Ha az egyed nincsen a környéken, csak akkor kell az otthonhoz
fordulni
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 6 / 30
5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Otthonalapú megközelítések

Host's home
location 1. Send packet to host at its home

2. Return address
of current location

Client's
location

3. Tunnel packet to
current location

4. Send successive packets


to current location
Host's present location

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 7 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Otthonalapú megközelítések

Problémák
Legalább az egyed élettartamán át fenn kell tartani az otthont
Az otthon helye rögzített ⇒ költséges lehet, ha az egyed messze
költözik
Rossz földrajzi skálázódás: az egyed sokkal közelebb lehet a
klienshez az otthonnál

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 8 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Eloszott hasítótábla
Chord eloszott hasítótábla
Elosztott hasítótáblát (distributed hash table, DHT) készítünk
(konkrétan Chord protokoll szerintit), ebben csúcsok tárolnak
egyedeket. Az N csúcs gyűrű overlay szerkezetbe van szervezve.
Mindegyik csúcshoz véletlenszerűen hozzárendelünk egy m bites
azonosítót, és mindegyik entitáshoz egy m bites kulcsot. (Tehát
N ≤ 2m .)
A k kulcsú egyed felelőse az az id azonosítójú csúcs, amelyre
k ≤ id, és nincsen köztük másik csúcs. A felelős csúcsot a kulcs
rákövetkezőjének is szokás nevezni; jelölje succ(k ).

Rosszul méreteződő megoldás


A csúcsok eltárolhatnák a gyűrű következő csúcsának elérhetőségét,
és így lineárisan végigkereshetnénk a gyűrűt. Ez O(N) hatékonyságú,
rosszul skálázódik, nem hibatűrő...
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 9 / 30
5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

DHT: Finger table


Chord alapú adattárolás
Mindegyik p csúcs egy FTp „finger table”-t tárol m bejegyzéssel:

FTp [i] = succ(p + 2i−1 )


Bináris (jellegű) keresést szeretnénk elérni, ezért minden lépés
felezi a keresési tartományt: 2m−1 , 2m−2 , . . . , 20 .
A k kulcsú egyed kikereséséhez (ha nem a jelenlegi csúcs
tartalmazza) a kérést továbbítjuk a j indexű csúcshoz, amelyre

FTp [j] ≤ k < FTp [j + 1]


illetve, ha p < k < FTp [1], akkor is FTp [1]-hez irányítjuk a kérést.

Jól méreteződő megoldás


Ez a megoldás O(m), azaz O(log(N)) hatékonyságú.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 10 / 30
5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

DHT: Finger table


1 4 Finger table
2 4
3 9 i-1 )
4 9 2
5 18 +
(p
Actual node cc
31 0 1 i su
30 2 1 9
1 1 29 3 2 9
3 9
2 1 28 4 4 14
3 1
5 20
4 4
5 14 27 5
Resolve k = 12
26 from node 28 6

25 7

24 8 1 11
2 11
23 3 14
Resolve k = 26 9 4 18
from node 1 5 28
22 10
1 28
2 28 21 11 1 14
3 28
2 14
4 1
20 12 3 18
5 9
4 20
1 21 19 13 5 28
2 28 18 14
3 28 17 16 15 1 18
4 28 2 18
5 4 1 20 3 18
2 20 4 28
3 28 5 1
4 28
5 4

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 11 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

A hálózati közelség kihasználása

Probléma
Mivel overlay hálózatot használunk, az üzenetek sokat utazhatnak két csúcs
között: a k és a succ(k + 1) csúcs messze lehetnek egymástól.

Azonosító topológia szerinti megválasztása: A csúcsok azonosítóját


megpróbálhatjuk topológiailag közeli csúcsokhoz közelinek választani.
Ez nehéz feladat lehet.
Közelség szerinti útválasztás: A p csúcs FTp táblája m elemet tartalmaz. Ha
ennél több információt is eltárolunk p-ben, akkor egy lépés megtételével
közelebb juthatunk a célcsúcshoz.
Szomszéd közelség szerinti megválasztása: Ha a Chordtól eltérő ábrázolást
követünk, a csúcs szomszédainak megválasztásánál azok közelségét is
figyelembe lehet venni.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 12 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Hierarchikus módszerek

Hierarchical Location Services (HLS)


A hálózatot osszuk fel tartományokra, és mindegyik tartományhoz
tartozzon egy katalógus. Építsünk hierarchiát a katalógusokból.

The root directory


Top-level
node dir(T)
domain T

Directory node
dir(S) of domain S
A subdomain S
of top-level domain T
(S is contained in T)

A leaf domain, contained in S

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 13 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

HLS: Katalógus-csúcsok
A csúcsokban tárolt adatok
Az E egyed címe egy levélben található meg
A gyökértől az E leveléig vezető úton minden belső csúcsban van egy
mutató a lefelé következő csúcsra az úton
Mivel a gyökér minden út kiindulópontja, minden egyedről van
információja
Field with no data
Field for domain
dom(N) with Location record
pointer to N for E at node M
M

Location record
with only one field,
containing an address

Domain D1
Domain D2
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 30
5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

HLS: Keresés a fában


Keresés a fában
A kliens valamelyik tartományba tartozik, innen indul a keresés
Felmegyünk a fában addig, amíg olyan csúcshoz nem érünk, amelyik tud
E-ről, aztán követjük a mutatókat a levélig, ahol megvan E címe
Mivel a gyökér minden egyedet ismer, az algoritmus terminálása
garantált
Node knows
about E, so request
Node has no is forwarded to child
record for E, so
that request is M
forwarded to
parent

Look-up
Domain D
request

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 15 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

HLS: Beszúrás

Beszúrás a fában
Ugyanaddig megyünk felfelé a fában, mint keresésnél
Az érintett belső csúcsokba mutatókat helyezünk
Egy csúcsban egy egyedhez több mutató is tartozhat
Node knows
Node has no about E, so request
record for E, is no longer forwarded
so request is Node creates record
forwarded and stores pointer
to parent M
M
Node creates
record and
stores address

Domain D
Insert
request
(a) (b)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 16 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Névtér
Névtér
névtér: gyökeres, irányított, élcímkézett gráf, a levelek tartalmazzák a
megnevezett egyedeket, a belső csúcsokat katalógusnak vagy könyvtárnak
(directory) nevezzük
Az egyedhez vezető út címkéit összeolvasva kapjuk az egyed egy nevét. A
bejárt út, ha a gyökérből indul, abszolút útvonalnév, ha máshonnan, relatív
útvonalnév. Mivel egy egyedhez több út is vezethet, több neve is lehet.

Data stored in n1 n0
n2: "elke" home keys
n3: "max"
n4: "steen" "/keys"
n1 n5
"/home/steen/keys"
elke steen
max

n2 n3 n4 keys
Leaf node
.twmrc mbox
Directory node
"/home/steen/mbox"

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Névtér

Attribútumok
A csúcsokban (akár a levelekben, akár a belső csúcsokban) különféle
attribútumokat is eltárolhatunk.
Az egyed típusát
Az egyed azonosítóját
Az egyed helyét/címét
Az egyed más neveit
...

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 18 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Névfeloldás

Gyökér szükséges
Kiinduló csúcsra van szükségünk ahhoz, hogy megkezdhessük a névfeloldást.

Gyökér megkeresése
A név jellegétől függő környezet biztosítja a gyökér elérhetőségét. Néhány
példa név esetén a hozzá tartozó környezet:
www.inf.elte.hu: egy DNS névszerver
/home/steen/mbox: a lokális NFS fájlszerver
0031204447784: a telefonos hálózat
157.181.161.79: a www.inf.elte.hu webszerverhez vezető út

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 19 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Csatolás (linking)
Soft link
A gráf csúcsai valódi csatolások (hard link), ezek adják a névfeloldás
alapját.
soft link: a levelek más csúcsok álneveit is tartalmazhatják. Amikor a
névfeloldás ilyen csúcshoz ér, az algoritmus az álnév feloldásával
folytatódik.

Data stored in n1 n0
n2: "elke" home keys
n3: "max"
n4: "steen" n1 n5 "/keys"

elke steen
max

n2 n3 n4
Data stored in n6
Leaf node
.twmrc mbox keys "/keys"
Directory node
n6 "/home/steen/keys"

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 20 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

A névtér implementációja
Nagyméretű névtér tagolása
Ha nagy (világméretű) névterünk van, el kell osztanunk a gráfot a gépek
között, hogy hatékonnyá tegyük a névfeloldást és a névtér kezelését.
Ilyen nagy névteret alkot a DNS (Domain Name System).

Globális szint: Gyökér és felső csúcsok. A szervezetek közösen kezelik.


Szervezeti szint: Egy-egy szervezet által kezelt csúcsok szintje.
Kezelői szint: Egy adott szervezeten belül kezelt csúcsok.

Szempont Globális Szervezeti Kezelői


Földrajzi méret Világméretű Vállalati Vállalati alegység
Csúcsok száma Kevés Sok Rendkívül sok
Keresés ideje mp. ezredmp. Azonnal
Frissítés terjedése Ráérős Azonnal Azonnal
Másolatok száma Sok Nincs/kevés Nincs
Kliens gyorsítótáraz? Igen Igen Néha
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 21 / 30
5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

A névtér implementációja: DNS

Global
layer gov mil org net
com edu jp us
nl

sun yale acm ieee ac co oce vu

eng cs eng jack jill keio nec cs


Adminis-
trational
layer ftp www
cs csl
ai linda

pc24
robot pub

globe
Mana-
gerial
layer Zone
index.txt

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 22 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

A névtér implementációja: DNS

A DNS egy csúcsában tárolt adatok


Legtöbbször az A rekord tartalmát kérdezzük le; a névfeloldáshoz
feltétlenül szükséges az NS rekord.
Egy zóna a DNS-fa egy összefüggő, adminisztratív egységként kezelt
része, egy (ritkábban több) tartomány (domain) adatait tartalmazza.

Rekord neve Adat jellege Leírás


A Gazdagép A csomópont gazdagépének IP címe
NS Zóna A zóna névszervere
SOA Zóna A zóna paraméterei
MX Tartomány A csomópont levelezőszervere

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 23 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Iteratív névfeloldás
A névfeloldást a gyökér névszerverek egyikétől indítjuk.
Az iteratív névfeloldás során a névnek mindig csak egy komponensét
oldjuk fel, a megszólított névszerver az ehhez tartozó névszerver címét
küldi vissza.

1. <nl,vu,cs,ftp>
Root
2. #<nl>, <vu,cs,ftp> name server
nl
3. <vu,cs,ftp> Name server
nl node
Client's 4. #<vu>, <cs,ftp>
name vu
resolver 5. <cs,ftp> Name server
vu node
6. #<cs>, <ftp>
cs
7. <ftp> Name server
8. #<ftp> cs node

ftp
<nl,vu,cs,ftp> #<nl,vu,cs,ftp>
Nodes are
managed by
the same server

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 24 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Rekurzív névfeloldás

A rekurzív névfeloldás során a névszerverek egymás közt


kommunikálva oldják fel a nevet, a kliensoldali névfeloldóhoz rögtön a
válasz érkezik.

1. <nl,vu,cs,ftp>
Root
8. #<nl,vu,cs,ftp> name server 2. <vu,cs,ftp>

7. #<vu,cs,ftp> Name server


nl node 3. <cs,ftp>
Client's
name
resolver 6. #<cs,ftp> Name server
vu node 4. <ftp>

5. #<ftp> Name server


cs node

<nl,vu,cs,ftp> #<nl,vu,cs,ftp>

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 25 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Rekurzív névfeloldás: cache-elés

A névszerver Feloldandó cím Feloldja Átadja Fogadja Visszaadja


ezt kezeli lefele és cache-eli
cs <ftp> #<ftp> — — #<ftp>
vu <cs,ftp> #<cs> <ftp> #<ftp> #<cs>
#<cs, ftp>
nl <vu,cs,ftp> #<vu> <cs,ftp> #<cs> #<vu>
#<cs,ftp> #<vu,cs>
#<vu,cs,ftp>
(gyökér) <nl,vu,cs,ftp> #<nl> <vu,cs,ftp> #<vu> #<nl>
#<vu,cs> #<nl,vu>
#<vu,cs,ftp> #<nl,vu,cs>
#<nl,vu,cs,ftp>

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 26 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Névfeloldás: átméretezhetőség
Méret szerinti átméretezhetőség
Sok kérést kell kezelni rövid idő alatt ⇒ a globális szint szerverei nagy
terhelést kapnának.

Csúcsok adatai sok névszerveren


A felső két szinten, és sokszor még az alsó szinten is ritkán változik a
gráf. Ezért megtehetjük, hogy a legtöbb csúcs adatairól sok
névszerveren készítünk másolatot, így a keresést várhatóan sokkal
közelebbről indítjuk.

A keresett adat: az entitás címe


A legtöbbször a névfeloldással az entitás címét keressük.
A névszerverek nem alkalmasak mozgó entitások címeinek
kezelésére, mert azok költözésével gyakran változna a gráf.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 27 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Névfeloldás: átméretezhetőség
Földrajzi átméretezhetőség
A névfeloldásnál a földrajzi távolságokat is figyelembe kell venni.

Recursive name resolution


R1
Name server
I1 nl node
R2
I2 Name server
Client vu node
I3
R3
Name server
Iterative name resolution cs node

Long-distance communication

Helyfüggés
Ha egy csúcsot egy adott névszerver szolgál ki, akkor földrajzilag oda kell
kapcsolódnunk, ha el akarjuk érni a csúcsot.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 28 / 30


5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Attribútumalapú nevek
Attribútumalapú keresés
Az egyedeket sokszor kényelmes lehet a tulajdonságaik (attribútumaik)
alapján keresni.

Teljes általánosságban: nem hatékony


Ha bármilyen kombinációban megadhatunk attribútumértékeket, a
kereséshez az összes egyedet érintenünk kell, ami nem hatékony.

X.500, LDAP
A katalógusszolgáltatásokban (directory service) az attribútumokra
megkötések érvényesek. A legismertebb ilyen szabvány az X.500,
amelyet az LDAP protokollon keresztül szokás elérni.
Az elnevezési rendszer fastruktúrájú, élei névalkotó jellemzőkkel
(attribútum-érték párokkal) címzettek. Az egyedekre az útjuk jellemzői
vonatkoznak, és további párokat is tartalmazhatnak.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 29 / 30
5.1 Naming Entities 5.2 Strukturálatlan nevek 5.3 Strukturált nevek 5.4 Attribútumalapú nevek

Példa: LDAP

C = NL

O = Vrije Universiteit

OU = Comp. Sc.

CN = Main server
N
Host_Name = star Host_Name = zephyr

Attribute Value Attribute Value


Country NL Country NL
Locality Amsterdam Locality Amsterdam
Organization Vrije Universiteit Organization Vrije Universiteit
OrganizationalUnit Comp. Sc. OrganizationalUnit Comp. Sc.
CommonName Main server CommonName Main server
Host_Name star Host_Name zephyr
Host_Address 192.31.231.42 Host_Address 137.37.20.10

answer =
search("&(C = NL) (O = Vrije Universiteit) (OU = *) (CN = Main server)")
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 30 / 30
Elosztott rendszerek: Alapelvek és paradigmák
Distributed Systems: Principles and Paradigms

Maarten van Steen1 Kitlei Róbert 2


1 VU Amsterdam, Dept. Computer Science
2 ELTE Informatikai Kar

6. rész: Szinkronizáció
2015. május 24.
Tartalomjegyzék

Fejezet
01: Bevezetés
02: Architektúrák
03: Folyamatok
04: Kommunikáció
05: Elnevezési rendszerek
06: Szinkronizáció
07: Konzisztencia & replikáció
08: Hibatűrés
10: Objektumalapú elosztott rendszerek
11: Elosztott fájlrendszerek
12: Elosztott webalapú rendszerek

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 2 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Fizikai órák
Milyen módon van szükségünk az időre?
Néha a pontos időt szeretnénk tudni, néha elég, ha megállapítható két
időpont közül, melyik volt korábban. Foglalkozzunk először az első kérdéssel.

Egyezményes koordinált világidő


Az időegységeket (pl. másodperc) az atomidőből (TAI) származtatjuk.
Az atomidő definíciója a gerjesztett céziumatom által kibocsátott
sugárzás frekvenciáján alapul.
A Föld forgásának sebessége kissé változékony, ezért a világidő (UTC)
néhány (szökő)másodperccel eltér az atomidőtől.
Az atomidő kb. 420 atomóra átlagából adódik.
Az atomórák pontosságának nagyságrendje kb. 1ns/nap.
Az atomidőt műholdak sugározzák, a vétel pontossága 0.5 ms
nagyságrendű, pl. az időjárás befolyásolhatja.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 3 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Fizikai órák
Fizikai idő elterjesztése
Ha a rendszerünkben van UTC-vevő, az megkapja a pontos időt. Ezt a
következők figyelembe vételével terjeszthetjük el a rendszeren belül.
A p gép saját órája szerint az idő t UTC-időpillanatban Cp (t).
Ideális esetben mindig pontos az idő: Cp (t) = t, másképpen dC/dt = 1.

Időszinkronizáció üteme
dC
A valóságban p vagy túl gyors, vagy túl dt
>1
dC
Clock time, C =1
lassú, de viszonylag pontos: dt

ck

ck
lo
clo

c
dC

ct
st
dC <1

fe
ck dt

Fa

r
Pe
1−ρ ≤ ≤ 1+ρ clo
w
dt Slo

Ha csak megadott δ eltérést akarunk


megengedni, δ /(2ρ) másodpercenként
szinkronizálnunk kell az időt. UTC, t

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 4 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Óraszinkronizálás
Cristian-algoritmus
Mindegyik gép egy központi időszervertől kéri le a pontos időt
legfeljebb δ /(2ρ) másodpercenként (Network Time Protocol).
Nem a megkapott időre kell állítani az órát: bele kell számítani,
hogy a szerver kezelte a kérést és a válasznak vissza kellett
érkeznie a hálózaton keresztül.

Berkeley-algoritmus
Itt nem feltétlenül a pontos idő beállítása a cél, csak az, hogy minden
gép ideje azonos legyen.
Az időszerver néha bekéri mindegyik gép idejét, ebből átlagot von,
majd mindenkit értesít, hogy a saját óráját mennyivel kell átállítania.
Az idő egyik gépnél sem folyhat visszafelé: ha vissza kellene
állítani valamelyik órát, akkor ehelyett a számontartott idő mérését
lelassítja a gép mindaddig, amíg a kívánt idő be nem áll.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 5 / 28
Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Az előbb-történt reláció

Az előbb-történt (happened-before) reláció


Az előbb-történt reláció az alábbi tulajdonságokkal rendelkező reláció.
Annak a jelölése, hogy az a esemény előbb-történt-mint b-t: a → b.
Ha ugyanabban a folyamatban az a esemény korábban
következett be b eseménynél, akkor a → b.
Ha a esemény egy üzenet küldése, és b esemény annak
fogadása, akkor a → b.
A reláció tranzitív: ha a → b és b → c, akkor a → c

Parcialitás
A fenti reláció parciális rendezés: előfordulhat, hogy két esemény közül
egyik sem előzi meg a másikat.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 6 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Logikai órák

Az idő és az előbb-történt reláció


Minden e eseményhez időbélyeget rendelünk, ami egy egész szám (jelölése:
C(e)), és megköveteljük az alábbi tulajdonságokat.
Ha a → b egy folyamat két eseményére, akkor C(a) < C(b).
Ha a esemény egy üzenet küldése és b esemény annak fogadása, akkor
C(a) < C(b).

Globális óra nélkül?


Ha a rendszerben van globális óra, azzal a fenti időbélyegek elkészíthetők.
A továbbiakban azt vizsgáljuk, hogyan lehet az időbélyegeket globális óra
nélkül elkészíteni.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 7 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Logikai órák: Lamport-féle időbélyegek


Minden Pi folyamat saját Ci számlálót tart nyilván az alábbiak szerint:
Pi minden eseménye eggyel növeli a számlálót.
Az elküldött m üzenetre ráírjuk az időbélyeget: ts(m) = Ci .
Ha az m üzenet beérkezik Pj folyamathoz, ott a számláló új értéke
Cj = max{Cj , ts(m)} + 1 lesz; így az idő „nem folyik visszafelé”.
Pi és Pj egybeeső időbélyegei közül tekintsük a Pi -belit elsőnek, ha i < j.

P1 P2 P3 P1 P2 P3
0 0 0 0 0 0
6 m1 8 10 6 m1 8 10
12 16 20 12 16 20
18 24 m2 30 18 24 m2 30
24 32 40 24 32 40
30 40 50 30 P2 adjusts 40 50
36 48 60 36 its clock 48 60
42 56 m3 70 42 61 m3 70
48 64 80 48 69 80
54 m4 72 90 70 m4 77 90
60 80 100 76 P1 adjusts 85 100
its clock
Maarten van Steen, Kitlei Róbert (a) Elosztott rendszerek (b) 8 / 28
Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Logikai órák

Beállítás: köztesréteg
Az órák állítását és az üzenetek időbélyegeit a köztesréteg kezeli.

Application layer

Application sends message Message is delivered to application

Adjust local clock Adjust local clock Middleware layer


and timestamp message

Middleware sends message Message is received

Network layer

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 9 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Logikai órák: példa


Pontosan sorbarendezett csoportcímzés
Ha replikált adatbázison konkurens műveleteket kell végezni, sokszor
követelmény, hogy mindegyik másolaton ugyanolyan sorrendben hajtódjanak
végre a műveletek.
Az alábbi példában két másolatunk van, a számlán kezdetben $1000 van.
P1 befizet $100-t, P2 1% kamatot helyez el.

Update 1 Update 2

Replicated database
Update 1 is Update 2 is
performed before performed before
update 2 update 1

Probléma
Ha a műveletek szinkronizációja nem megfelelő, érvénytelen eredményt
kapunk: másolat1 ← $1111, de másolat2 ← $1110.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 10 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Példa: Pontosan sorbarendezett csoportcímzés


Pontosan sorbarendezett csoportcímzés
A Pi folyamat minden műveletet időbélyeggel ellátott üzenetben küld el.
Pi egyúttal beteszi a küldött üzenetet a saját queuei prioritásos sorába.
A Pj folyamat a beérkező üzeneteket az ő queuej sorába teszi be az
időbélyegnek megfelelő prioritással. Az üzenet érkezéséről mindegyik
folyamatot értesíti.

Pj akkor adja át a msgi üzenetet feldolgozásra, ha:

(1) msgi a queuej elején található (azaz az ő időbélyege a legkisebb)


(2) a queuej sorban minden Pk (k 6= i) folyamatnak megtalálható legalább
egy üzenete, amelynek msgi -nél későbbi az időbélyege

Feltételek
Feltételezzük, hogy a kommunikáció a folyamatok között megbízható és FIFO
sorrendű.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 11 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Időbélyeg-vektor

Okság
Arra is szükségünk lehet, hogy megállapíthassuk két eseményről, hogy az
egyik okoz(hat)ta-e a másikat – illetve fordítva, függetlenek-e egymástól.
Az eddigi megközelítésünk erre nem alkalmas: abból, hogy C(a) < C(b), nem
vonható le az a következtetés, hogy az a esemény okságilag megelőzi a b
eseményt.

P1 P2 P3
0 0 0
A példában szereplő adatok
6 m1 8
m2
10 a esemény: m1 beérkezett T = 16
12 16 20
18 24 30
időbélyeggel;
24 32 m3 40 b esemény: m2 elindult T = 20
30 40 50 időbélyeggel.
36 48 60
Bár 16 < 20, a és b nem függenek
42 61 m4 70
48 69 80 össze okságilag.
70 m5 77 90
76 85 100

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 12 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Időbélyeg-vektor

Időbélyeg-vektor
A Pi most már az összes másik folyamat idejét is számon tartja egy
VCi [1..n] tömbben, ahol VCi [j] azoknak a Pj folyamatban bekövetkezett
eseményeknek a száma, amelyekről Pi tud.
Az m üzenet elküldése során Pi megnöveli eggyel VCi [i] értékét (vagyis
az üzenetküldés egy eseménynek számít), és a teljes Vi
időbélyeg-vektort ráírja az üzenetre.
Amikor az m üzenet megérkezik a Pj folyamathoz, amelyre a ts(m)
időbélyeg van írva, két dolog történik:
(1) VCj [k ] := max{VCj [k ], ts(m)[k ]}
(2) VCj [j] megnő eggyel, vagyis az üzenet fogadása is egy eseménynek
számít

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 13 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Pontosan sorbarendezett csoportcímzés

Időbélyeg-vektor alkalmazása
Az időbélyeg-vektorokkal megvalósítható a pontosan sorbarendezett
csoportcímzés: csak akkor kézbesítjük az üzeneteket, ha már
mindegyik előzményüket kézbesítettük.
Ehhez annyit változtatunk az előbb leírt időbélyeg-vektorok
működésén, hogy amikor Pj fogad egy üzenetet, akkor nem növeljük
meg VCj [j] értékét.

Pj csak akkor kézbesíti az m üzenetet, amikor:


ts(m)[i] = VCj [i] + 1, azaz a Pj folyamatban Pi minden korábbi
üzenetét kézbesítettük
ts(m)[k ] ≤ VCj [k ] for k 6= i, azaz az üzenet „nem a jövőből jött”

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Pontosan sorbarendezett csoportcímzés

Példa
VC0 = (1,0,0) VC0 = (1,1,0)
P0
m

P1
m*
VC1 = (1,1,0) VC2 = (1,1,0)
P2
VC 2= (0,0,0) VC2 = (1,0,0)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 15 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Kölcsönös kizárás

Kölcsönös kizárás: a feladat


Több folyamat egyszerre szeretne hozzáférni egy adott erőforráshoz.
Ezt egyszerre csak egynek engedhetjük meg közülük, különben az
erőforrás helytelen állapotba kerülhet.

Megoldásfajták
Központi szerver használata.
Peer-to-peer rendszeren alapuló teljesen elosztott megoldás.
Teljesen elosztott megoldás általános gráfszerkezetre.
Teljesen elosztott megoldás (logikai) gyűrűben.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 16 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Kölcsönös kizárás: központosított

0 1 2 0 1 2 0 1 2
Request Release
Request OK
OK
No reply
3 3 3
Queue is 2
empty
Coordinator

(a) (b) (c)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Kölcsönös kizárás: decentralizált


Kölcsönös kizárás: decentralizált
Tegyük fel, hogy az erőforrás n-szeresen többszörözött, és minden
replikátumhoz tartozik egy azt kezelő koordinátor.
Az erőforráshoz való hozzáférésről többségi szavazás dönt: legalább
m koordinátor engedélye szükséges, ahol m > n/2.
Feltesszük, hogy egy esetleges összeomlás után a koordinátor hamar
felépül – azonban a kiadott engedélyeket elfelejti.

Példa: hatékonyság
Tegyük fel, hogy a koordinátorok rendelkezésre állásának
valószínűsége 99.9% („három kilences”), 32-szeresen replikált az
erőforrásunk, és a koordinátorok háromnegyedének engedélyére van
szükségünk (m = 0.75n).
Ekkor annak a valószínűsége, hogy túl sok koordinátor omlik össze,
igen alacsony: kevesebb mint 10−40 .
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 18 / 28
Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Kölcsönös kizárás: elosztott

Működési elv
Ismét többszörözött az erőforrás, amikor a kliens hozzá szeretne férni,
kérést küld mindegyik koordinátornak (időbélyeggel).
Választ (hozzáférési engedélyt) akkor kap, ha
a koordinátor nem igényli az erőforást, vagy
a koordinátor is igényli az erőforrást, de kisebb az időbélyege.
Különben a koordinátor (átmenetileg) nem válaszol.
Accesses
8
resource

0 0 0
8 OK OK OK
12
8
Accesses
1 2 1 2 1 2
12 OK resource

12
(a) (b) (c)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 19 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Kölcsönös kizárás: zsetongyűrű

Essence
A folyamatokat logikai gyűrűbe szervezzük (fizikailag lehetnek pl. egy
lokális hálózaton).
A gyűrűben egy zsetont küldünk körbe, amelyik folyamat birtokolja, az
férhet hozzá az erőforráshoz.

2
1 3

0 4
0 2 4 3 7 1 6 5

7 5
6

(a) (b)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 20 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Kölcsönös kizárás: összehasonlítás

Belépés előtti
Algoritmus Be+kilépési késleltetés Problémák
üzenetszám (üzenetidőben)
Központosított 3 2 Ha összeomlik a koordinátor
Decentralizált 2mk + m 2mk Kiéheztetés, rossz hatékonyság
Elosztott 2 (n – 1) 2 (n – 1) Bármely folyamat összeomlása
Zsetongyűrű 1 .. ∞ 0 .. n – 1 A zseton elvész,
a birtokló folyamat összeomlik

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 21 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Csúcsok globális pozícionálása

Feladat
Meg szeretnénk becsülni a csúcsok közötti kommunikációs
költségeket. Erre többek között azért van szükség, hogy hatékonyan
tudjuk megválasztani, melyik gépekre helyezzünk replikátumokat az
adatainkból.

Ábrázolás
A csúcsokat egy többdimenziós geometriai térben ábrázoljuk, ahol a P
és Q csúcsok közötti kommunikációs költséget a csúcsok távolsága
jelöli. Így a feladatot visszavezettük távolságok becslésére.

A tér dimenziószáma minél nagyobb, annál pontosabb lesz a


becslésünk, de annál költségesebb is.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 22 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

A pozíció kiszámítása

A becsléshez szükséges csúcsok száma


Egy pont pozíciója meghatározható a tér dimenziószámánál eggyel
nagyobb számú másik pontból a tőlük vett távolságok alapján.

(x 2 ,y2 )

d2

d1
(x 1 ,y1 )
P
d3

(x 3 ,y3 )

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 23 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

A pozíció kiszámítása

Nehézségek
3.2
a késleltetések mért értékei
1.0 2.0
ingadoznak
nem egyszerűen összeadódnak a
távolságok −→ 1 2 3 4
P Q R

Megoldás
Válasszunk L darab csúcsot, amelyek pozícióját tegyük fel, hogy nagyon
pontosan meghatároztuk.

Egy P csúcsot ezekhez viszonyítva helyezünk el: megmérjük az összestől


mért késleltetését, majd úgy választjuk meg P pozícióját, hogy az össz-hiba
(a mért késleltetések és a megválasztott pozícióból geometriailag adódó
késleltetés eltérése) a legkisebb legyen.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 24 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Vezetőválasztás: zsarnok-algoritmus
Vezetőválasztás: feladat
Sok algoritmusnak szüksége van arra, hogy kijelöljön egy folyamatot,
amely aztán a további lépéseket koordinálja.
Ezt a folyamatot dinamikusan szeretnénk kiválasztani.

Zsarnok-algoritmus
A folyamatoknak sorszámot adunk. A legnagyobb sorszámú folyamatot
szeretnénk vezetőnek választani.
Bármelyik folyamat kezdeményezhet vezetőválasztást. Mindegyik
folyamatnak (amelyről nem ismert, hogy kisebb lenne a küldőnél a
sorszáma) elküld egy választási üzenetet.
Ha Pnagyobb üzenetet kap Pkisebb -től, visszaküld neki egy olyan
üzenetet, amellyel kiveszi Pkisebb -et a választásból.
Ha P megadott időn belül nem kap letiltó üzenetet, ő lesz a
vezető. Erről mindegyik másik folyamatot értesíti egy üzenettel.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 25 / 28
Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Zsarnok-algoritmus

1 1 1
2 5 2 5 2 5
ion OK
Elect Election

n
ctio
Election OK
4 6 4 6 4 6

Ele

n
El

t io
ec

ec
tio

El
n

0 3 0 3 0 3
7 7 7
Previous coordinator
has crashed
(a) (b) (c)

1 1
2 5 2 5

OK
Coordinator
4 6 4 6

0 3 0 3
7 7

(d) (e)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 26 / 28


Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Vezetőválasztás gyűrűben
Vezetőválasztás gyűrűben
Ismét logikai gyűrűnk van, és a folyamatoknak vannak sorszámai. A
legnagyobb sorszámú folyamatot szeretnénk vezetőnek választani.

Bármelyik folyamat kezdeményezhet vezetőválasztást: elindít egy


üzenetet a gyűrűn körbe, amelyre mindenki ráírja a sorszámát. Ha egy
folyamat összeomlott, az kimarad az üzenetküldés menetéből.

Amikor az üzenet visszajut a kezdeményezőhöz, minden aktív folyamat


sorszáma szerepel rajta. Ezek közül a legnagyobb lesz a vezető; ezt
egy másik üzenet körbeküldése tudatja mindenkivel.

Nem okozhat problémát, ha több folyamat is egyszerre kezdeményez


választást, mert ugyanaz az eredmény adódik. Ha pedig az üzenetek
valahol elvesznének (összeomlik az éppen őket tároló folyamat), akkor
újrakezdhető a választás.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 27 / 28
Órák szinkronizálása Logikai órák Kölcsönös kizárás Csúcsok pozícionálása Vezetőválasztás

Superpeer-választás
Szempontok
A superpeer-eket úgy szeretnénk megválasztani, hogy teljesüljön rájuk:
A többi csúcs alacsony késleltetéssel éri el őket
Egyenletesen vannak elosztva a hálózaton
A csúcsok megadott hányadát választjuk superpeer-nek
Egy superpeer korlátozott számú peer-t szolgál ki

Megvalósítás DHT használata esetén


Az azonosítók terének egy részét fenntartjuk a superpeer-ek számára.
Példa: ha m-bites azonosítókat használunk, és S superpeer-re van
szükségünk, a k = dlog2 Se felső bitet foglaljuk le a superpeer-ek számára.
Így N csúcs esetén kb. 2k −m N darab superpeer lesz.

| ·{z
A p kulcshoz tartozó superpeer: a p AND 11 · · 11} 00
| ·{z
· · 00} kulcs felelőse az.
k m−k

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 28 / 28


Elosztott rendszerek: Alapelvek és paradigmák
Distributed Systems: Principles and Paradigms

Maarten van Steen1 Kitlei Róbert 2


1 VU Amsterdam, Dept. Computer Science
2 ELTE Informatikai Kar

7. rész: Konzisztencia & replikáció


2015. május 24.
Tartalomjegyzék

Fejezet
01: Bevezetés
02: Architektúrák
03: Folyamatok
04: Kommunikáció
05: Elnevezési rendszerek
06: Szinkronizáció
07: Konzisztencia & replikáció
08: Hibatűrés
10: Objektumalapú elosztott rendszerek
11: Elosztott fájlrendszerek
12: Elosztott webalapú rendszerek

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 2 / 27


7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Hatékonyság és átméretezhetőség

Konfliktusos műveletek
A replikátumok konzisztensen tartásához garantálni kell, hogy az egymással
konfliktusba kerül(het)ő műveletek minden replikátumon egyforma sorrendben
futnak le.
Ahogy a tranzakcióknál, írás–olvasás és írás–írás konfliktusok fordulhatnak
elő.

Terv: kevesebb szinkronizáció


Az összes konfliktusos művelet globális sorbarendezése általában túl
költséges.
Megvizsgáljuk, hogyan lehet a konzisztenciakövetelményeket gyengíteni.
Jellemzően minél megengedőbbek a feltételek, annál kevesebb
szinkronizáció szükséges a biztosításukhoz.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 3 / 27


7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Adatközpontú konzisztencia

Konzisztenciamodell
A konzisztenciamodell megszabja, milyen módokon használhatják a
folyamatok az adatbázist. Elosztott adattár (lásd az ábrát) esetén legfőképpen
az egyidejű írási és olvasási műveletekre ad előírásokat. Ha a feltételek
teljesülnek, az adattárat érvényesnek tekintjük.
Process Process Process

Local copy

Distributed data store

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 4 / 27


7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Folyamatos konzisztencia

Konzisztencia mértéke
A konzisztencia több módon is sérülhet:
eltérhet a replikátumok számértéke
eltérhet, hogy mennyire frissek az egyes replikátumok
eltérhet, hogy hány frissítési művelet nem történt még meg (illetve:
sorrendben melyik műveletek hiányoznak)

Conit
Ha megtehetjük, a konzisztenciafeltéleket nem a teljes adatbázisra írjuk
fel, hanem az adatoknak minél szűkebb körére. Az olyan adategység,
amelyre közös feltételrendszer vonatkozik, a conit (consistency unit).

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 5 / 27


7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Példa: Conit
Replica A Replica B

Conit Conit
x = 6; y = 3 x = 2; y = 5

Operation Result Operation Result


< 5, B> x := x + 2 [x=2] < 5, B> x := x + 2 [x=2]

< 8, A> y := y + 2 [y=2] <10, B> y := y + 5 [y=5]

<12, A> y := y + 1 [y=3]

<14, A> x := y * 2 [x=6]

Vector clock A = (15, 5) Vector clock B = (0, 11)


Order deviation =3 Order deviation =2
Numerical deviation = (1, 5) Numerical deviation = (3, 6)

Conit (most az x és y változó alkotja)


Mindkét replikátumnak van vektorórája: (A-beli idő, B-beli idő)
B elküldi A-nak a [h5, Bi: x := x + 2] műveletet
A véglegesíti a kijött eredményt (nem vonható vissza)
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 6 / 27
7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Példa: Conit
Replica A Replica B

Conit Conit
x = 6; y = 3 x = 2; y = 5

Operation Result Operation Result


< 5, B> x := x + 2 [x=2] < 5, B> x := x + 2 [x=2]

< 8, A> y := y + 2 [y=2] <10, B> y := y + 5 [y=5]

<12, A> y := y + 1 [y=3]

<14, A> x := y * 2 [x=6]

Vector clock A = (15, 5) Vector clock B = (0, 11)


Order deviation =3 Order deviation =2
Numerical deviation = (1, 5) Numerical deviation = (3, 6)

Conit (most az x és y változó alkotja)


A három műveletet nem végzett még el
A-ban egy B-beli művelet még nem hajtódott végre, a számérték
legfeljebb 5-tel térhet el ⇒ (1, 5)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 7 / 27


7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Soros konzisztencia
Jelölések
Sokszor a feltételeket nem a számértékekre alapozzuk, hanem csupán
az írások/olvasások tényére. Jelölje W(x) azt, hogy az x változót írta
egy megadott folyamat, R(x) azt, hogy olvasta, a mellettük levő betűk
pedig azt jelölik, hogy az olvasás melyik írással írt értéket látja.

Soros konzisztencia
Soros konzisztencia esetén azt várjuk el, hogy a végrehajtás
eredménye olyan legyen, mintha az összes folyamat összes művelete
egy meghatározott sorrendben történt volna meg, megőrizve bármely
adott folyamat saját műveleteinek sorrendjét. (a) teljesíti, (b) nem
P1: W(x)a P1: W(x)a
P2: W(x)b P2: W(x)b
P3: R(x)b R(x)a P3: R(x)b R(x)a
P4: R(x)b R(x)a P4: R(x)a R(x)b

(a) (b)
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 8 / 27
7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Okozati konzisztencia
Okozati konzisztencia
A potenciálisan okozatilag összefüggő műveleteket kell mindegyik
folyamatnak azonos sorrendben látnia. A konkurens írásokat
különböző folyamatok különböző sorrendben láthatják.
(b) teljesíti; (a) nem, mert ott P1 és P2 írásait „összeköti” az olvasás
P1: W(x)a
P2: R(x)a W(x)b
P3: R(x)b R(x)a
P4: R(x)a R(x)b
(a)

P1: W(x)a
P2: W(x)b
P3: R(x)b R(x)a
P4: R(x)a R(x)b
(b)
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 9 / 27
7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Műveletek csoportosítása
Szinkronizáció
Most szinkronizációs változókat használunk, ezek elérései sorosan
konzisztensek. Háromfajta megközelítés:
Egy rendszerszintű S változó használata. S egy elérése után
garantált, hogy a korábbi elérései előtti írások megtörténtek.
Igényeljük (acquire) és aztán feloldjuk (release) a változókat, ezzel
kritikus területeket (más néven: védett területeket) alakítunk ki.
Több rendszerszintű szinkronizációs változó használata.
A védelem a területen írt/olvasott adatokra terjed ki.
Minden adatelemhez külön változó használata.
A védelem a változó adatelemére terjed ki.
Ha a fenti szinkronizációs határokon belül több írás is történik, a
határon belül ezek nem definiált sorrendben látszanak, és a
szinkronizáció után csak a végeredmény látszik, az nem, hogy milyen
sorrendben történtek az írások.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 10 / 27
7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Kliensközpontú konzisztencia
Cél
Azt helyezzük most előtérbe, hogy a szervereken tárolt adatok hogyan
látszanak egy adott kliens számára. A kliens mozog: különböző
szerverekhez csatlakozik, és írási/olvasási műveleteket hajt végre.

Az A szerver után a B szerverhez csatlakozva különböző problémák


léphetnek fel:
az A-ra feltöltött frissítések lehet, hogy még nem jutottak el B-hez
B-n lehet, hogy újabb adatok találhatóak meg, mint A-n
a B-re feltöltött frissítések ütközhetnek az A-ra feltöltöttekkel
Cél: a kliens azokat az adatokat, amelyeket az A szerveren kezelt,
ugyanolyan állapotban lássa B-n. Ekkor az adatbázis konzisztensnek
látszik a kliens számára.

Négyfajta kombináció: a kliens A-n (olvasott/írt) adatokat (olvas/ír) B-n.


Maarten van Steen, Kitlei Róbert Elosztott rendszerek 11 / 27
7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Kliensközpontú konzisztencia

Client moves to other location


and (transparently) connects to
other replica

Replicas need to maintain


client-centric consistency

Wide-area network

Distributed and replicated database


Read and write operations
Portable computer

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 12 / 27


7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Kliensközpontú konzisztencia: olvasás után olvasás


Jelölések
WS(xi ): írási műveletek összessége (write set) az x változóra
WS(xi ; xj ): olyan WS(xj ), amely tartalmazza WS(xi ) frissítéseit

Monoton olvasás (olvasás után olvasás)


Ha egyszer a kliens kiolvasott egy értéket x-ből, minden ezután
következő olvasás ezt adja, vagy ennél frissebb értéket.

Példa: határidőnapló
L1: WS( x 1) R( x 1)
Minden korábbi bejegyzésünknek meg
L2: WS( x 1;x 2) R( x 2)
kell lennie az új szerveren is.

L1: WS( x 1) R( x 1) Példa: levelezőkliens


L2: WS( x 2) R( x 2) Minden korábban letöltött levelünknek
meg kell lennie az új szerveren is.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 13 / 27
7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Kliensközpontú konzisztencia: írás után írás


Monoton írás (írás után írás)
A kliens csak akkor írhatja x-et, ha a kliens korábbi írásai x-re már
befejeződtek.

Példa: forráskód
A kliens egy programot szerkeszt több
L1: W( x 1) szerveren. Minden korábbi
szerkesztésnek jelen kell lennie, mert
L2: WS( x 1) W(x 2 )
az újonnan írt kód függ tőlük.

L1: W( x 1) Példa: verziókezelés


L2: W(x 2 ) A kliens verziószámokkal ellátott
fájlokat készít. Minden korábbi
verziónak meg kell lennie ahhoz, hogy
újat készíthessen.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 27
7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Kliensközpontú konzisztencia: írás után olvasás

Olvasd az írásodat (írás után olvasás)


Ha a kliens olvassa x-et, a saját legutolsó írásának eredményét kapja
(vagy frissebbet).

L1: W( x 1) Példa: honlap szerkesztése


L2: WS( x 1;x 2) R( x 2)
A kliens a honlapját szerkeszti, majd
megnézi a szerkesztés eredményét.
Ahelyett, hogy a böngésző
L1: W( x 1) gyorsítótárából egy régebbi verzió
L2: WS( x 2) R( x 2)
kerülne elő, a legfrissebb változatot
szeretné látni.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 15 / 27


7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Kliensközpontú konzisztencia: olvasás után írás

Írás olvasás után (olvasás után írás)


Ha a kliens kiolvasott egy értéket x-ből, minden ezután kiadott frissítési
művelete x legalább ennyire friss értékét módosítja.

L1: WS( x 1) R( x 1)

L2: WS( x 1;x 2) W( x 2) Példa: fórum


A kliens csak olyan hírre tud választ
L1: WS( x 1) R( x 1) beküldeni, amelyet már látott.
L2: WS( x 2) W( x 3)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 16 / 27


7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Replikátumszerverek elhelyezése
Tegyük fel, hogy N lehetséges helyre szeretnénk összesen K darab
szervert telepíteni. Melyik helyeket válasszuk?
Tegyük fel, hogy ismert a kliensek helye. Válasszuk meg úgy a
szervereket, hogy azok átlagtávolsága a kliensektől minimális
legyen. Egzakt kiszámítása költséges, heurisztika szükséges.
Jellemzően a kliensek több autonóm rendszerbena találhatóak
meg. A K legnagyobb rendszerben helyezzünk el egy-egy
szervert, mindig a rendszeren belül leginkább központi helyre.
Szintén magas a számítási költsége.
Mint korábban a csúcsok globális pozícionálásánál, ábrázoljuk a
csúcsokat egy d-dimenziós térben, ahol a távolság mutatja a
késleltetést. Keressük meg a K „legsűrűbb” részt, és oda
helyezzünk szervereket. Számítási költsége alacsonyabb.
aAteljes hálózat útválasztás szempontjából egységként adminisztrált
része, gyakran egy Internet-szolgáltató (ISP) felügyeli.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 27
7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Tartalom replikálása
Különböző jellegű folyamatok tárolhatják az adatokat:
Tartós másolat: a folyamat mindig rendelkezik másolattal: eredetszerver
(origin server)
Szerver által kezdeményezett másolat: replikátum kihelyezése egy
szerverre, amikor az igényli az adatot
Kliens által kezdeményezett másolat: kliensoldali gyorsítótár

Server-initiated replication
Client-initiated replication

Permanent
replicas
Server-initiated replicas

Client-initiated replicas

Clients

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 18 / 27


7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Szerver által kezdeményezett másolatok


C2
Server without
copy of file F

P
Client Server with
Q copy of F

C1
File F

Server Q counts access from C1 and


C2 as if they would come from P

A rendszer figyeli, hányszor fértek hozzá a fájlhoz (A), úgy számolva,


mintha a kérés a klienshez legközelebbi szerverhez (P) érkezett volna
be. Adott két szám, D és R, melyekre D < R. Mit tegyünk a fájllal?
Ha A < D ⇒ töröljük Q-ról (ha megvan máshol a rendszerben)
Ha D < A < R ⇒ migráljuk Q-ról P-re
Ha R < A ⇒ replikáljuk P-re
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 19 / 27
7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Frissítés terjesztése

Modellek
Megváltozott tartalmat több különböző módon lehet szerver-kliens
architektúrában átadni:
Kizárólag a frissítésről szóló értesítés/érvénytelenítés
elterjesztése (pl. gyorsítótáraknál ez egy egyszerű lehetőség)
Passzív replikáció: adatok átvitele egyik másolatról a másikra
Aktív replikáció: frissítési művelet átvitele

Melyiket érdemes választani?


A sávszélesség és az írási/olvasási műveletek aránya a replikátumon
nagyban befolyásolja, melyik módszer a leghatékonyabb adott esetben.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 20 / 27


7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Frissítés terjesztése

Küldésalapú: a szerver a kliens kérése nélkül küldi a frissítést


Rendelésalapú: a kliens kérvényezi a frissítést

Témakör Küldésalapú Rendelésalapú


Kezdeményező Szerver Kliens
Szerverállapot Klienscache-ek listája Nincsen
Küldött üzenetek Frissítés* Lekérdezés és frissítés
Válaszidő a kliensnél Azonnali* Letöltő frissítés ideje

*: A kliens később még alkalmazhat letöltő frissítést (fetch update).

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 21 / 27


7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Frissítés terjesztése

Haszonbérlet
Haszonbérlet (lease): a szerver ígéretet tesz a kliensnek, hogy át
elküldi neki a frissítéseket, amíg a haszonbérlet aktív

Rugalmas haszonbérlet
Fix lejárat helyett rugalmasabb, ha a rendszer állapotától függhet a
haszonbérlet időtartama:
Kor szerinti: minél régebben változott egy objektum, annál
valószínűbb, hogy sokáig változatlan is marad, ezért hosszabb
lejárat adható
Igénylés gyakorisága szerinti: minél gyakrabban igényli a kliens az
objektumot, annál hosszabb időtartamokra kap haszonbérletet rá
Terhelés szerinti: minél nagyobb a szerver terhelése, annál
rövidebb haszonbérleteket ad ki

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 22 / 27


7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Folyamatos konzisztencia: számszerű eltérések


Alapelv
Az egyszerűség kedvéért most egyetlen adatelemet vizsgálunk.
Az Si szerver a log(Si ) naplóba írja az általa végrehajtott
műveleteket.
A W írási műveletet elsőként végrehajtó szervert jelölje origin(W ),
a művelet hatására bekövetkező értékváltozást pedig weight(W ).
Tegyük fel, hogy ez mindig pozitív szám.
Si olyan írásait, amelyek Sj -ről származnak, jelölje TW [i, j]:

TW [i, j] = ∑ weight(W ) origin(W ) = Sj & W ∈ log(Si )

Ekkor a változó összértéke (v) és értéke az i-edik másolaton (vi ):

v = vkezdeti + ∑ TW [k , k ] vi = vkezdeti + ∑ TW [i, k ]


k k

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 23 / 27


7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Folyamatos konzisztencia: számszerű eltérések


Cél: minden Si szerveren teljesüljön: v − vi < δi (rögzített δi értékre).
Algoritmus
TW [i, j] értékét minden Sk szerver becsülje egy TWk [i, j] értékkel.
(Azaz: Sk „mit tud”, Si milyen frissítéseket kapott már meg Sj -től.)
Mivel a számértékeink nemnegatívak, fennáll:

0 ≤ TWk [i, j] ≤ TW [i, j] ≤ TW [j, j] = TWj [j, j]

Amikor új frissítési művelet érkezik be egy szerverre, pletykálással


értesíti erről a többi szervert.
Amikor Sj azt látja, hogy TWj [i, j] túl messzire kerül TW [j, j]-tőla ,
akkor küldje el Si -nek log(Sj ) műveleteit.
a TW [j, j] − TW
j [i, j] > δi /(N − 1), ahol N a replikátumok száma

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 24 / 27


7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Elsődleges másolaton alapuló protokoll távoli írással

Client Client
Primary server
for item x Backup server
W1 W5 R1 R2

W4 W4

W3 W3 Data store

W2 W3
W4

W1. Write request R1. Read request


W2. Forward request to primary R2. Response to read
W3. Tell backups to update
W4. Acknowledge update
W5. Acknowledge write completed

Példa: nagy hibatűrést igénylő elosztott adatbázisokban és


fájlrendszerekben használatos. A másolatok gyakran egy lokális
hálózatra kerülnek.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 25 / 27
7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Elsődleges másolaton alapuló protokoll helyi írással

Client Client
Old primary New primary
for item x for item x Backup server
R1 R2 W1 W3

W5 W5

W4 W4 Data store
W5 W2
W4

W1. Write request R1. Read request


W2. Move item x to new primary R2. Response to read
W3. Acknowledge write completed
W4. Tell backups to update
W5. Acknowledge update

Példa: kapcsolat nélküli munka, időnként szinkronizálás a rendszerrel


annak különböző pontjaihoz csatlakozva.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 26 / 27


7.2. Adatközpontú 7.3. Kliensközpontú 7.4 Replikátumok elhelyezése 7.5 Konzisztenciaprotokollok

Többszörözöttírás-protokoll
Testületalapú protokoll
Többszörözött írás: az írási műveletet több szerveren hajtjuk végre.
Testület (quorum): egy művelet végrehajtása előtt meghatározott
számú szervertől kell engedélyt kérni. Jelölés: írási NW , olvasási NR .
Egy írási művelet ütközhetne egy olvasási művelettel, vagy egy másik
írásival; az első elkerüléséhez NR + NW > N, a másodikhoz
NW + NW > N, azaz NW > N/2 szükséges a skatulya-elv alapján.
Read quorum

A B C D A B C D A B C D

E F G H E F G H E F G H

I J K L I J K L I J K L
NR = 3, N W = 10 NR = 7, NW = 6 NR = 1, N W = 12
W

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 27 / 27


Elosztott rendszerek: Alapelvek és paradigmák
Distributed Systems: Principles and Paradigms

Maarten van Steen1 Kitlei Róbert 2


1 VU Amsterdam, Dept. Computer Science
2 ELTE Informatikai Kar

8. rész: Hibatűrés
2015. május 24.
Tartalomjegyzék

Fejezet
01: Bevezetés
02: Architektúrák
03: Folyamatok
04: Kommunikáció
05: Elnevezési rendszerek
06: Szinkronizáció
07: Konzisztencia & replikáció
08: Hibatűrés
10: Objektumalapú elosztott rendszerek
11: Elosztott fájlrendszerek
12: Elosztott webalapú rendszerek

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 2 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Megbízhatóság

Alapok
A komponensek feladata, hogy a kliensek számára szolgáltatásokat
tesz elérhetővé. Ehhez sokszor maga is szolgáltatásokat vesz igénybe
más komponensektől ⇒ függ tőlük.
A függéseket most főleg abból a szempontból vizsgáljuk, hogy a
hivatkozott komponensek helyessége kihat a hivatkozó helyességére.

Elérhetőség A komponens reagál a megkeresésre


Megbízhatóság A komponens biztosítja a szolgáltatást
Biztonságosság A komponens ritkán romlik el
Karbantarthatóság Az elromlott komponens könnyen javítható

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 3 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Terminológia

Hasonló nevű, de különböző fogalmak


Hibajelenség (failure): a komponens nem a tőle elvártaknak megfelelően
üzemel
Hiba (error): olyan rendszerállapot, amely hibajelenséghez vezethet
Hibaok (fault): a hiba (feltételezett) oka

Hibákkal kapcsolatos tennivalók


Megelőzés
Hibatűrés: a komponens legyen képes elfedni a hibákat
Mérséklés: lehet mérsékelni a hibák kiterjedését, számát, súlyosságát
Előrejelzés: előre becsülhető lehet a hibák száma, jövőbeli előfordulása,
következményei

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 4 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Lehetséges hibaokok

Lehetséges hibaokok
A hibáknak sok oka lehet, többek között az alábbiak.
Összeomlás (crash): a komponens leáll, de előtte helyesen működik
Kiesés (omission): a komponens nem válaszol
Időzítési hiba (timing): a komponens helyes választ küld, de túl későn
(ennek teljesítménnyel kapcsolatos oka lehet: a komponens túl lassú)
Válaszhiba (response): a komponens hibás választ küld
Értékhiba: a válaszként küldött érték rossz
Állapotátmeneti hiba: a komponens helytelen állapotba kerül
Váratlan hiba (arbitrary): véletlenszerű válaszok, gyakran véletlenszerű
időzítéssel

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 5 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Összeomlás
Probléma
A kliens számára nem különböztethető meg, hogy a szerver összeomlott vagy
csak lassú.

Ha a kliens a szervertől adatot vár, de nem érkezik, annak oka lehet...


időzítési vagy kieséses hiba a szerveren.
a szerver és a kliens közötti kommunikációs csatorna meghibásodása.

Lehetséges feltételezések
Fail-silent: a komponens összeomlott vagy kiesett egy válasz; a kliensek
nem tudják megkülönböztetni a kettőt
Fail-stop: a komponens hibajelenségeket produkál, de ezek
felismerhetőek (a komponens közzéteszi, vagy időtúllépésből szűrjük le)
Fail-safe: a komponens csak olyan hibajelenségeket produkál, amelyek
nem okoznak (nagy) kárt

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 6 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Folyamatok hibatűrése
Cél
Próbáljuk meg a hibákat redundanciával elfedni.

Egyenlő csoport: Jó hibatűrést biztosít, mert a csoport tagjai között közvetlen


az információcsere. A nagymértékű többszörözöttség azonban
megnehezíti az implementálást (a vezérlés teljesen elosztott).
Hierarchikus csoport: Két fél csak a koordinátoron keresztül képes
kommunikálni egymással. Rossz a hibatűrése és a skálázhatósága, de
könnyű implementálni.
Flat group
Hierarchical group Coordinator

Worker

(a) (b)
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 7 / 34
Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Csoporttagság kezelése

Csoportkezelő: Egy koordinátor kezeli a csoportot (vagy csoportokat).


Rosszul skálázódik.
Csoportkezelők csoportja: A csoportkezelő nem egyetlen szerver,
hanem egy csoportjuk közösen. Ezt a csoportot is kezelni kell, de
ezek a szerverek általában elég stabilak, így ez nem probléma:
centralizált csoportkezelés elegendő.
Csoportkezelő nélkül: A belépő/kilépő folyamat minden csoporttagnak
üzenetet küld.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 8 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Hibaelfedés csoportokban

k-hibatűrő csoport
k-hibatűrő csoport: olyan csoport, amely képes elfedni k tag egyszerre
történő meghibásodását.

Mekkorának kell a csoportnak lennie?


Ha a meghibásodottak összeomlanak, csak az szükséges, hogy legyen
megmaradó tag ⇒ k + 1 tag
Ha minden csoporttag egyformán működik, de a meghibásodottak rossz
eredményt adnak ⇒ 2k + 1 tag esetén többségi szavazással megkapjuk
a helyes eredményt
Ha a csoporttagok különbözően működnek, és mindegyikük kimenetét el
kell juttatni mindenki másnak („bizánci generálisok”) ⇒ 3k + 1 tag esetén
a „lojális” szerverek képesek megfelelő adatokat továbbítani k „áruló”
jelenlétében is

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 9 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Hibaelfedés csoportokban
Az áruló folyamatok Az alábbi két ábra illusztrálja k = 1
többféleképpen is tudnak helytelen esetben, hogy k áruló esetén
adatokat továbbítani. 3k + 1 folyamat elegendő, de 3k
Process 2 tells Process 3 passes még nem.
different things a different value
2 2
a b a a Először mindenki elküldi a saját
1 3 1 3 értékét, majd minden beérkezett
b b
(a) (b)
értéket ismét továbbítanak.
2
1 2
1 1
2 4
1 2
x 1 x 2 4
1 y
1
2
3 2 4
y 3 4
z
Faulty process
(a) Faulty process
(a)

1 Got(1, 2, x ) 1 Got 2 Got


2 Got(1, 2, y ) (1, 2, y ) (1, 2, x ) 1 Got(1, 2, x, 4 ) 1 Got 2 Got 4 Got
3 Got(1, 2, 3 ) (a, b, c ) (d, e, f ) 2 Got(1, 2, y, 4 ) (1, 2, y, 4 ) (1, 2, x, 4 ) (1, 2, x, 4 )
3 Got(1, 2, 3, 4 ) (a, b, c, d ) (e, f, g, h ) (1, 2, y, 4 )
4 Got(1, 2, z, 4 ) (1, 2, z, 4 ) (1, 2, z, 4 ) ( i, j, k, l )
(b) (c)

(b) (c)
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 10 / 34
Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Hibaelfedés csoportokban

Folyamatok: Szinkron: a folyamatok azonos ütemben lépnek-e


(lockstep)?
Késleltetések: A kommunikációs késleltetésekre van-e felső korlát?
Rendezettség: Az üzeneteket a feladás sorrendjében kézbesítik-e?
Átvitel: Az üzeneteket egyenként küldjük (unicast) vagy több-
címűen (multicast)?

Egyezség elérése
Néhány feltételrendszer, amely fennállásával elérhető, hogy kialakuljon
a közös végeredmény:
Ha a ütemezés szinkron és a késleltetés korlátozott.
Ha az üzeneteket sorrendtartó módon, többcíműen továbbítjuk.
Ha az ütemezés szinkron és a kommunikáció sorrendtartó.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 11 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Hibák észlelése

Időtúllépés
Időtúllépés észlelése esetén feltételezhetjük, hogy hiba lépett fel.
Az időkorlátok megadása alkalmazásfüggő, és nagyon nehéz
A folyamatok hibázása nem megkülönböztethető a hálózati
hibáktól
A hibákról értesíteni kell a rendszer többi részét is
Pletykálással elküldjük a hiba észlelésének tényét
A hibajelenséget észlelő komponens maga is hibaállapotba megy át

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 12 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Megbízható kommunikáció

Csatornák
A folyamatok megbízhatóságát azok csoportokba szervezésével tudtuk
növelni. Mit lehet mondani az őket összekötő kommunikációs
csatornák biztonságosságáról?

Hibajelenségek észlelése
A csomagokat ellenőrző összegekkel látjuk el (felfedi a bithibákat)
A csomagokat sorszámmal látjuk el (felfedi a kieséseket)

Hibajavítás
A rendszer legyen annyira redundáns, hogy automatikusan meg
lehessen javítani
Kérhetjük a meghibásodott/elveszett utolsó N csomag újraküldését

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 13 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Megbízható RPC
RPC: Fellépő hibajelenségek és azok kezelése
1: A kliens nem találja a szervert. Ezt egyszerűen ki lehet jelezni a
kliensnél.
2: A kliens kérése elveszett. A kliens újraküldi a kérést.
3: A szerver összeomlott. Ezt nehezebb kezelni, mert a kliens nem tudja,
hogy a szerver mennyire dolgozta fel a kérést.
Server Server Server
REQ REQ REQ
Receive Receive Receive
Execute Execute Crash
REP No REP No REP
Reply Crash

(a) (b) (c)

El kell dönteni, hogy milyen módon működjön a szerver.


„Legalább egyszer” szemantika szerint: A szerver az adott kérést
legalább egyszer végrehajtja (de lehet, hogy többször is).
„Legfeljebb egyszer” szemantika szerint: A szerver az adott kérést
legfeljebb egyszer hajtja végre (de lehet, hogy egyszer sem).
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 34
Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Megbízható RPC
RPC: Fellépő hibajelenségek és azok kezelése
4: Elveszett a szerver válasza. Nehéz felismerni, mert a szerver
összeomlása is hasonló a kliens szemszögéből. Nincsen általános
megoldás; ha idempotens műveleteink vannak (többszöri
végrehajtás ugyanazt az eredményt adja), megpróbálhatjuk újra
végrehajtani őket.
5: Összeomlik a kliens. Ilyenkor a szerver feleslegesen foglalja az
erőforrásokat: árvaa feladatok keletkeznek.
A kliens felépülése után az árva feladatokat szükség szerint
leállítja/visszagörgeti a szerver.
A kliens felépülése után új korszak kezdődik: a szerver leállítja az
árva feladatokat.
A feladatokra időkorlát adott. A túl sokáig futó feladatokat a szerver
leállítja.
a Más fordításban: fattyú.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 15 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Megbízható csoportcímzés
Adott egy többcímű átviteli csatorna; egyes folyamatok üzeneteket küldenek
rá és/vagy fogadnak róla.
Megbízhatóság: Ha m üzenet csatornára küldésekor egy folyamat a fogadók
közé tartozik, és köztük is marad, akkor m üzenetet kézbesíteni kell a
folyamathoz. Sokszor a sorrendtartás is követelmény.
Atomi csoportcímzés: Cél: elérni azt, hogy csak akkor kézbesítsük az
üzenetet, ha garantáltan mindegyik fogadónak kézbesíthető.

Egyszerű megoldás lokális hálózaton


A küldő számon tartja az elküldött üzeneteket. Minden fogadó nyugtázza
(ACK) az üzenet fogadását, vagy kéri az üzenet újraküldését (NACK), ha
észreveszi, hogy elveszett. Ha minden fogadótól megérkezett a nyugta, a
küldő törli az üzenetet a történetből.
Ez a megoldás nem jól skálázódik:

Ha sok a fogadó, a küldőhöz túl sok ACK és NACK érkezik.


A küldőnek minden fogadót ismernie kell.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 16 / 34
Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Megbízható csoportcímzés: visszajelzés-elfojtás


Hagyjuk el az ACK üzeneteket, csak a kimaradó üzenetek esetén
küldjenek a fogadók NACK üzeneteket. Tegyük fel, hogy a NACK
üzenetek közös csatornán utaznak, és mindenki látja őket. A P fogadó
a NACK küldése előtt véletlen ideig vár; ha közben egy másik
fogadótól NACK érkezik, akkor P nem küld NACK-t (elfojtás), ezzel
csökkenti az üzenetek számát. A NACK hatására a küldő mindegyik
fogadóhoz újra eljuttatja az üzenetet, így P-hez is.
Sender receives Receivers suppress their feedback
only one NACK

Sender Receiver Receiver Receiver Receiver

T=3 T=4 T=1 T=2


NACK NACK NACK NACK

NACK

Network

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Megbízható csoportcímzés: hierarchikus visszajelzés-vezérlés


Az előző módszer lokális hálózatban működik hatékonyan. Az
átméretezhetőség javításához a lokális hálózatokból építsünk fát; az
üzenetek a fában felfelé, a NACK üzenetek felfelé utaznak.
Probléma: a fát dinamikusan kell építeni, a meglévő hálózatok
átkonfigurálása nehéz lehet.
Sender
(Long-haul) connection
S Local-area network
Coordinator

C
C

R
Receiver Root

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 18 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Megbízható csoportcímzés: elemi csoportcímzés

A folyamatok számon tartják, hogy kik a csoport tagjai: nézet (view).


Egy üzenetet csak akkor kézbesítenek, ha az eljutott az adott nézet
minden tagjához. Mivel a nézetek időben változhatnak, ez ún.
látszólagos szinkronizáltságot (virtual synchrony) ad.
Reliable multicast by multiple
P1 joins the group point-to-point messages P3 crashes P3 rejoins

P1

P2

P3

P4
G = {P1,P2,P3,P4} G = {P1,P2,P4} G = {P1,P2,P3,P4}

Partial multicast Time


from P3 is discarded

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 19 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Elosztott véglegesítés: 2PC


2PC
Egy elosztott számítás végén szeretnénk elérni, hogy vagy minden
folyamat véglegesítse az eredményt, vagy egyik sem. (atomiság)
Ezt általában kétfázisú véglegesítéssel (two-phase commit, 2PC)
szokás elérni. A számítást az azt kezdeményező kliens
koordinátorként vezérli. Az egyes fázisokban a koordinátor (K) és
egy-egy résztvevő (R) az alábbiak szerint cselekszik.
1/K: Megkérdez mindenkit, enged-e véglegesíteni: vote-request.
1/R: Dönt: igennel (vote-commit) vagy nem (vote-abort), utóbbi
esetben rögtön el is veti a kiszámított értéket.
2/K: Ha minden válasz vote-commit, mindenkinek global-commit
üzenetet küld, különben global-abort üzenetet.
2/R: Végrehajtja a kapott globális utasítást: elmenti a kiszámított
adatokat (eddig csak átmenetileg tárolta őket lokálisan), illetve törli
őket.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 20 / 34
Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Elosztott véglegesítés: 2PC

A vonalak fölött a kapott, alattuk a küldött üzenetek nevei láthatóak.


Vote-request
INIT Vote-abort INIT
Commit Vote-request
Vote-request Vote-commit
WAIT READY
Vote-abort Vote-commit Global-abort Global-commit
Global-abort Global-commit ACK ACK
ABORT COMMIT ABORT COMMIT
(a) (b)

A 2PC koordinátor állapotgépe Egy 2PC résztvevő állapotgépe

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 21 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Elosztott véglegesítés: 2PC, résztvevő összeomlása


Résztvevő összeomlása
Egy résztvevő összeomlott, majd felépült. Mit tegyen adott állapotban?
INIT: A résztvevő nem is tudott a véglegesítésről, döntés: ABORT.
ABORT: Az eredmények törlendők. Az állapot marad ABORT.
COMMIT: Az eredmények elmentendők. Az állapot marad COMMIT.
READY: A résztvevő a koordinátor 2/K döntésére vár, amit megkérdez
tőle, vagy a koordinátor összeomlása esetén a többi résztvevőtől. Azok
vagy már tudnak róla (ABORT vagy COMMIT), vagy még INIT állapotban
vannak (ekkor ABORT mellett dönthetnek). Ha mindegyik résztvevő
READY állapotban van, akkor megoldható a helyzet, azonban...

A 2PC protokoll blokkolódhat


Ha a koordinátor és legalább egy résztvevő összeomlott, és a többi résztvevő
a READY állapotban van, akkor a protokoll beragad, ugyanis nem ismert, hogy
a kiesett résztvevő kapott-e az összeomlása előtt valamilyen utasítást a
koordinátortól. Ez szerencsére szinte sohasem fordul elő a gyakorlatban.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 22 / 34
Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Elosztott véglegesítés: 3PC


3PC
1/K és 1/R: Mint korábban: megkezdődik a szavazás (vote-request), és a
résztvevők válaszolnak (vote-commit vagy vote-abort)
2/K: Ha van vote-abort) szavazat, minden résztvevőnek global-abort
üzenetet küld, majd leáll. Ha minden szavazat vote-commit,
prepare-commit üzenetet küld mindenkinek.
2/R: global-abort esetén leáll; prepare-commit üzenetre ready-commit
üzenettel válaszol.
3/K: Összegyűjti a prepare-commit üzeneteket; küldi: global-commit.
3/R: Fogadja a global-commit üzenetet, és elmenti az adatokat.

A 3PC protokoll nem blokkolódhat


Mivel a koordinátor és a résztvevők mindig legfeljebb „egy távolságban
vannak” az állapotaikat tekintve, ha mindegyik aktív résztvevő READY
állapotban van, akkor a kiesett résztvevő még nem járhat a COMMIT fázisban.
Megjegyzés: a PRECOMMIT állapotból csak véglegesíteni lehet.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 23 / 34
Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Elosztott véglegesítés: 3PC

Vote-request
INIT Vote-abort INIT
Commit Vote-request
Vote-request Vote-commit
WAIT READY
Vote-abort Vote-commit Global-abort Prepare-commit
Global-abort Prepare-commit ACK Ready-commit
ABORT PRECOMMIT ABORT PRECOMMIT
Ready-commit Global-commit
Global-commit ACK
COMMIT COMMIT

(a) (b)

A 3PC koordinátor állapotgépe Egy 3PC résztvevő állapotgépe

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 24 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Felépülés
Alapok
Ha hibajelenséget érzékelünk, minél hamarabb hibamentes állapotba
szeretnénk hozni a rendszert.
Előrehaladó felépülés: olyan új állapotba hozzuk a rendszert, ahonnan
az folytathatja a működését
Visszatérő felépülés: egy korábbi érvényes állapotba térünk vissza

Jellemző választás
Visszatérő felépülést alkalmazunk, ehhez ellenőrzőpontokat (checkpoint)
veszünk fel.

Konzisztens állapot szükséges


Az elosztott rendszerek visszaállítását nehezíti, hogy ellenőrzőpontot a
rendszer egy konzisztens állapotára szeretnénk elhelyezni, ennek
megtalálásához pedig a folyamatok együttműködése szükséges.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 25 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Stabil tárolás (stable storage)


Sector has
different value

b c b c b c
a d a d a d
h e h e h e
g f g f g f

Bad
b c b c b c checksum
a d a d a d
h e h e h e
g f g f g f

(a) (b) (c)

Az ellenőrzőpontokat minél megbízhatóbban kell tárolnunk. Tegyük fel, hogy


fizikailag szinte elpusztíthatatlan tárunk van (stable storage), és két másolatot
használunk; mit kell tenni összeomlás után?
Ha mindkét lemez tartalma azonos, minden rendben.
Ha az ellenőrzőösszegek alapján kiderül, melyik a helyes, azt választjuk.
Ha helyesek, de eltérnek, az első lemezt választjuk, mert oda írunk
először.
Ha egyik sem helyes, nehezen eldönthető, melyiket kell választani.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 26 / 34
Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Konzisztens rendszerállapot

A folyamatok pillanatfelvételeket készítenek az állapotukról.


konzisztens metszet: olyan ellenőrzőpont-gyűjtemény, amelyben minden
beérkezett üzenethez a küldési esemény is el van tárolva
felépülési vonal: a lehető legkésőbb készült (legfrissebb) konzisztens metszet

Initial state Recovery line


Checkpoint
P1

Failure

P2

Time
Message sent
from P2 to P1 Inconsistent collection
of checkpoints

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 27 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Dominóeffektus

Vissza kell keresnünk a legutolsó konzisztens metszetet. Ezért minden


folyamatban vissza kell térni egy korábbi ellenőrzőponthoz, ha
„elküldetlen” fogadott üzenetet találunk. Így viszont további üzenetek
válnak nem elküldötté, ami továbbgyűrűző visszagörgetéshez
(cascaded rollback) vezethet.
Initial state Checkpoint
P1

m m Failure

P2

Time

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 28 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Független ellenőrzőpontok készítése


Egy lehetőség, ha mindegyik folyamat egymástól függetlenül készít
ellenőrzőpontokat (independent checkpointing).
Jelölje CP[i](m) a Pi folyamat m-edik ellenőrzőpontját.
Jelölje INT[i](m) a CP[i](m − 1) és CP[i](m) közötti
időintervallumot.
Amikor Pi üzenetet küld a INT[i](m) intervallumban, hozzácsatolja
i és m értékét.
Amikor Pj fogadja az üzenetet a INT[j](n) intervallumban, rögzíti,
függ
hogy új függőség keletkezett: INT[i](m) −→ INT[j](n), és ezt
CP[j](n) készítésekor a stabil tárba menti
Ha Pi -nek vissza kell állítania CP[i](m − 1)-et, akkor Pj -t is vissza
kell görgetni CP[i](m − 1)-ig. A függőségek egy gráfot adnak ki,
ennek a vizsgálatával derül ki, melyik folyamatot pontosan melyik
ellenőrzőpontig kell visszagörgetni, legrosszabb esetben akár a
rendszer kezdőállapotáig.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 29 / 34
Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Koordinált ellenőrzőpontkészítés

A dominóeffektus elkerülése végett most egy koordinátor vezérli az


ellenőrzőpont készítését.
Kétfázisú protokollt használunk:
Az első fázisban a koordinátor minden folyamatot pillanatfelvétel
készítésére szólít fel.
Amikor ezt megkapja egy folyamat, elmenti az állapotát, és ezt
nyugtázza a koordinátor felé. A folyamat továbbá felfüggeszti az
üzenetek küldését.
Amikor a koordinátor minden nyugtát megkapott, minden
folyamatnak engedélyezi az üzenetek küldését.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 30 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Felépülés naplózással

Ahelyett, hogy pillanatfelvételt készítenénk, most megpróbáljuk újra


lejátszani a kommunikációs lépéseket az utolsó ellenőrzőponttól.
Ehhez mindegyik folyamat lokális naplót vezet.
A végrehajtási modellről feltételezzük, hogy szakaszosan
determinisztikus (piecewise deterministic):
Mindegyik folyamat végrehajtását egymás után következő
szakaszok sorozata
Mindegyik szakasz egy nemdeterminisztikus eseménnyel
kezdődik (pl. egy üzenet fogadása, szignál kezelése)
A szakaszon belül a végrehajtás determinisztikus
A naplóba elég a nemdeterminisztikus eseményeket felvenni, a többi
lépés belőlük meghatározható.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 31 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Üzenetek konzisztens naplózása

Q crashes and recovers


P
m1 m1 m2 is never replayed,
so neither will m3
Q
m3 m2 m3
m2
R
Unlogged message Time
Logged message

Úgy szeretnénk naplózni, hogy elkerüljük árva folyamatok kialakulását.


Q folyamat fogadta m1 -et és m2 -t, és elküldte m3 -at.
Tegyük fel, hogy m2 üzenetet se R, se Q nem naplózta
Q összeomlása után a visszajátszás során ekkor senkinek sem
tűnik fel, hogy m2 kimaradt
Mivel Q kihagyta m2 -t, ezért a tőle (lehet, hogy) függő m3 -at sem
küldi el

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 32 / 34


Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Üzenetek konzisztens naplózása


Jelölések
HDR[m]: Az m üzenet fejléce, tartalmazza a küldő és a folyamat
azonosítóját és az üzenet sorszámát.
Egy üzenet stabil, ha a fejléce már biztosan nem veszhet el (pl.
mert stabil tárolóra írták).
COPY[m]: Azok a folyamatok, amelyekhez HDR[m] már megérkezett,
de még nem tárolták el. Ezek a folyamatok képesek HDR[m]
reprodukálására.
DEP[m]: Azok a folyamatok, amelyekhez megérkezett HDR[m’], ahol
m0 okozatilag függ m-től.

Ha C összeomlott folyamatok halmaza, akkor Q 6∈ C árva, ha függ


olyan m üzenettől, amelyet csak az összeomlottak tudnának előállítani:
Q ∈ DEP[m] és COPY[m] ⊆ C.
Ha DEP[m] ⊆ COPY[m], akkor nem lehetnek árva folyamataink.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 33 / 34
Bevezetés Hibatűrés Kommunikáció Csoportkommunikáció Véglegesítés Felépülés

Üzenetek konzisztens naplózása

Pesszimista naplózóprotokoll
Ha m nem stabil, akkor megköveteljük, hogy legfeljebb egy folyamat
függjön tőle: |DEP[m]| ≤ 1.

Implementáció: minden nem-stabil üzenetet stabilizálni kell


továbbküldés előtt.

Optimistista naplózóprotokoll
Tegyük fel, hogy C a hibás folyamatok halmaza. A nem-stabil m
üzenetekre, ha COPY[m] ⊆ C, akkor azt szeretnénk elérni, hogy egy
idő után DEP[m] ⊆ C is teljesüljön.

Implementáció: minden árva folyamatot visszagörgetünk olyan


ellenőrzőpontig, ahol a függőség már nem áll fenn.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 34 / 34


Elosztott rendszerek: Alapelvek és paradigmák
Distributed Systems: Principles and Paradigms

Maarten van Steen1 Kitlei Róbert 2


1 VU Amsterdam, Dept. Computer Science
2 ELTE Informatikai Kar

10. rész: Objektumalapú elosztott rendszerek


2015. május 24.
Tartalomjegyzék

Fejezet
01: Bevezetés
02: Architektúrák
03: Folyamatok
04: Kommunikáció
05: Elnevezési rendszerek
06: Szinkronizáció
07: Konzisztencia & replikáció
08: Hibatűrés
10: Objektumalapú elosztott rendszerek
11: Elosztott fájlrendszerek
12: Elosztott webalapú rendszerek

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 2 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Távoli elosztott objektumok


Objektum: műveleteket és adatokat zár egységbe (enkapszuláció)
A műveleteket metódusok implementálják, ezeket interfészekbe
csoportosítjuk
Az objektumokat csak az interfészükön keresztül érhetik el a kliensek
Az objektumokat objektumszerverek tárolják
A kliensoldali helyettes (proxy) megvalósítja az interfészt
A szerveroldalon a váz (skeleton) kezeli a beérkező kéréseket
Client machine Server machine
Object
Client Server
State
Same
Client interface Method
invokes as object
a method
Skeleton
Interface
invokes
Proxy same method Skeleton
at object
Client OS Server OS

Network
Marshalled invocation
is passed across network

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 3 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Távoli elosztott objektumok


Objektumok létrehozás ideje alapján
Fordítási időben létrejövő objektumok: A helyettest és a vázat a
fordítóprogram készíti el, összeszerkeszti a kliens és a szerver kódjával.
Nem cserélhető le, miután létrejött, és a klienssel/szerverrel azonos a
programozási nyelve.
Futási időben létrejövő objektumok: Tetszőleges nyelven valósítható
meg, de objektumadapterre van szükség a szerveroldalon a
használatához.

Objektumok élettartamuk alapján

Átmeneti (tranziens) objektum: Élettartama csak addig tart, amíg be van


töltve a szerverbe. Ha a szerver kilép, az objektum is megsemmisül.
Tartós (perzisztens) objektum: Az objektum állapotát és kódját lemezre
írjuk, így a szerver kilépése után is megmarad. Ha a szerver nem fut, az
objektum passzív; amikor a szerver elindul, betöltéssel aktivizálható.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 4 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Példa: Enterprise Java Beans (EJB)

Az objektumokat alkalmazásszerverek (pl. GlassFish) tárolják, amelyek


lehetővé teszik az objektumok különböző módokon való elérését.

Container
EJB
EJBEJB
Server

JMS

JNDI

JDBC

RMI
Services

Server kernel

Local OS

Network

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 5 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Példa: Enterprise Java Beans (EJB)

EJB-k fajtái
Stateless session bean: Tranziens objektum, egyszer hívják meg,
miután elvégezte a feladatát, megszűnik. Példa: egy SQL
lekérdezés végrehajtása, és az eredmény átadása a kliensnek.
Stateful session bean: Tranziens objektum, de a klienssel egy
munkameneten (session) keresztül tartja a kapcsolatot, ezalatt
állapotot is tart fenn. Példa: bevásárlókosár.
Entity bean: Perzisztens, állapottal rendelkező objektum, amely
több munkamenetet is ki tud szolgálni. Példa: olyan objektum,
amely az utolsó néhány kapcsolódó kliensről tárol adatokat.
Message-driven bean: Különböző fajta üzenetekre reagálni képes
objektum. A publish/subscribe kommunikációs modell szerint
működik.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 6 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Globe elosztott objektumok


Általában a távoli objektumok nem elosztottak: az állapotukat egy gép
tárolja.
A Globe rendszerben az objektumok fizikailag több gépen
helyezkednek el: elosztott közös objektum (distributed shared object,
DSO).
Distributed shared object

Local object

Process

Network

Interface

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 7 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Globe elosztott objektumok

Az elosztottság
Same interface as implemented
támogatásához belső by semantics subobject
architektúra szükséges,
Control
és célszerű, ha ez subobject
független attól, hogy a
DSO külső felülete Replication Semantics
subobject subobject
milyen szolgáltatásokat
nyújt.
Communication
subobject
A replikációkezelő
alobjektum vezérli, hogy
Communication
hogyan és mikor kell a with other local
objects
lokális szemantikus
alobjektumot meghívni.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 8 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Folyamatok: Objektumszerverek
A rendszer részei a kiszolgálók, a vázak és az adapterek.
A kiszolgálót (servant), amely az objektum működését biztosítja, több
paradigma szerint lehet implementálni:
Függvények gyűjteménye, amelyek adatbázistáblákat, rekordokat
stb. manipulálnak (pl. C vagy COBOL nyelven)
Osztályok (pl. Java vagy C++ nyelven)
A váz (skeleton) a szerveroldali hálózati kapcsolatokat kezeli:
Kicsomagolja a beérkező kéréseket, lokálisan meghívja az
objektumot, becsomagolja és visszaküldi a választ
Az interfész specifikációja alapján hozzák létre
Az objektumadapter feladata objektumok egy csoportjának kezelése:
Elsőként fogadja a kéréseket, és azonosítja a releváns kiszolgálót
Aktivációs házirend (policy) szerint aktiválja a megfelelő vázat
Az adapter generálja az objektumhivatkozásokat
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 9 / 24
10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Folyamatok: Objektumszerverek
Az objektumszerverek vezérlik a tartalmazott objektumok létrehozását.
Server with three objects
Server machine

Object's stub
(skeleton)

Object adapter Object adapter

Request
demultiplexer

Local OS

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 10 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Példa: Ice
Az Ice (Internet Communications Engine) objektumorientált
köztesréteg, szolgáltatásai elérhetőek a legnépszerűbb nyelveken.
Az aktivációs házirend megjelenik a köztesréteg szintjén: az adapter
properties adattagján át lehet módosítani. Ez segíti a rendszer
egyszerű kezelhetőségét.

main(int argc, char* argv[]) {


Ice::Communicator ic = Ice::initialize(argc, argv);
Ice::ObjectAdapter adapter =
ic->createObjectAdapterWithEndPoints("a","tcp -p 2000");
Ice::Object object = new MyObject;

adapter->add(object, objectID);
adapter->activate();

ic->waitForShutdown();
}

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 11 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Kliens csatlakoztatása objektumhoz

Objektumhivatkozás
Ha egy kliens birtokol egy referenciát egy objektumra, képes hozzá
csatlakozni (bind):
A hivatkozás előírja, melyik szerveren, melyik objektumot, milyen
kommunikációs protokoll szerint lehet rajta keresztül elérni
A hivatkozáshoz kód tartozik, ezt a konkrét objektum eléréséhez
felparaméterezve kapjuk a helyettest

Kétfajta csatlakozás
Implicit: Magán a hivatkozott objektumon hívjuk meg a
műveleteket
Explicit: A kliens kódjában a csatlakozás explicit megjelenik

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 12 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Kliens-objektum csatlakozás: implicit/explicit

// implicit // explicit
Distr_object* obj_ref; Distr_object* obj_ref;
obj_ref = ...; Local_object* obj_ptr;
obj_ref->do_something(); obj_ref = ...;
obj_ptr = bind(obj_ref);
obj_ptr->do_something();

A hivatkozás tartalmazhat egy URL-t, ahonnan az implementáció


letölthető
Protokollban rögzíthető, hogyan kell betölteni és példányosítani a letöltött
kódot
A szerver és az objektum ismerete elegendő lehet a távoli metódushívás
megkezdéséhez
Objektumhivatkozások paraméterként is átadhatóak, amik RPC
esetében bonyodalmakat okoznak

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 13 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Távoli metódushívás (Remote Method Invocation,


RMI)
Tegyük fel, hogy a helyettes és a váz rendelkezésre áll a
kliensnél/szervernél.
1 A kliens meghívja a helyettest
2 A helyettes becsomagolja a hívás adatait, és elküldi a szervernek
3 A szerver biztosítja, hogy a hivatkozott objektum aktív:
Külön folyamatot hozhat létre, amely tárolja az objektumot
Betöltheti az objektumot a szerverfolyamatba
...
4 Az objektum váza kicsomagolja a kérést, és a metódus meghívódik
5 Ha paraméterként objektumhivatkozást kaptunk, ezt szintén távoli
metódushívással éri el a szerver; ebben a szerver kliensként vesz részt
6 A választ hasonló úton küldjük vissza, a helyettes kicsomagolja, és
visszatér vele a klienshez
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 24
10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

RMI: Paraméterátadás
Hivatkozás szerinti paraméterátadás: sokkal egyszerűbb, mint RPC
esetén.
A szerver egyszerűen távoli metódushívással éri el az objektumot
Ha már nincsen szüksége rá, megszünteti a csatolást (unbind)
Érték szerinti paraméterátadás: RMI esetén ez kevésbé kényelmes.
Szerializálni kell az objektumot
Az állapotát
A metódusait, vagy hivatkozást olyan helyre, ahol elérhető az
implementációjuk
Amikor a szerver kicsomagolja az objektumot, ezzel másolat
készül az eredetiről
Ez az automatikus másolódás többféle problémát okoz, pl. néha
„túl átlátszó”: könnyen több objektumról készíthetünk másolatot,
mint amennyiről szeretnénk
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 15 / 24
10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

RMI: Paraméterátadás

Machine A Machine B
Local object
Local Remote object
O1 Remote
reference L1 O2
reference R1

Client code with


RMI to server at C
(proxy) New local
reference Copy of O1
Remote
invocation with
L1 and R1 as Copy of R1 to O2
parameters Server code
Machine C (method implementation)

A rendszerszintű objektumhivatkozások általában a szerver címét,


adapterének portját és az objektum lokális azonosítóját tartalmazzák.
Néha ezekhez további információk is járulnak, pl. a kliens és szerver
között használt protokoll (TCP, UDP, SOAP stb.)
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 16 / 24
10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

RMI: Paraméterátadás

Machine A Machine B
Local object
Local Remote object
O1 Remote
reference L1 O2
reference R1

Client code with


RMI to server at C
(proxy) New local
reference Copy of O1
Remote
invocation with
L1 and R1 as Copy of R1 to O2
parameters Server code
Machine C (method implementation)

Mivel a helyettesnek mindenféleképpen ismernie kell a hivatkozáshoz


szükséges adatokat (cím, port, lokális ID), felhasználhatjuk a helyettest
magát mint távoli hivatkozást. Ez különösen előnyös, ha a helyettes
letölthető (pl. a Java esetében igen).
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 24
10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Objektumalapú üzenetküldés
Client application
1. Call by the
application
Client Callback 4. Call by the RTS
proxy interface
3. Response from server
Client
RTS

A kliens az 2. Request to server


üzenetekre várás
közben lehet aktív
vagy passzív. Client application
1. Call by the 4. Call by the
application application
Client Polling
proxy interface
3. Response from server
Client
RTS

2. Request to server

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 18 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Objektumhivatkozások

IIOP1 : távoli objektumhivatkozásokat kezelő protokoll


CORBA2 : Objektumalapú köztesréteg, IIOP-t használ
Az alábbi ábrán a CORBA objektumhivatkozásának szerkezete látható.
Tagged Profile
Interoperable Object Reference (IOR)

Repository Profile
Profile
identifier ID

IIOP Object key Components


Host Port
version

Adapter Object Other server-


identifier identifier specific information

1 Internet Inter-ORB Protocol


2 Common Object Request Broker Architecture
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 19 / 24
10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Objektumhivatkozások

Különböző objektumkezelő rendszerekben a hivatkozások szerkezete


nagymértékben eltérhet.

A rendszerek között átjárók (gateway) biztosíthatják a hivatkozások


konvertálását.

Object server Interoperable (Half) gateway


references

Object system A Object system B

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 20 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Replikáció és konzisztencia

Az objektumok a belépő konzisztencia megvalósításának


természetesen adódó eszközei:
Az adatok egységbe vannak zárva, és szinkronizációs változóval
(zárral) védjük őket
A szinkronizációs változókat soros konzisztencia szerint érjük el
(az értékek beállítása atomi lépés)
Az adatokat kezelő műveletek összessége pont az objektum
interfésze lesz

Replikáció
Mit tegyünk, ha az objektumot replikálni kell? A replikált objektumokon
a műveletek végrehajtásának sorrendjének azonosnak kell lennie.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 21 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Replikált objektumok
Nemcsak a kéréseknek kell sorrendben beérkezniük a
replikátumokhoz; a vonatkozó szálak ütemezésének
determinisztikusnak kell lennie.
Egyszerű megoldás lehetne, ha teljesen sorosítva (egyetlen szálon)
hajtanánk végre a kéréseket, de ez túl költséges.
Computer 1 Computer 2

Object

T11 T21 Deterministic T12 T22


Threads thread scheduling Threads
Thread
scheduler
Totally ordered
requests
Middleware Middleware

Local OS Local OS

Unordered requests Unordered requests

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 22 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Replikált hívások

Aktív replikáció: ha a replikált objektum hívás során maga is meghív


más objektumot, az a kérést többszörörözve kapná meg.

Client replicates Object receives


invocation request the same invocation
B1 three times

A B2 C

All replicas see B3


the same invocation

Replicated object

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 23 / 24


10.1 Architektúra 10.2 Folyamatok 10.3 Kommunikáció 10.4 Elnevezési rendszerek 10.6 Replikáció

Replikált hívások
Megoldás: mind a szerver-, mind a kliensobjektumon válasszunk
koordinátort, és csak a koordinátorok küldhessenek kéréseket és
válaszokat.

Coordinator Coordinator
of object B of object C

Client replicates Result


invocation request
B1 B1
C1 C1

A B2 A B2

C2 C2

B3 B3

Result

(a) (b)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 24 / 24


Elosztott rendszerek: Alapelvek és paradigmák
Distributed Systems: Principles and Paradigms

Maarten van Steen1 Kitlei Róbert 2


1 VU Amsterdam, Dept. Computer Science
2 ELTE Informatikai Kar

11. rész: Elosztott fájlrendszerek


2015. május 24.
Tartalomjegyzék

Fejezet
01: Bevezetés
02: Architektúrák
03: Folyamatok
04: Kommunikáció
05: Elnevezési rendszerek
06: Szinkronizáció
07: Konzisztencia & replikáció
08: Hibatűrés
10: Objektumalapú elosztott rendszerek
11: Elosztott fájlrendszerek
12: Elosztott webalapú rendszerek

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 2 / 15


11.1 Architektúra 11.3 Kommunikáció 11.5 Szinkronizáció 11.6 Konzisztencia és replikáció 11.7 Fault Tolerance

Elosztott fájlrendszerek

Cél: a fájlrendszer átlátszó elérését biztosítani távoli kliensek számára.


1. File moved to client
Client Server Client Server

Old file

New file

Requests from
client to access File stays 2. Accesses are
3. When client is done,
remote file on server done on client
file is returned to

Távoli hozzáférési modell Feltöltés/letöltés modell

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 3 / 15


11.1 Architektúra 11.3 Kommunikáció 11.5 Szinkronizáció 11.6 Konzisztencia és replikáció 11.7 Fault Tolerance

Példa: NFS architektúra


Az NFS (Network File System) elosztott fájlok távoli elérését teszi
lehetővé. Az alkalmazások a helyi VFS (Virtual File System) réteget
érik el, ez biztosítja a távoli elérés átlátszóságát.
Client Server

System call layer System call layer

Virtual file system Virtual file system


(VFS) layer (VFS) layer

Local file Local file


system interface NFS client NFS server system interface

RPC client RPC server


stub stub

Network

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 4 / 15


11.1 Architektúra 11.3 Kommunikáció 11.5 Szinkronizáció 11.6 Konzisztencia és replikáció 11.7 Fault Tolerance

NFS fájlműveletek
Művelet Verzió Leírás
Create v3 Hagyományos fájl létrehozása
Create v4 Nem-hagyományos fájl létrehozása (hagyományos: Open)
Link v3 és v4 Valódi csatolás (hard link) létrehozása fájlra
Symlink v3 Szimbolikus csatolás (soft link, symlink) létrehozása fájlra
Mkdir v3 Alkönyvtár létrehozása
Mknod v3 Különleges fájl létrehozása
Rename v3 és v4 Fájl átnevezése
Remove v3 és v4 Fájl eltávolítása a fájlrendszerből
Rmdir v3 Üres könyvtár eltávolítása
Open v4 Fájl megnyitása
Close v4 Fájl bezárása
Lookup v3 és v4 Fájl megkeresése név szerint
Readdir v3 és v4 Könyvtár tartalmának lekérése
Readlink v3 és v4 Szimbolikus csatolás elérési útvonalának olvasása
Getattr v3 és v4 Fájl tulajdonságainak lekérdezése
Setattr v3 és v4 Egy vagy több tulajdonság írása
Read v3 és v4 Fájl tartalmának olvasása
Write v3 és v4 Fájl adatainak írása
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 5 / 15
11.1 Architektúra 11.3 Kommunikáció 11.5 Szinkronizáció 11.6 Konzisztencia és replikáció 11.7 Fault Tolerance

Fürt (cluster) alapú fájlrendszerek


Nagy fájlrendszerek esetén a kliens-szerver alapú megközelítés nem
elég jó ⇒ a fájlokat csíkokra bontjuk (striping), így a részeiket
párhuzamosan érjük el. Ennek célja a rendszer gyorsítása és
biztonságosabbá tétele.
File block of file a File block of file e

a b c d e
a b c d e
a b c d e

Whole-file distribution

a b a b a b
c e c d c d
d e e

File-striped system

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 6 / 15


11.1 Architektúra 11.3 Kommunikáció 11.5 Szinkronizáció 11.6 Konzisztencia és replikáció 11.7 Fault Tolerance

Példa: Google File System


file name, chunk index
GFS client Master
contact address

Instructions Chunk-server state

Chunk ID, range


Chunk server Chunk server Chunk server
Chunk data
Linux file Linux file Linux file
system system system

A fájlt 64 MB méretű részekre (chunk) bontjuk, és több szerveren


elosztva, replikálva tároljuk.
A központ (master) csak azt tárolja, melyik szerver melyik részek
felelőse ⇒ I/O terhelése alacsony
A szerverek elsődleges másolaton alapuló replikációs protokollt
használnak; a központot ez nem terheli
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 7 / 15
11.1 Architektúra 11.3 Kommunikáció 11.5 Szinkronizáció 11.6 Konzisztencia és replikáció 11.7 Fault Tolerance

RPC fájlrendszerekben
Egy lehetőség távoli fájlrendszerek megvalósítására, ha távoli
eljáráshívások segítségével végezzük a fájlműveleteket.
Ha a távoli gép elérése költséges, alternatív megoldásokra van
szükség, pl. az NFSv4 támogatja több művelet összekombinálását egy
hívásba.
Client Server Client Server
LOOKUP
OPEN
LOOKUP READ

Lookup name Lookup name

Open file
READ
Read file data
Read file data
Time Time

(a) (b)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 8 / 15


11.1 Architektúra 11.3 Kommunikáció 11.5 Szinkronizáció 11.6 Konzisztencia és replikáció 11.7 Fault Tolerance

Példa: RPC a Coda fájlrendszerben

Ha replikált fájlokkal dolgozunk (pl. a Coda kliensei cache-elhetik a


fájlokat), akkor a kérések sorrendjének kikényszerítése ((a) ábra)
túlságosan költséges lehet, mert ha összeomlik egy kliens, akkor csak
hosszú timeout után jöhet a következő.
Client Client

Invalidate Reply Invalidate Reply

Server Server

Invalidate Reply Invalidate Reply

Client Client
Time Time
(a) (b)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 9 / 15


11.1 Architektúra 11.3 Kommunikáció 11.5 Szinkronizáció 11.6 Konzisztencia és replikáció 11.7 Fault Tolerance

A fájlmegosztás szemantikája
Ha egyszerre több kliens is Client machine #1

hozzáférhet egy fájlhoz, a konkurens


a b
írási és olvasási műveletek lehetséges Process
A
végrehajtási sorrendjeit és a kijöhető a b c
eredményeket (összefoglalva: a 1. Read "ab"
2. Write "c"
rendszer szemantikáját) rögzíteni kell.
File server
Original file
Single machine a b

a b
Process
A 3. Read gets "ab"
a b c
Client machine #2

Process
a b
B
Process
B
1. Write "c" 2. Read gets "abc"

(a) (b)
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 10 / 15
11.1 Architektúra 11.3 Kommunikáció 11.5 Szinkronizáció 11.6 Konzisztencia és replikáció 11.7 Fault Tolerance

A fájlmegosztás szemantikája

Sokfajta szemantika jöhet szóba.


Megváltoztathatatlan fájlok: a fájlok tartalmát nem lehet
módosítani létrehozás után; ez a modell csak ritkán használható
UNIX szemantika: az olvasási műveletek mindig a legutolsó írási
művelet eredményét adják ⇒ a fájlból csak egy példányunk lehet
az elosztott rendszerben (az előző (a) ábra)
Tranzakciós szemantika: a rendszer minden fájlra külön biztosít
tranzakciókat
Munkamenet szemantika: onnantól, hogy a kliens megnyitja a fájlt,
odáig, amíg vissza nem írja, az írási és olvasási műveletei csak
saját maga számára látszanak (gyakori választás a
rendszerekben; az előző (b) ábra)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 11 / 15


11.1 Architektúra 11.3 Kommunikáció 11.5 Szinkronizáció 11.6 Konzisztencia és replikáció 11.7 Fault Tolerance

Példa: fájlmegosztás Coda rendszerben


A Coda fájlrendszer munkamenetei tranzakciós szemantikát
valósítanak meg. A megnyitott fájl tartalma átmásolódik a kliensre; ha
más módosítja a fájlt, arról a kliens értesítést kap.
Ha a kliens csak olvas (pl. az ábrán SA ), akkor folytathatja a
működését – úgy tekintjük, hogy a tranzakció, amelyet végez, már
korábban lezárult.
Session S A
Client

Open(RD) File f Invalidate


Close
Server

Close
Open(WR) File f

Client

Time
Session S B

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 12 / 15


11.1 Architektúra 11.3 Kommunikáció 11.5 Szinkronizáció 11.6 Konzisztencia és replikáció 11.7 Fault Tolerance

Konzisztencia és replikáció

A modern elosztott fájlrendszerekben a kliensoldali gyorsítótárazás


szerepe főleg a teljesítmény növelése, a szerveroldali replikáció célja a
hibatűrés biztosítása.

A kliensek tárolhatják a fájlokat (vagy részeket belőlük), és a szerver


kiértesíti őket, ha ezt a jogot visszavonja tőlük ⇒ a szerverek általában
állapotteljesek.
1. Client asks for file
Client Server
2. Server delegates file
Old file

Local copy 3. Server recalls delegation

Updated file
4. Client sends returns file

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 13 / 15


11.1 Architektúra 11.3 Kommunikáció 11.5 Szinkronizáció 11.6 Konzisztencia és replikáció 11.7 Fault Tolerance

Példa: kliensoldali gyorsítótárazás Coda rendszerben

Session S A Session SA
Client A
Open(RD) Close Close
Open(RD)
Invalidate
Server File f (callback break) File f

File f OK (no file transfer)

Open(WR)
Open(WR) Close Close
Client B
Time
Session S B Session S B

A tranzakciós szemantika segítségével a teljesítmény tovább


növelhető.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 15


11.1 Architektúra 11.3 Kommunikáció 11.5 Szinkronizáció 11.6 Konzisztencia és replikáció 11.7 Fault Tolerance

Rendelkezésre állás növelése P2P rendszerekben


Sok P2P alapú, decentralizált fájlrendszer létezik. Ezekben probléma
lehet, ha túl gyorsan változik a tagság (churn), mert kiléphet akár egy
fájlt tartalmazó összes csúcs. Ennek kivédéséhez replikálhatjuk a
fájljainkat (arányát jelölje rrep ).
Másik megközelítés: erasure coding: az F fájlt bontsuk m részre, és
minden szerverre tegyünk n részt, ahol n > m. A replikációs arány
ekkor rec = n/m. Ez az arány általában sokkal kisebb, mint rrep , ha a
rendszerünk változékony.
2.2
rrep
rec 2.0

1.8

1.6

1.4

0.2 0.4 0.6 0.8 1


Node availability
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 15 / 15
Elosztott rendszerek: Alapelvek és paradigmák
Distributed Systems: Principles and Paradigms

Maarten van Steen1 Kitlei Róbert 2


1 VU Amsterdam, Dept. Computer Science
2 ELTE Informatikai Kar

12. rész: Elosztott webalapú rendszerek


2015. május 24.
Tartalomjegyzék

Fejezet
01: Bevezetés
02: Architektúrák
03: Folyamatok
04: Kommunikáció
05: Elnevezési rendszerek
06: Szinkronizáció
07: Konzisztencia & replikáció
08: Hibatűrés
10: Objektumalapú elosztott rendszerek
11: Elosztott fájlrendszerek
12: Elosztott webalapú rendszerek

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 2 / 17


12.1 Architektúra 12.2 Folyamatok 12.6 Konzisztencia és replikáció

Elosztott webalapú rendszerek


A WWW (világháló, World Wide Web) olyan szerverek összessége,
amelyek HTTP protokollon keresztül különféle tartalmakat szolgálnak
ki. A dokumentumokat hiperhivatkozások kapcsolják össze.
Sok dokumentum szövegalapú: szövegfájl, HTML, XML
Egyéb fajták: képek, audio, videó, dokumentum (PDF, PS)
A tartalmak lehetnek a kliensoldalon végrehajthatóak (Javascript)


Jelenleg kb. 1 milliárd Client machine Server machine
2. Server fetches
document from
weboldal létezik, amelyek local file


közül kevesebb mint 200 Browser Web server

millió aktív; egy


felmérés szerint a
OS
szerverek népszerűsége: 3. Response
Apache (40%), IIS (29%),
1. Get document request (HTTP)
nginx (15%), egyéb (16%).

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 3 / 17


12.1 Architektúra 12.2 Folyamatok 12.6 Konzisztencia és replikáció

Többrétegű architektúrák

Már a kezdeti kiszolgálók is gyakran három rétegbe tagozódtak.


3. Start process to fetch document

1. Get request 4. Database interaction


HTTP CGI
request program
6. Return result handler

5. HTML document
created
Web server CGI process Database server

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 4 / 17


12.1 Architektúra 12.2 Folyamatok 12.6 Konzisztencia és replikáció

Webszolgáltatások
Felmerült az is, hogy a felhasználó ↔ weboldal interakció mellett az
oldalak is igénybe vehetnek szolgáltatásokat más oldalakról ⇒ fontos,
hogy a szolgáltatások szabványosak legyenek.
Client machine Server machine
Look up
a service Client Server Publish service
application application

Stub Stub

Communication SOAP Communication


subsystem subsystem

Generate stub Generate stub


from WSDL from WSDL
description description

Servicedescription
Service description(WSDL)
(WSDL)
Service description (WSDL)

Directory service (UDDI)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 5 / 17


12.1 Architektúra 12.2 Folyamatok 12.6 Konzisztencia és replikáció

Webszerverek
A szerver szerkezetét a tartalmak kiszolgálásának menete szabja meg.
A szerverekbe beépülő modulok telepíthetők, amelyek a kiszolgálás
egyes fázisaiban aktivizálódnak.
Module Module Function Module

... ... ...

Link between
function and hook

Hook Hook Hook Hook

Apache core
Functions called per hook

Request Response

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 6 / 17


12.1 Architektúra 12.2 Folyamatok 12.6 Konzisztencia és replikáció

Szerverfürtök
Web Web Web Web
A teljesítmény és a server server server server

rendelkezésre állás
növelésének érdekében a LAN

szerverek sokszor (a Front end handles


Front all incoming requests
felhasználó számára átlátszó end and outgoing responses
módon) többszörözve vannak.
Request Response

A kapcsolattartó (front end) szűk keresztmetszetté válhat, ennek


elkerülésére több lehetőség van.
TCP átadás: Valamilyen metrika alapján kiválasztunk egy
szervert, és a kliens kiszolgálását az a szerver folytatja.
Tartalomérzékeny kéréselosztás (content aware distribution): Lásd
következő oldal.

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 7 / 17


12.1 Architektúra 12.2 Folyamatok 12.6 Konzisztencia és replikáció

Szerverfürtök
Tartalomérzékeny kéréselosztás (content aware distribution): A HTTP
kérés tartalmát is figyelembe vesszük a szerver kiválasztásánál. Ez
megnöveli a kapcsolattartó terhelését, de sok előnye van: segítségével
hatékonyabb lehet a szerveroldali cache-elés, és lehetnek bizonyos
feladatokra dedikált szervereink.
6. Server responses
Web
5. Forward server 3. Hand of
other f
TCP connection
messages Distributor

Other messages
Dis-
Client Switch 4. Inform patcher
Setup request switch
1. Pass setup request Distributor 2. Dispatcher selects
to a distributor server
Web
server

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 8 / 17


12.1 Architektúra 12.2 Folyamatok 12.6 Konzisztencia és replikáció

Webhelyettes
A kimenő kapcsolatok kezelésére webhelyetteseket (web proxy)
telepíthetünk. Ezek cache-elik a kiszolgált tartalmakat; csak akkor
fordulnak a szerverekhez, ha sem náluk, sem a többi helyettesnél
nincsen meg a kért tartalom.

Web
server
3. Forward request
to Web server

1. Look in
local cache

Web 2. Ask neighboring proxy caches Web


Cache proxy proxy Cache

Client Client Client Client Client Client


Web
HTTP Get request proxy Cache

Client Client Client

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 9 / 17


12.1 Architektúra 12.2 Folyamatok 12.6 Konzisztencia és replikáció

Replikáció webkiszolgálókban

A replikáció célja a teljesítmény növelése. A rendszer paraméterei


(hová célszerű a replikátumokat elhelyezni, konzisztencia megkövetelt
erőssége, kérések útvonalválasztása) változóak lehetnek, ezeket
célszerű önszabályozással beállítani.
Uncontrollable parameters (disturbance / noise)

Initial configuration Corrections Observed output


Web hosting system

+/- +/- +/-

Reference input
Replica Consistency Request Metric
placement enforcement routing estimation

Analysis
Adjustment triggers Measured output

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 10 / 17


12.1 Architektúra 12.2 Folyamatok 12.6 Konzisztencia és replikáció

Hirtelen terhelés

A terhelés néha ugrásszerűen megemelkedik (flash crowd, flash mob),


ezt még akkor sem könnyű kezelni, ha az erőforráskezelés dinamikus.

2 days 2 days
(a) (b)

6 days 2.5 days


(c) (d)

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 11 / 17


12.1 Architektúra 12.2 Folyamatok 12.6 Konzisztencia és replikáció

Szerveroldali replikáció

A tartalomkézbesítő hálózatok (Content Delivery Network, CDN) nagy


teljesítményű és rendelkezésre állású elosztott rendszerek,
amelyeknek célja dokumentumok hatékony kiszolgálása.
6. Get embedded documents
CDN (if not already cached)
Cache server

5. Get embedded
documents
Return IP address 7. Embedded documents
client-best server
1. Get base document
CDN DNS 4 Client Origin
server server
2. Document with refs
DNS lookups 3 to embedded documents

Regular
DNS system

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 12 / 17


12.1 Architektúra 12.2 Folyamatok 12.6 Konzisztencia és replikáció

Replikáció webalkalmazásokban
Ha a CDN tárolt adataiban változás következik be, ez először az
eredetszerveren jelenik meg. A változásokat el kell juttatni a CDN
szerverekhez; ennek a célszerű módja a rendszer jellegétől függ.
Teljes replikáció: sok olvasás, kevés írás, összetett lekérdezések
Részleges replikáció: sok olv., kevés írás, egyszerű lekérdezések
Tartalom szerinti gyorsítótárazás: Az adatbázist az edge szerver
módosított, a lekérdezésekhez illeszkedő alakban tárolja helyben,
és feliratkozik a szerveren a frissítésekre. Jól működik
intervallumokra vonatkozó, összetett lekérdezésekre.
Eredmények gyorsítótárazása: Az edge szerver a korábbi
lekérdezések eredményeit tárolja el. Jól működik egyszerű
lekérdezésekre, amelyek egyedi adatokra (nem intervallumokra)
vonatkoznak.
Ha az írások számaránya megnő, akkor a replikáció akár ronthatja is a
rendszer teljesítményét.
Maarten van Steen, Kitlei Róbert Elosztott rendszerek 13 / 17
12.1 Architektúra 12.2 Folyamatok 12.6 Konzisztencia és replikáció

Replikáció webalkalmazásokban: nincsen replikáció

Edge-server side Origin-server side

Client query
Web Web
server server
response

Appl Appl
logic logic

Content-blind Database
cache copy
full/partial data replication

Content-aware full schema replication/ Authoritative


cache query templates database
Schema Schema

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 14 / 17


12.1 Architektúra 12.2 Folyamatok 12.6 Konzisztencia és replikáció

Webalk. replikációja: részleges/teljes replikáció

Edge-server side Origin-server side

Client query
Web Web
server server
response

Appl Appl
logic logic

Content-blind Database
cache copy
full/partial data replication

Content-aware full schema replication/ Authoritative


cache query templates database
Schema Schema

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 15 / 17


12.1 Architektúra 12.2 Folyamatok 12.6 Konzisztencia és replikáció

Webalk. replikációja: tartalom szerinti gyorsítótárazás

Edge-server side Origin-server side

Client query
Web Web
server server
response

Appl Appl
logic logic

Content-blind Database
cache copy
full/partial data replication

Content-aware full schema replication/ Authoritative


cache query templates database
Schema Schema

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 16 / 17


12.1 Architektúra 12.2 Folyamatok 12.6 Konzisztencia és replikáció

Webalk. replikációja: eredmények gyorsítótárazása

Edge-server side Origin-server side

Client query
Web Web
server server
response

Appl Appl
logic logic

Content-blind Database
cache copy
full/partial data replication

Content-aware full schema replication/ Authoritative


cache query templates database
Schema Schema

Maarten van Steen, Kitlei Róbert Elosztott rendszerek 17 / 17

You might also like