Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Elosztott programozás I.C.E.-al C#-ban

Hasonló előadás


Az előadások a következő témára: "Elosztott programozás I.C.E.-al C#-ban"— Előadás másolata:

1 Elosztott programozás I.C.E.-al C#-ban
Hernyák Zoltán 2005 Eszterházy Károly Főiskola Információtechnológiai tsz.

2 Szekvenciális programozás
Programozás ≈ Algoritmus implementálása Algoritmus jellemzője: egyértelmű! Így a kapott program egy egyszálú, ún. szekvenciális program. 2 2

3 Szekvenciális programozás
Szekvenciális programozás előnyei: Nagyon sok algoritmus létezik ezen stílusra Ezen algoritmusok „egyszerűek” Könnyű őket implementálni A kész programot egyszerű elindítani A futó programot könnyű debug-olni A futó programot könnyű leállítani A program elvileg mindig ugyanúgy működik A programra „egyszerű” helyességet bizonyítani 3

4 Szekvenciális programozás
Szekvenciális programozás hátrányai: Hatékonysági kérdések merülnek fel: Az adott gépen kell minden erőforrásnak lennie Memória Processzor Háttértár ( ezek nem minden határon túl fejleszthetőek ) Nem tudja kihasználni a többprocesszoros rendszerek előnyeit sem 4

5 Többszálú programozás
Továbbra is egyetlen gépen belül vagyunk Kiegészül 2 utasítással (1) új szál indítása ( START ) (2) szál befejezésének megvárása ( JOIN ) MEGOSZTOTT VÁLTOZÓK 5

6 Többszálú programozás
A két szál ugyanazon számítógép által van futtatva: A szálak elérik ugyanazon memóriaterületeket Ez jó: a plusz szál a a számítás eredményét el tudja helyezni egy megadott memóriaterületen, ahol a fő szál majd meg tudja találni Ez rossz: közös változókat használnak, amelyek használatát szinkronizálni kell 6

7 Többszálú programozás
Közös memóriaterületek hozzáférésének szinkronizálása a := sin(x) / cos(x) x := x + 1 ... lock(x) { x = x+1; } ... lock(x) { a = sin(x) / cos(x); } 7

8 Elosztott programozás
Ha … A számítási folyamat programjai különböző hardware elemeken futnak Nincs közös memória -> nem kell lock-olni Így mentesülünk a lehetséges programozási hibáktól A teljesítményt könnyű fokozni újabb gépek beállításával Ezek egyszerű, olcsó, 1 processzoros gépek 8

9 Elosztott programozás
A különböző hardware elemeken futó programok egymással hálózaton keresztül tartják a kapcsolatot adatokat cserélnek a feladatokhoz szükséges információkat küldik át részeredményeket küldenek át „hol tartasz” jellegű információkat küldenek át a végén általában egyik gép begyűjti a részered- ményeket, összesíti, és befejezi a számítást 9

10 Elosztott programozás
Kliens adatok Szerver A szolgáltatást igénybe veszi adatok A szolgáltatást nyújtja 10

11 Elosztott programozás
Szinkron kommunikáció: a hívó oldal megvárja a kommunikációs üzenet (adat) nyugtázását (ez gyakran a számítás eredményét jelenti) Aszinkron kommunikáció: a hívó oldal nem vár, fut tovább (ameddig csak lehet), majd általában egy ponton bevárja a választ. Busy waiting: a várakozás közben egy ciklusban folyamatosan ellenőrzi, hogy a válasz megérkezett-e már (terheli a helyi processzort) 11

12 Elosztott programozás
szekvenciális futási idő Speed-up = elosztott futási idő Overhead: nem az algoritmusból eredő plusz idők 12

13 Elosztott programozás
Adatcsere módszerei: Message Passing: üzenetküldő rendszer, csomagok összeállítása, és elküldése. A fogadó oldalon egy puffer fogadja és tárolja az üzeneteket, és a kliens program ebből „ válogathat ”. Általában nem típus-biztos, a csomag belseje tetszőleges mennyiségű és típusú adatot tartalmazhat, melyet a kliens programnak meg kell értenie. Jellemzően aszinkron: a küldő elküldi az üzenetet, és „elfeledkezik” róla. 13

14 Elosztott programozás
Adatcsere módszerei: Remote Procedure Call:a kliens program ismeri a másik oldalon egy függvény nevét és paraméterezését, és egyszerűen meghívja azt átadván az aktuális paramétereket. A függvény visszatérési értéke pedig a válasz. Általában típus-biztos, a fordítóprogram a távoli eljáráshívás paraméterezését a szokásos módon ellenőrzi. Lehet szinkron: a küldő oldal „megvárja” a függvény lefutását a túloldalon. Lehet aszinkron: a küldő oldal fut tovább, majd egy ponton „bevárja” a visszatérési értéket. 14

15 interface lekérdezés, egyeztetés
Elosztott programozás Szerver Kliens fv. megvalósítása: fv. meghívása: bool Primszam_e(int x) { .. számítás ... ... } bool b = Primszam_e(10); bool Primszam_e(int x) { hálózaton ‘x’ átküldése várakozás eredmény visszaadása } interface lekérdezés, egyeztetés 15

