890 likes | 1.08k Views
Fejlett Programoz ási Technikák 2. 15 /1. Bilicki Vilmos. bilickiv@inf.u-szeged.hu http://www.inf.u-szeged.hu/~bilickiv Árpád tér 49.-es szoba 3408-as mellék. Követelmények, tudnivalók. Vizsga év végén (80 pont) Gyakorlat: (40 pont) Egy dolgozat (10 pont) Egy projekt (20 pont)
E N D
Bilicki Vilmos • bilickiv@inf.u-szeged.hu • http://www.inf.u-szeged.hu/~bilickiv • Árpád tér 49.-es szoba • 3408-as mellék
Követelmények, tudnivalók • Vizsga év végén (80 pont) • Gyakorlat: (40 pont) • Egy dolgozat (10 pont) • Egy projekt (20 pont) • Egy zárthelyi (10 pont) • Órai aktivitás 10 pont • Weboldal : http://www.inf.u-szeged.hu/~bilickiv/fpt2 http://www.inf.u-szeged.hu/oktatas/kurzusleirasok/fejlprog2.xml
Hirdetmény • Imagine Cup (http://www.msportal.hu/portal/(xlnvlpfvnhurnfvx2srjmmve)/DesktopDefault.aspx?tabindex=12&tabid=26) • Szoftvertervezés • Office tervezés kategória • Algoritmus • Rövidfilm • Technológiai üzleti terv • Animáció • IT • Web fejlesztés • Vizuális játék
A tantárgy célkitűzése • Modern technológiák bemutatása, megismerése • Menedzselt kódra épülő rendszerek • Webes rendszerek • Elosztott rendszerek • Skálázható, robosztus rendszerek
Tematika I. • 1,2 Előadás • Elosztott Rendszerek • Alapok • Technológiák: HTTP, HTML, XML, XSD, XPATH, XSLT • 3. Előadás menedzselt kód (Java 1.5) • JVM • JAR • 4. Előadás • Java hibakezelés • Java szálkezelés • 5. Előadás • Ant • JUnit • CVS • Log4J • JMeter • Eclipse
Tematika II. • 6. Előadás • Java Swing • 7. Előadás • Java Applet • JDBC • 8. Előadás • Java és a biztonság • 9. Előadás • Java Servlet • 10. Előadás • Java Server Pages • 11. Előadás • Middleware problémák és megoldások • Perzisztencia, Távoli objektum elérés, … • Corba
Tematika III. • 12. Előadás • J2EE, EJB • 13. Előadás • Webes szolgáltatások • 14. Előadás • .NET • 15. Előadás • ADO.NET
A Mai előadás tartalma • Elosztott rendszerek • Mik az elosztott rendszerek? • Példák elosztott rendszerekre • Elosztott rendszerek követelményei • Átlátszóság az elosztott rendszerekben • HTTP • Felépítése • Biztonság • HTTPS • HTML • Funkciója • Megjelenítés • Események • Adatbevitel • XML • Funkciója • Kapcsolatos technológiák
Irodalom a tantárgyhoz • Könyvek: • Wolfgang Emmerich: Engineering Distributed Objects • A. Ebenhart, S. Fisher: Java Tools • Ed Roman: Mastering Enterprise Java Beans • Don Box: Essential XML Web: • http://java.sun.com • http://www.theserverside.com/ • http://www.theserverside.net/
Irodalom a mai előadáshoz: • A. Ebenhart, S. Fisher: Java Tools • Wolfgang Emmerich: Engineering Distributed Objects • Jegyzet a weblapon (egyre elavultabb…) • http://www.zalamedia.hu/~kami/html40/diploma-vazlat.html
Számítógép rendszerek • 1950 katonai célok • Titkosítás, visszafejtés • 1960 kötegelt feldolgozás • Nem interaktív • 1970 Mainframe • Időosztásos interaktív • 1980 PC • Az asztali gép felé irányult a figyelem • Elosztott információ feldolgozás (Autonóm rendszerek) • 1990 Vállalati információs rendszerek (Enterprise Computing) • Megbízható adatátvitel (sávszélesség, válaszidő) • Központi fájl, Adatbázis, Alkalmazás szerverek + PC-k • Elosztott rendszerek
Elosztott rendszer • Az elosztott rendszer ismérvei: • Skálázhatóság – a rendszer tetszőlegesen bővíthető • Nyílt rendszer – képes más rendszerekkel is együttműködni, a régi elemekkel is • Heterogén – Több különböző alkalmazás, platform is képes az együttműködésre • Erőforrás megosztás • Hibatűrés – kritikus komponensek többszörözése, … • … • Definíció: • Autonóm gépek olyan halmaza melyek számítógép hálózattal vannak összekötve . Minden gép szoftver komponenseket futtat és egy olyan középréteget üzemeltet mely lehetővé teszi a különböző komponensek koordinálását úgy, hogy a felhasználók számára a rendszer egy gépnek tűnik. (Áttetszőség) • Leslie Lamport: • „Olyan rendszer melyben a munkám olyan komponensek hibája érinti melyek létezéséről nem is tudtam”
HOST HOST Komponens … Komponens Komponens … Komponens Hálózati Operációs Rendszer Középréteg (Middleware) Node E Hálózati Operációs Rendszer Hardver Node F Hardver Node D Node A Node C Node B Elosztott rendszer User
Elosztott vs. Központosított rendszer • Központosított rendszer • A komponensek nem autonómok • Homogén technológia (hatékony kommunikáció) • Több felhasználó is használhatja egy időben • Akár egy processzben és egy szálban futó alkalmazás • Egy központi vezérlés, hiba pont (ritka a kommunikációs hiba) • Elosztott rendszer • Autonóm komponensek, nincs mester komponens • Heterogén technológia • Komponensek között eloszlik a terhelés, a komponensekhez exkluzív használati jog is tartozhat • Párhuzamos végrehajtás (komponensenként vagy ezeken belül is) • Több meghibásodási pont
Példák: • SZTE – LanStore: Elosztott tárolás (.NET C#) • 200 gép x 20 Gbyte = 4 TByte • Párhuzamos hozzáférés -> nagyságrendekkel gyorsabb mint egy fájlszerver • Pl.: Video On Demand • Video-on-Demand (Java, C++) • Hong Kong • 90000 előfizető • Repülő konfiguráció menedzsment (meglévő komponensekből építette fel) • Boeing • Minden gép minden alkatrésze, javításnál azonnal szükség van az adott dokumentumokra • 1,5 milliárd alkatrész évente (3 millió gépenként) • A MainFrame nem bírta a terhelést • Google • Több mint 10000 mezei PC • Napi 200 millió keresés • Több 100 millió weboldal (tömörítve, …) • Nagyfokú redundancia
Skálázhatóság • Tervezés (pl. elektromos rendszer) • A terhelés mértéke: Online user, tranzakció szám, … • Elektromos rendszer – elvárjuk az állandó szolgáltatást • A szolgáltatás minőség fontos! • A szoftver rendszereket is így kellene tervezni… • Skálázható egy rendszer ha a ma még nem látható terhelésnövekedéseket is elviseli • Internet, e-business, B2C, …
Nyílt rendszer • Könnyen bővíthető, módosítható • A tervezésnél szabványos technológiák, megoldások (pl.: tervezési minták,…) • Jól definiált interfészek • Jól definiált szolgáltatások • Együtt fejlődik az intézménnyel • Az egyszer befektetett idő/pénz ne menjen veszendőbe
Heterogén rendszer • Külön-külön vásárolt komponensek • Hardver • OS • Hálózati protokoll • Programozási nyelv • Gyakran autonóm egységeknek kell együttműködniük • Heterogén komponensek integrálása
Erőforrás hozzáférés és megosztás • Erőforrás • Hardver • Szoftver • Adat • Többen használhatnak egy erőforrást • Biztonsági megfontolások • Ki mikor, hogyan férhet hozzá • Elosztott objektum foglalja magába az erőforrást • N rétegű alkalmazás
Hibatűrés • Merevlemez 2-5 év a várható élettartam • Hibatűrő az a rendszer amely hibák fellépése esetén is folytatni tudja működését • Ideális esetben emberi beavatkozás nélkül (pl.: EJB tároló, cluster) • Redundáns elemek, replikáció
Az elosztott rendszer tulajdonságai • ANSA 1989, ISO/IEC 1996 International Standard on Open Distributed Processing • Helyszín áttetszőség • Hozzáférés áttetszőség • Replikáció áttetszőség • Hiba áttetszőség • Párhuzamosság áttetszőség • Migráció áttetszőség • Feladat áttetszőség • Teljesítmény áttetszőség • Skálázás áttetszőség • Programozási nyelv áttetszőség • Az elosztott rendszer mérőléce (middleware mérőléce) (Áttetszőség – Transparency)
Hozzáférés áttetszőség • A helyi és a távoli hozzáférés interfész azonos • Pl.: NFS – a helyi gépen lévő erőforrásokat ugyanúgy érem el mint a távoliakat (azonosak a függvényhívások is) • Az ilyen komponensekre épülő komponensek könnyen áthelyezhetőek egyik helyről a másikra
Helyszín áttetszőség • Nem kell tudnunk a komponens pontos helyét, van egy olyan mechanizmus mellyel megtaláljuk és megcímezzük • Pl.: NFS – a felhasználóknak nem kell tudniuk a szerver IP címét
Migráció áttetszőség • A komponensek tetszés szerint mozgathatóak a hostok között anélkül, hogy a felhasználó ezt érzékelné és módosítanunk kellene más komponenseket • Függ helyszín és hozzáférés áttetszőségtől
Replikáció áttetszőség • Replikák • Adott komponens több helyen is megtalálható • Replikáció • Ha állapottal rendelkezik akkor ezt szinkronizálni kell minden példányban • A felhasználó és a többi komponens nem veszi észre, hogy másolatot használ • Nagyobb teljesítmény, hibatűrés
Párhuzamosság áttetszőség • Az egyes komponensek egy időben használhatják a megosztott erőforrásokat anélkül, hogy ez fennakadást okozna. • A felhasználó nem veszi észre, hogy más ia használja a rendszert • Jó esetben sem az alkalmazás tervező sem a felhasználó sem foglalkozik vele (a middleware feladata)
Teljesítmény áttetszőség • Sem az alkalmazás fejlesztő sem a felhasználó nem tudja hogyan éri el a rendszer az adott teljesítményt • Middleware dolga (ma még kevés tudja autómatikusan) • Replikáció • Load Balancing
Hiba áttetszőség • Sem a felhasználó sem az alkalmazás fejlesztő nem tudja hogyan kezeli a rendszer a hibákat • Nem veszik észre a hibákat • Pl.: bank automata
Internet, Web alkalmazások architektúrája • N rétegű architektúrák • Vékony kliens • Biztonsági megfontolások • Skálázhatóság
Két rétegű • Kliens - megjelenítés • Minden más egy szerveren
3 rétegű • Kliens – megjelenítés • Webszerver • Adatbázis szerver (Címtár, …)
4 rétegű • Kliens – megjelenítés • Web szerver • Középréteg (Middleware) • Adatbázis szerverek (Fájl, Adatbázis, Címtár, …)
Középréteg • Tranzakció orientált középréteg • Tranzakciók integrálása több különböző adatbázis-kezelőn, adatbázison át • IBM CISC, Tuxedo • Üzenet orientált középréteg • Megbízható üzenetküldés • IBM MQSeries, MSMQ • Objektum Orientált középréteg • Corba • RMI • COM • …
HTTP(Hyper Text Transfer Protocol) • Kliens-szerver modell • Állapotmentes • Alkalmazásszintű protokol • Megbízható átviteli közegre épül • Új fogalmak: • Webszerver • Proxy szerver
HTTP 1.1 • Kapcsolatorientált • Részletes proxy specifikáció • 80-as port • URI (Universal Resource Identifier)
URI • Rfc2396 • <protokol>:<protokol specifikus rész> • <protokol>://<azonosítás><elérési-útvonal>?<Lekérdezés> • US-ASCII • Más karaterek: % URL • HTTP specifikus: URL (Universal Resource Locator) • http : // host [ : ] [ port ] [ abszolút-útvonal [ ? query ] ] • ftp://felhasznalo:jelszo@amadea.inf.u-szeged.hu • Relatív útvonal
HTTP üzenetek • Kérés (request) • Válasz (response) • kezdő sor • fejléc sorok • üres sor • az üzenet tartalma
Kérés üzenetek(kezdő sor) • GET • OPTIONS • POST • HEAD • TRACE
GET GET / HTTP/1.1 Host: sirius.cab.u-szeged.hu HTTP/1.1 200 OK Date: Thu, 13 Dec 2001 16:55:37 GMT Server: Apache/1.3.20 (Unix) PHP/4.0.6 Transfer-Encoding: chunked Content-Type: text/html 8a0 <HTML> <HEAD> <TITLE>Irinyi Kabinet</TITLE> </HEAD> <body... </ADDRESS> </BODY> </HTML>
OPTIONS OPTIONS /cgi-bin/szotarE HTTP/1.1 Host: sirius.cab.u-szeged.hu HTTP/1.1 200 OK Date: Mon, 17 Dec 2001 10:05:54 GMT Server: Apache/1.3.20 (Unix) PHP/4.0.6 Content-Length: 0 Allow: GET, HEAD, POST, OPTIONS, TRACE
HEAD HEAD /teszt/ HTTP/1.1 Host: wilma.cab.u-szeged.hu HTTP/1.1 200 OK Server: Microsoft-IIS/5.0 Cache-Control: max-age=86400 Expires: Tue, 18 Dec 2001 14:47:33 GMT Content-Location: http://wilma.cab.u-szeged.hu/teszt/index.html Date: Mon, 17 Dec 2001 14:47:33 GMT Content-Type: text/html Accept-Ranges: bytes Last-Modified: Mon, 17 Dec 2001 14:03:32 GMT ETag: "fc50cd9c387c11:88e" Content-Length: 83
POST POST /teszt/ HTTP/1.1 Host: wiliam.u-szeged.hu adat: research
TRACE TRACE / HTTP/1.1 Host: wiliam.u-szeged.hu Adat: research HTTP/1.1 200 OK Server: Netscape-Enterprise/6.0 Date: Sun, 23 Dec 2001 12:49:45 GMT Content-type: message/http Content-length: 62 TRACE / HTTP/1.1 Host: wiliam.u-szeged.hu Adat: research
Egyéb • CONNECT • DELETE • PUT
Fejléc mezők • Host • If-Modified-Since • User-Agent • Adat: research …
Válasz üzenet • Állapot mező • Válasz fejléc mezők • Erőforrás • erőforrás fejléc • erőforrás tartalom
Állapot mezők • 1xx – Információs • 2xx – Siker • 3xx – Átirányítás • 4xx – Kliens oldali hiba • 5xx – Szerver oldali hiba
Válasz fejléc • WWW-Authenticate • Age • Cache-Control • Expires • Content-Type
Biztonság • HTTP -> magas rendelkezésre állás Más szempontok: • adatok titkossága • adatok megbízhatósága • egyének azonosítása Azonosítási eljárások • Basic Authentication • Digest Authentication