Komponens alapú szoftverfejlesztés 10. előadás. Elosztott alkalmazások architektúrái. Elosztott alkalmazások architektúrái

Hasonló dokumentumok
Webes alkalmazások fejlesztése 11. előadás. Alkalmazások felhőben Giachetta Roberto

Webes alkalmazások fejlesztése 11. előadás. Alkalmazások felhőben. Alkalmazások felhőben Számítástechnikai felhő

Osztott alkalmazások fejlesztési technológiái Áttekintés

Webes alkalmazások fejlesztése 8. előadás. Webszolgáltatások megvalósítása (ASP.NET WebAPI)

S04-2 Elosztott alkalmazások készítése

MMK-Informatikai projekt ellenőr képzés 4

SOA modell: Ez az interfész definiálja az elérhető adatokat, és megadja, hogy hogyan lehet azokhoz hozzáférni.

GENERÁCIÓS ADATBÁZISOK A BIG DATA KÜLÖNBÖZŐ TERÜLETEIN

Számítógépes Hálózatok Felhasználói réteg DNS, , http, P2P

Felhasználói réteg. Számítógépes Hálózatok Domain Name System (DNS) DNS. Domain Name System

Szolgáltatás Orientált Architektúra és több felhasználós adatbázis használata OKF keretein belül. Beke Dániel

Webes alkalmazások fejlesztése 1. előadás. Webes alkalmazások és biztonságuk

API tervezése mobil környezetbe. gyakorlat

JAVA webes alkalmazások

SOAP komponensek Delphiben

MapReduce paradigma a CAP-tétel kontextusában. Adatb haladóknak. Balassi Márton Adatbázisok haladóknak 2012.

Elosztott rendszer architektúrák

NIIF Központi Elosztott Szolgáltatói Platform

TELJESÍTÉNYMÉRÉS FELHŐ ALAPÚ KÖRNYEZETBEN AZURE CLOUD ANALÍZIS

Osztott rendszerek (Distributed. systems) Bevezetés. Tartalom. Ficsor Lajos. Miskolci Egyetem Általános Informatikai Tanszék

Kommunikáció. Távoli eljáráshívás. RPC kommunikáció menete DCE RPC (1) RPC - paraméterátadás. 3. előadás Protokollok. 2. rész

The Power To Develop. i Develop

Felhő alapú hálózatok Konténerek orkesztrálása Simon Csaba. Budapesti Műszaki és Gazdaságtudományi Egyetem

Hálózati réteg. WSN topológia. Útvonalválasztás.

RDBMS fejlesztési irányok. Ferris Wheel (óriáskerék) Jim Gray törvényei. Elosztott adatbázisok problémái. Elosztott adatbázisok

Adatbázis rendszerek I

Bevezetés az SAP világába. 5. Kommunikációs és integrációs technológiák

Magic xpi 4.0 vadonatúj Architektúrája Gigaspaces alapokon

Számítógépes Hálózatok 2012

Kommunikáció. 3. előadás

A J2EE fejlesztési si platform (application. model) 1.4 platform. Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

webalkalmazások fejlesztése elosztott alapon