16 Interoperábilis, típus-biztos, de lassú
Elosztott programozás – WEB service WEB Szerver Kliens Web Service: Tetszőleges U.I. : [WebMethod] bool Primszam_e(int x) { .. számítás ... ... } bool b = Primszam_e(10); Generált kód: bool Primszam_e(int x) { hálózaton ‘x’ átküldése várakozás eredmény visszaadása } HTTP, SOAP, XML Interoperábilis, típus-biztos, de lassú 16

17 A két alkalmazás között azonos DLL kell!
Elosztott programozás – Remoting Szerver Kliens Remote Service: Tetszőleges U.I. : bool Primszam_e(int x) { .. számítás ... } void Main() port nyitása fv regisztrálása várakozás … bool b = Primszam_e(10); Proxy kód: DLL értesíteni a futtatót hogy a Primszam_e() fv melyik szerveren fut DLL TCP/IP A két alkalmazás között azonos DLL kell! 17

18 http://www.zeroc.com the home of ICE

19 A szerver interface-t egy nyelvfüggetlen leírással
Elosztott programozás – I.C.E. Szerver Kliens Skeleton kód: bool b = Primszam_e(10); generálva van a SLICE leírásból Proxy kód: generálva van a SLICE leírásból bool Primszam_e(int x) { ... } I.C.E. kommunikációs DLL I.C.E. kommunikációs DLL TCP/IP A szerver interface-t egy nyelvfüggetlen leírással kell rögzíteni: SLICE 19

20 Ice-E for Mobile and Embedded Devices
SLICE file Printer.ICE C# module Demo { interface Printer void printString(string s); }; JAVA C++ Python V.B. PHP Win 98 SE Win ME Win 2000 Win XP Linux on x86 Solaris 9 on SPARC HP-UX on PA-RISC AIX 5.2 on Power MacOS X 10.3.x Ice-E for Mobile and Embedded Devices 20

21 SLICE típusok Type Range of Mapped Type Size of Mapped Type
bool false or true ≥ 1bit byte −128 − ≥ 8 bits 0−255 short −215 to 215−1 ≥ 16 bits int −231 to 231−1 ≥ 32 bits long −263 to 263−1 ≥ 64 bits float IEEE single-precision ≥ 32 bits double IEEE double-precision ≥ 64 bits string All Unicode characters, Variable-length excluding the character with all bits zero. 21

22 SLICE egyéb lehetőségek
enum, structure, sequence, dictionary exception , interface operation nonmutating- nem változtat állapotot idempotent - többször is meghívható nincs overloading SSL, TCP, UDP Batch üzemű üzenetküldés Saját thread ütemezés 22

23 Name = MyObjectAdapter
ICE működési struktúra ICE COMMUNICATOR Object Adapter Name = MyObjectAdapter EndPoint = -h –p 12002 ThreadPool.Size = 10 Object Adapter Object Adapter name = MATH Object name = SQLDB Object Object Object 23

24 slice2cs Printer.ice SLICE egyéb lehetőségek Printer.ICE module Demo {
interface Printer void printString(string s); }; slice2cs Printer.ice 24

25 Szerver oldali leprogramozás
Szerver oldali megvalósítás using System; public class PrinterI : Demo.Printer { public override void printString (string s, Ice.Current current) Console.WriteLine(s); } 25

26 Szerver oldali leprogramozás
Szerver oldali főprogram-részlet: Szerver oldali megvalósítás public static void Main (string[] args) { Ice.Communicator ic = Ice.Util.initialize ( ref args ); Ice.ObjectAdapter adapter = ic.createObjectAdapterWithEndpoints ( „MainAdapter", "default -p 9000"); Ice.Object obj = new PrinterI(); adapter.add( obj, Ice.Util.stringToIdentity("SimplePrinter")); adapter.activate(); ic.waitForShutdown(); } 26

27 Szerver oldali leprogramozás
Kliens oldali felhasználás: Szerver oldali megvalósítás public static void Main (string[] args) { Ice.Communicator ic = Ice.Util.initialize ( ref args ); Ice.ObjectPrx obj = ic.stringToProxy ( "SimplePrinter:default –h p 9000" ); PrinterPrx printer=PrinterPrxHelper.checkedCast(obj); printer.printString("Hello World!"); } 27

28 Sebesség-összehasonlítás ( ICE – TAO )
Batched Oneway Latency Ice TAO Difference Linux 7.73 µs µs 1609% Windows XP 16.78 µs 78.47 µs 368% Text over Slow Connections ( 56 Kb / sec ) Ice TAO Difference Message Size 6.9 kb 7.6 kb 10% Transfer Time 1.02 s 1.12 s Text over Slow Connections with Ice Compression Ice TAO Difference Message Size 3.2 kb 7.6 kb 138% Transfer Time 0.47 s 1.12 s 135% 28

29 Elosztott programozás I.C.E.-al C#-ban
Köszönöm a figyelmet… Hernyák Zoltán 2005 Eszterházy Károly Főiskola Információtechnológiai tsz. 29


Letölteni ppt "Elosztott programozás I.C.E.-al C#-ban"

Hasonló előadás


Google Hirdetések