Osztott rendszerek (Distributed

MTA Cloud Use cases MTA Cloud workshop. Hernáth Szabolcs MTA WIGNER FK

A Java EE 5 plattform

Folyamatmodellezés és eszközei. Budapesti Műszaki és Gazdaságtudományi Egyetem Méréstechnika és Információs Rendszerek Tanszék

IBM felhő menedzsment

Multimédiás adatbázisok

Flash és PHP kommunikáció. Web Konferencia 2007 Ferencz Tamás Jasmin Media Group Kft

Riak. Pronounced REE-ahk. Elosztott adattároló eszköz. Molnár Péter

Elosztott adatbázis-kezelő formális elemzése

NAGY TELJESÍTM. Szerzők Dévai. István Automatizálási. és s Alkalmazott Informatikai Tanszék


UNIX: folyamatok kommunikációja

Kommunikáció. Folyamatok közötti kommunikáció. Minden elosztott rendszer alapja

Felhasználói réteg. Számítógépes Hálózatok Domain Name System (DNS) (RFC 821/822) Domain Name System

Osztott Objektumarchitektúrák

Osztott rendszerek. Krizsán Zoltán 1 Ficsór Lajos 1. Webalkalmazások fejlesztése tananyag. Miskolci Egyetem. Bevezetés A múlt - történelem A jelen

Párhuzamosítás adatbáziskezelő rendszerekben

Operációs rendszerek. Az X Window rendszer

NETinv. Új generációs informatikai és kommunikációs megoldások

Mobil szolgáltatások és alkalmazások fejlesztése

Hadoop és használata az LPDS cloud-on

Webes alkalmazások fejlesztése 12. fejezet. Szolgáltatás alapú kommunikáció (WCF) Giachetta Roberto. Eötvös Loránd Tudományegyetem Informatikai Kar

Számítógépes munkakörnyezet II. Szoftver

Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem

INTERNET. internetwork röviden Internet /hálózatok hálózata/ 2010/2011. őszi félév

Eseménykezelés. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor.

Oracle Containers for Java - j2ee alkalmazás szerver funkciók. Molnár Balázs Oracle Hungary

Párhuzamos és Grid rendszerek

Mobil Peer-to-peer rendszerek

Microsoft SQL Server telepítése

Komponens alapú programozás Bevezetés

Webszolgáltatások (WS)

Újdonságok Nexus Platformon

A számítógép hálózatok kialakulásának okai:

Fejlesztés, működtetés, felügyelet Hatékony infrastruktúra IBM szoftverekkel

Dr. Schuster György október 30.

Webes alkalmazások fejlesztése 1. előadás. Webes alkalmazások és biztonságuk. Cserép Máté

Crawler.NET: Komponensalapú elosztott keretrendszer a web bejárására

Elosztott rendszerek

Valós idejű megoldások: Realtime ODS és Database In-Memory tapasztalatok

Csoportos üzenetszórás optimalizálása klaszter rendszerekben

DCOM Áttekintés. Miskolci Egyetem Általános Informatikai Tanszék. Ficsor Lajos DCOM /1

Non-stop hozzáférés az üzleti információkhoz bárhol, bármikor és bármilyen eszközzel

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

EGY NAGYBÓL HÚSZ KISEBB

WebSphere Adapters. 6. változat 2. alváltozat. WebSphere Adapter for SAP Software felhasználói kézikönyv 6. változat 2. kiadás

Párhuzamos programozási platformok

Folyamatok. 6. előadás

Debreceni Egyetem Informatikai Kar A WINDOWS SERVER 2003 HÁLÓZATI MEGOLDÁSAI

Adatkapcsolati réteg 1

Webes alkalmazások fejlesztése Bevezetés. Célkitűzés, tematika, követelmények. A.NET Core keretrendszer

Adatbázis rendszerek 7. előadás State of the art

Élet az SQL-en túl: Az adatfeldolgozás legújabb trendjei. Földi Tamás

Megfelelés a PSD2 szabályozásnak, RTS ajánlásokkal Electra openapi

Erőforrás gazdálkodás a bevetésirányításban

Models are not right or wrong; they are more or less useful.

Rendszermodernizációs lehetőségek a HANA-val Poszeidon. Groma István PhD SDA DMS Zrt.

Everything Over Ethernet

A számítógép-hálózat egy olyan speciális rendszer, amely a számítógépek egymás közötti kommunikációját biztosítja.

S01-7 Komponens alapú szoftverfejlesztés 1

Grafikus keretrendszer komponensalapú webalkalmazások fejlesztéséhez

Integrációs mellékhatások és gyógymódok a felhőben. Géczy Viktor Üzletfejlesztési igazgató

Titkosítás NetWare környezetben

Windows Server 2012: a felhő OS

30 MB INFORMATIKAI PROJEKTELLENŐR

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

Infor PM10 Üzleti intelligencia megoldás

10: Peer-To-Peer Hálózatok I. HálózatokII, 2007

Átírás:

Eötvös Loránd Tudományegyetem Informatikai Kar Komponens alapú szoftverfejlesztés 10. előadás Elosztott alkalmazások architektúrái Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto Elosztott rendszerek Elosztott rendszerek (distributed systems) olyan szoftverrendszerek, amelyek komponensei a hálózaton fizikailag elkülönítve futnak, és egymással kommunikálnak az egyes komponensek a végrehajtáshoz külön processzort és memóriát használnak (szemben a párhuzamos rendszerekkel, amelyek megosztott memóriát használnak) a komponensek végrehajtási helyei a csomópontok (node), amelyek megosztják egymással az erőforrásokat fontos tényezői a párhuzamos feladatvégzés és a skálázhatóság (a szoftver áteresztőképességének növelése) a kommunikáció általában kérés-válasz alapú ELTE IK, Komponens alapú szoftverfejlesztés 10:2 Elosztott rendszerek Elosztott rendszerekkel szemben három elvárás lehetséges: 1. következetesség (consistency): minden csomópont ugyanazon adatokat látja ugyanabban az időben 2. rendelkezésre állás (availability): a rendszernek minden időben válaszolnia kell az összes beérkező kérésre 3. részleges hibatűrés (partition tolerance): a rendszer tovább üzemel akkor is, ha a rendszer egyes részei (partíciói) leállnak, vagy megszakad velük a kapcsolat A CAP tétel szerint egy elosztott rendszer ebből csak kettőt tud teljesíteni, ennek megfelelően kompromisszumokat kell kötni a képességek terén ELTE IK, Komponens alapú szoftverfejlesztés 10:3 Kommunikáció Elosztott rendszerekben a kommunikáció történhet eljáráshívási alapon (procedural): a kezdeményezi a szolgáltatás végrehajtását és bevárja annak eredményét a mindig ismeri a szolgáltatás helyét és hívásnak módját oldalon megjelenik a szolgáltatás interfésze, és egyben egy megvalósítása, amelynek feladata a kérés csomagolása (marshalling), és továbbítása a szerver fogadja és kicsomagolja (unmarshalling) az üzenetet, majd feldolgozza, és ugyanilyen módon visszaküldi a választ általában távoli eljáráshívással (remote procedure call, RPC) valósul meg ELTE IK, Komponens alapú szoftverfejlesztés 10:4 Kommunikáció pl. webszolgáltatás, CORBA, Remote Method Invocation (RMI, Java) üzenet-alapon (message-based): a egy üzenetet továbbít, és egy válaszüzenetben várja az eredményeket nem igényli a közvetlen kommunikációt, az üzenet továbbítható nem igényli az azonnali feldolgozást, lehetővé teszi az üzenetek sorba állítását (message queuing) az üzenetsor (message queue) általában kategóriák szerint csoportosítja az üzeneteeket, így a feliratkozók válogathatnak közülük (publish-and-subscribe) pl.: Apache ActiveMQ, MSMQ, RabbitMQ Skálázhatóság Hardverek vertikálisan és horizontálisan skálázhatóak Szoftverek skálázhatósága 3 irányba történhet: klónozás: az alkalmazás több példányát futtatjuk, amelyek így megosztják a feladatokat, ám mindegyik egy közös adatforrást használ terheléselosztás (load balancing) szükséges a feladatok irányításához biztosítani kell a közös adatok megfelelő elérését (pl. termelőfogyasztó), gyorsítótárak használatát a teljesítménynövelés érdekében pl. -szerver architektúra ELTE IK, Komponens alapú szoftverfejlesztés 10:5 ELTE IK, Komponens alapú szoftverfejlesztés 10:6 1

Skálázhatóság funkcionális dekompozíció: az egyes szolgáltatásokat más alkalmazások biztosítják emiatt csak az adatok egy részét kezelik, ám egy feladatkörön belül az összes adatot látják pl.: mikroszolgáltatások, csövek és szűrők architektúra adatparticionálás: az alkalmazás több példánya fut, ám mindegyik csak egy részét dolgozza fel az adatoknak hatékony adathozzáférést tesz lehetővé (mindenki a lokális adatokon dolgozik), ehhez azonban megfelelő adatelosztási stratégia szükséges pl.: peer-to-peer, megosztásmentes architektúra A -szerver architektúra A -szerver (client-server) architektúra két szerepet különböztet meg: a biztosítja a felhasználóval történő interakciót tartalmazhatja csupán a felületet (vékony ), illetve az egyszerű szolgáltatások megvalósítását (vastag ) nem ismeri a többi t, nem lép vele kapcsolatba a szerver biztosítja a szolgáltatásokat és az adatok tárolását nem ismeri a hozzá csatlakozó eket, azok állapotát a eknek ismernie kell a szerver elérhetőségét általában erősebb hardver-erőforrásokra támaszkodik (centralized computing) ELTE IK, Komponens alapú szoftverfejlesztés 10:7 ELTE IK, Komponens alapú szoftverfejlesztés 10:8 A -szerver architektúra terhelésmegosztással A -szerver architektúrában minden szerver ugyanazt a funkcionalitást biztosítja, így a skálázhatóság terheléselosztás (load balancing) segítségével történik az egyes ekhez rendelünk különböző szervereket minden a terheléselosztóhoz csatlakozik, amely ismeri az összes szerver elérhetőségét szerver A -szerver architektúra terhelésmegosztással A terhelésmegosztás történhet: ütemezett módon, egy címlistából választva (round-robin DNS), vagy delegált módon (DNS delegation) oldalon véletlenszerűsítve (a címek átadásával a nek), vagy szerver oldalon (így a nem ismeri a tényleges címeket) a szerver oldali elosztás esetén garantálni kell a magas rendelkezésre állást telheléselosztás adattár Amennyiben a szerver oldal kezeli a kapcsolat állapotát: a t mindig egy dedikált szerverhez kell kapcsolnunk, vagy szerver meg kell osztani az állapotot a szerverek között (shared database) ELTE IK, Komponens alapú szoftverfejlesztés 10:9 ELTE IK, Komponens alapú szoftverfejlesztés 9:10 A webszolgáltatás A webszolgáltatás A webszolgáltatás (Web Service, WS) egy egységes szabványt ad elosztott hálózati alkalmazások közötti kommunikációra keresés UDDI regisztrálás a szolgáltatásokat úgynevezett webmetódusok (web method/operation) formájában érhetőek el távoli eljáráshívás segítségével futtat HTTP protokollon keresztül SOAP kérés kommunikációs módszere a SOAP (Simple Object Access Protocol), egy XML alapú adatközlési csatorna HTTP webszolgáltatás szerver a webszolgáltatáshoz tartozó szerződést WSDL (Web Services Description Language) formában adhatjuk meg SOAP válasz szolgáltatások nyilvántartására szolgál a UDDI (Universal Description Discovery and Integration) WSDL szerződés ELTE IK, Komponens alapú szoftverfejlesztés 10:11 ELTE IK, Komponens alapú szoftverfejlesztés 10:12 2

A REST architektúra A REST (REpresentational State Transfer) egy szoftverarchitektúra elsősorban elosztott hipermédia rendszerek számára elsősorban HTTP alapon kommunikál alapvető HTTP utasítások (GET, POST, PUT, DELETE, ) segítségével, webes erőforrások (web resource) elérése céljából egy egységes, egyszerű interfészt vár el, amely biztosítja az erőforrások egyértelmű azonosítását (URL) az erőforrások leírását metaadatok segítségével az erőforrások manipulációjának lehetőségét a komponensek közötti átlátható kommunikációt a támogató szoftverek a RESTful alkalmazások A REST architektúra A REST alapú rendszereknek feltételei: -szerver architektúra, mozgatható komponensekkel állapotmentes, környezetfüggetlen kommunikáció: a állapota nem tárolódik a szerveren az üzenet között, így minden üzenetnek kell tartalmaznia a feldolgozásához szükséges valamennyi információt gyorsítótárazhatóság: a eltárolhatja a feldolgozás eredményét (amennyiben az üzenet erre lehetőséget ad) rétegződés: közvetítők helyezhetők a és a szerver közé (gyorsítótárak, terheléselosztók), amelyek a ek számára nem felfedhetőek ELTE IK, Komponens alapú szoftverfejlesztés 10:13 ELTE IK, Komponens alapú szoftverfejlesztés 10:14 Mikroszolgáltatások architektúra A szoftver szolgáltatási szempontjából felbontva a monolitikus felépítést kapjuk a mikroszolgáltatások architektúrát (microservices architecture) a szolgáltatásokat (vagy szolgáltatások csoportját) külön programegységek biztosítják, amelyek egymástól függetlenül hajtják végre tevékenységeiket ennek megfelelően a szolgáltatások külön fejleszthetőek, tesztelhetőek, és könnyen telepíthető új szolgáltatás a szolgáltatások a megoldás érdekében korlátozottan kommunikálhatnak egymással (szabványos csatornán), esetleg közös adatforrásokkal Mikroszolgáltatások architektúra a szoftver könnyen skálázható, mivel az egyes szolgáltatásokat külön platform láthatja el szoftver felhasználó szolgáltatás 1 szolgáltatás 2 szolgáltatás 3 a szolgáltatások rendelkezhetnek közös hozzáférési ponttal ELTE IK, Komponens alapú szoftverfejlesztés 10:15 ELTE IK, Komponens alapú szoftverfejlesztés 10:16 Mikroszolgáltatások architektúra Előnyei: a komponensek jól leválaszthatóak, külön fejleszthetők, telepíthetőek a szolgáltatások mentén jól skálázható Hátrányai: a szolgáltatások közötti felelősségátadás nagyban megnehezedik a szolgáltatások közötti kommunikáció korlátozott, problémákhoz vezethet (és magasabb fokú hálózati igénybevételhez) Megosztásmentes architektúra A megosztásmentes architektúrában (shared nothing architecture, SN) az egyes csomópontok egymástól függetlenek, és önfenntartóak nincs központi erőforrás, az adatok elosztásra, vagy lemásolásra kerülnek az egyes csomópontok között (sharding), így lineárisan skálázható, és nincs meghibásodási pontja a módosítások is a helyi csomópontra íródnak vissza, ezért nem támogatja a központosított adatkezelést általában biztosítja az egyes csomópontok leállásmentes frissítését a rendszer része lehet egy vezérlő, amely megfelelően elirányítja, elosztja az adatokat, ekkor azonban lehetőséget kell adni más csomópontoknak is a vezérlő szerepének átvételét ELTE IK, Komponens alapú szoftverfejlesztés 10:17 ELTE IK, Komponens alapú szoftverfejlesztés 11:18 3

Csövek és szűrők Munkafolyamatok elosztott végrehajtását teszi lehetővé a csövek és szűrők (pipes and filters) architektúráját akkor alkalmazható, ha a munkafolyamat felbontható egymástól független lépésekre, amelyet az egyes komponensek (filter) végrehajtanak, az eredményt pedig továbbítják a megfelelő csatornán (pipe) filter A filter B filter C adattár Csövek és szűrők Előnyei: a részfeladatok egymástól függetlenül skálázhatóak egy szűrő példány kiesése esetén a feladat átirányítható más példányhoz Hátrányai: nem alkalmazható, ha a folyamat nem lineáris, vagy a részfeladatok között összefüggések vannak elveszett, vagy sérült üzenet esetén a teljes folyamat leállhat amennyiben a részfeladat elvégzését nem megfelelő időpillanatban jelzik, duplikált munkavégzés alakulhat ki filter A filter D ELTE IK, Komponens alapú szoftverfejlesztés 10:19 ELTE IK, Komponens alapú szoftverfejlesztés 10:20 A MapReduce programozási modell a csövek és szűrök architektúra egy egyszerű megvalósítása, amely két részre bontja a feldolgozás a Map lépés a részadatok feldolgozását végzi, a Reduce lépést a különböző Map által adott eredmények összefuttatását végzi számos Map, illetve Reduce lépés futhat párhuzamosan, amelyek különböző adatokkal dolgoznak az adatok kulcs/érték párok formájában kezeli, amelyek beazonosítják a megfelelő Map és Reduce folyamatokat, amelyekhez az adatokat el kell juttatni a végrehajtás nagyban múlik a két folyamat párhuzamosításának kihasználásán Egy teljes munkafolyamat a MapReduce modellben 5 lépésből áll: 1. Prepare: felosztja a beérkező adatokat azonos méretű blokkokra, mindegyikhez egy kulcsot rendel 2. Map: a kapott kulcs/érték párokat párhuzamosan transzformája (szűri, rendezi, ) köztes eredményekké 3. Shuffle: a köztes eredményeket átrendezi, csoportosítja kulcs szerint és újabb kulccsal látja el 4. Reduce: a kapott kulcs/érték párokat párhuzamosan kiértékeli 5. Produce: az eredményeket begyűjti és összesíti ELTE IK, Komponens alapú szoftverfejlesztés 11:21 ELTE IK, Komponens alapú szoftverfejlesztés 11:22 bemenő adat vezérlés kimenő adat Pl. szeretnénk megszámolni dokumentumok gyűjteményében minden szónak az előfordulási számát: 1. felosztjuk a dokumentumokat, minden blokk egy dokumentumot kap (a kulcs a dokumentum neve) blokk 1 Map 1 2. a dokumentumban minden megtalált szóra egy 1-es értéket adunk (a kulcs a szó, az érték 1), ez a Map lépés blokk 2 Map 2 Reduce 1 eredmény 1 3. csoportosítunk a szó szerint, minden szóhoz egészek egy sorozata tartozik blokk 2 Map 2 Reduce m eredmény m 4. összeadjuk a sorozat értékeit, így megkapjuk minden szóra az összes előfordulás számát, ez a Reduce lépés blokk n Map n 5. az eredményeket összesítjük (szavanként) ELTE IK, Komponens alapú szoftverfejlesztés 11:23 ELTE IK, Komponens alapú szoftverfejlesztés 11:24 4

Map(String key, String value): // key: dokumentum neve // value: dokumentum tartalma foreach (String word in value): EmitIntermediate(w, "1"); // a kulcs a szó, az érték 1 lesz [hello world] [hello you] [hello you there] hello: 3 world: 1 you: 2 there: 1 Reduce(String key, Enumerable<String> values): // key: a szó // values: a szóra kapott értékek sorozata int result = 0; foreach (String v in values): result += AsInt(v); Emit(AsString(result)); // szövegesen adjuk meg <1, hello you> <2, hello world> <3, hello you there> Map <hello, 1 1 1> <world, 1> <you, 1 1> <there, 1> Reduce <hello, 3> <world, 1> <you, 2> <there, 1> ELTE IK, Komponens alapú szoftverfejlesztés 11:25 ELTE IK, Komponens alapú szoftverfejlesztés 11:26 Hadoop Az Apache Hadoop egy, a megosztás-mentes architektúrára és a MapReduce programozási modellre épülő szoftver keretrendszer 3 fő modulból alkotja: Hadoop MapReduce: adatfeldolgozó Hadoop Distributed File System (HDFS): elosztott fájlrendszer, amely felel az adatok elosztásáért az egyes nodeok között Hadoop YARN: erőforrás kezelő és folyamat ütemező Java-ban íródott, de alkalmas bármilyen nyelvű, MapReduce alapú alkalmazás futtatására (Hadoop Streaming, REST API) számos rendszer alapjául szolgál (Pig, Hive, HBase, Spark, ) Hadoop A Hadoop nagyon jól skálázható, akár több ezer node alkotta rendszert is felépíthetünk A HDFS fájlrendszer célja a Hadoop architektúra kiszolgálása, ügyelve a rendelkezésre állásra hatékonyan kezeli a nagy, homogén szerkezetű fájlokat, amelyeket azonos méretű blokkokra bont (pl. 256 MB) olvasásra optimalizál (write once, read many times) képes kezelni az egyes gépek kiesését, az egyes fájlrendszer csomópontok (DataNode) folyamatosan jelzik jelenlétüket replikálja a tartalmat (alapértelmezetten 3 példány), így kerüli el az adatvesztést ELTE IK, Komponens alapú szoftverfejlesztés 11:27 ELTE IK, Komponens alapú szoftverfejlesztés 11:28 Hadoop DataNode 1 vezérlés (NameNode) DataNode 2 DataNode 3 DataNode 4 DataNode 3n blokk 1 blokk 1 blokk 1 replikáció bemenő fájl blokk 2 elosztás blokk n A P2P architektúra A peer-to-peer (P2P) egy olyan decentralizált architektúra, amelyben a rendszert azonos alkalmazások alkotják, amelyek elosztják a feladatokat egymás között minden csomópont külön felel a feldolgozásért, az adattárolásért, a kommunikációért (beleértve a többi csomópont elérését) a központi adattárolással szemben az információkat elosztottan kezeli a hálózat tagjai között a tényleges hálózatot legtöbb esetben elfedi egy virtuális fedőhálózat (overlay network), amelynek feladata a csomópontok kezelése (indexelés, felfedezés, irányítás) független a fizikai hálózattól, az ismeretségi reláció definiálja ELTE IK, Komponens alapú szoftverfejlesztés 11:29 ELTE IK, Komponens alapú szoftverfejlesztés 10:30 5

A P2P architektúra A P2P hálózat lehet: strukturálatlan (pl. Gnutella, Gossip), amelyben nincs rögzített topológia, a csomópontok véletlenszerűen kapcsolódnak egymáshoz minden csomópont ugyanazt a szerepet tölti be, így nagyon rugalmasan módosítható a tényleges felépítés a kéréseket minden (adott pontból elérhető) összes csomópont megkapja, feldolgozza, esetleg továbbítja, ami lassítja a működést (message flooding), és nem garantálja, hogy a kérés sikeres lesz strukturált (pl. Kad), amelyben a csomópont rögzített topológia szerint, általában elosztott hash-tábla alapján épülnek fel A P2P architektúra Előnyei: nagyfokú rendelkezésre állást és hibatűrést tud biztosítani könnyen skálázható, hatékonyan használja a hálózati kapacitást Hátrányai: az egyes csomópontoknak minden funkcionalitást magukban kell tartalmaznia nem biztosít központosított adatkezelést jelentős többletet okozhat feldolgozásban és kommunikációban (pl. hálózat tagjainak lokalizálása) ELTE IK, Komponens alapú szoftverfejlesztés 9:31 ELTE IK, Komponens alapú szoftverfejlesztés 10:32 A P2P architektúra A tisztán peer-to-peer architektúra mellett felépíthetőek hibrid modellek, amelyben a és szerver szerepe megkülönböztethető a szerver egy központi regisztrációja a eknek, amely nyilvántartja a eket, illetve a ek által nyújtott szolgáltatásokat (pl. Napster) több szerver is rendelkezésre állhat, amelyek elosztják a feladatokat, így egy megtalálása több szerver közbeiktatásával történik (pl. Skype) is válthat szerverré a kommunikáció felgyorsítása érdekében a rendszer több forrásból is igénybe vehet részadatokat (pl. BitTorrent) Elosztott hash táblák Az elosztott hash-tábla (distributed hash-table, DHT) egy olyan hálózatelosztási modell, ahol a kérések irányítása hash-tábla alapon működik az adatok kulcs/érték párként tároltak, ahol a kulcs az érték hashfüggvény által generált értéke (pl. SHA-1, amely 160 bites kulcsokat állít elő) a kulcsok alapján azonosítják a csomópontot, ahol az adatot tárolják, ez ideális esetben 1 lépést jelent a hatékonyság érdekében a csomópontok csak a hálózat egy részével állnak kapcsolatban (routing table) általában csomópont esetén log szomszéd ismert, így a kérés célba érkezése maximum log lépésben megtörténik ELTE IK, Komponens alapú szoftverfejlesztés 10:33 ELTE IK, Komponens alapú szoftverfejlesztés 9:34 Elosztott hash táblák esetén ügyelni kell arra, hogy új csomópont felvétele/törlése esetén az adatokat újra el kell osztani (hash-elni) csomópont 5 1) [0 az alapvető hash-függvények (pl. osztómódszer) nem használhatóak, mert az adatok nagyrészét át kell csoportosítani h(d 4 ) csomópont1 h(d 1 ) A konzisztens hash-elés (consistent hashing) egy olyan technika, amely minimális adatmozgatást igényel a hálózat változása esetén a kulcsok tere (keyspace) egy gyűrű (ring), általában a 0 1 intervallumban csomópont 4 adat hash csomóponthoz rendelés a csomópontokat egy véletlenszerű hash alapján helyezzük el csomópont 3 az adatokat a hash értékük a(z óramutató járása szerinti) rákövetkező csomópontban helyezzük el h(d 3 ) h(d 2 ) csomópont 2 ELTE IK, Komponens alapú szoftverfejlesztés 9:35 ELTE IK, Komponens alapú szoftverfejlesztés 9:36 6

A konzisztens hash-elés során amennyiben új csomópontot adunk a hálózathoz, csak a közötte és az őt megelőző csomópont közötti hash értékű adatokat kell áthelyeznünk az új csomópontra, így minimális a mozgatás amennyiben egy csomópont kiesik, az adatok a rákövetkező csomópontra kerülnek Amennyiben kellő számú csomópont van a rendszerben, a véletlenszerű kiosztás miatt az adatok egyenletes eloszlásúak lesznek az adatok replikációjával növelhető a hibatűrés, és javítható az adatok eloszlása pl. a hash-érték eltolása rögzített szöggel (amely nagyobb, mint a csomópontok által bezárt szövegek minimuma) csomópont 4 csomópont 3 csomópont 5 h(d 4 ) 1) [0 h(d 3 ) h(d 2 ) adat hash csomópont1 h(d 1 ) csomópont 2 csomóponthoz rendelés csomópont 6 ELTE IK, Komponens alapú szoftverfejlesztés 9:37 ELTE IK, Komponens alapú szoftverfejlesztés 9:38 Dynamo csomópont 5 1) [0 csomópont1 Az Apache Dynamo egy elosztott hash-táblára épülő kulcs/érték tároló (key-value store), amely a következetességet áldozza fel a nagyobb rendelkezésre állás és hibatűrés érdekében csomópont 4 h (d 1 ) replikáció h(d 1 ) csomóponthoz rendelés csomópont 6 a rendszer felépítése és az adatok elosztása konzisztens hash-elés segítségével történik, replikáció igénybevételével fokú replikáció esetén minden csomópont az őt a gyűrűben követő 1 elérhető csomópontra replikál a csomópontok virtuálisak, és a gyűrűbeli sorrendtől függetlenül vannak fizikai csomópontokon elhelyezve, így biztosítva a hibatűrést h (d 1 ) csomópont 2 a csomópontok változását több lépésben közli a rendszer, véletlenszerű csomópontoknak továbbadva az információt (gossip protocol) ELTE IK, Komponens alapú szoftverfejlesztés 9:39 ELTE IK, Komponens alapú szoftverfejlesztés 9:40 Dynamo az adott csomópontra a műveletek végrehajtási sorrendje változó lehet, így nem garantált a konzisztencia, egyes adatok más állapotban lehetnek a csomópontokon, amely vektor órák (vector clock) segítségével van nyilvántartva minden adat rendelkezik egy órával (verziószámmal), amely állapotváltás során frissül, és ezzel együtt továbbítja az adatot, így megállapítható a legfrissebb változat az adatok korábbi verziói is a rendszerben maradnak a független változtatások miatti verzióütközés esetén külön kell gondoskodni a feloldásról (pl. legfrissebb módosítás érvényesítése) a műveletek (írás és olvasás) akkor tekinthetőek sikeresnek, ha bizonyos számú csomópont teljesíti a kérést (sloppy quorum) Aktor-alapú architektúra Az aktor modell (actor model) egy olyan megosztásmentes architektúra, amelyben egymással kommunikáció aktorok végzik a tevékenységeket, amelyek könnyűsúlyú folyamatok, kevés tevékenységgel gyorsan példányosíthatóak, szüneteltethetőek erőforrásaikat a rendszer központilag kezeli direkt módon, aszinkron üzenet alapon kommunikálnak az üzeneteket üzenetsorokon keresztül fogadják egymás fizikai elhelyezkedését nem ismerik elsősorban számításigényes, és kevéssé adatcentrikus feladatok elvégzését tudják biztosítani ELTE IK, Komponens alapú szoftverfejlesztés 9:41 ELTE IK, Komponens alapú szoftverfejlesztés 11:42 7

Orleans Orleans A Microsoft Orleans egy aktor modellt megvalósító rendszer.net környezetben alapegysége a Grain, amelyek aszinkron metódusokkal ellátott objektumok, egyedi kulccsal élettartamát és futtatási helyét a rendszer felülegyeli (virtuális aktor) a ek a kulcs alapján hivatkoznak az aktorra, és figyelők (observer) segítségével kapják meg a műveletek eredményét végrehajtási környezete a Silo, amely tárolja az aktorokat általában gépenként egy Silo fut, együttesen egy klasztert alkotnak klaszter Silo 1 Silo 2 Grain a Grain b Grain c Grain a ELTE IK, Komponens alapú szoftverfejlesztés 11:43 ELTE IK, Komponens alapú szoftverfejlesztés 11:44 8