250 likes | 323 Vues
Addig nyújtózkodj, ameddig a felhőd ér!. Kőnig Tibor. tibork@ microsoft.com | blogs.msdn.com / tibork-on-ms | twitter.com / tibork. Microsoft Magyarország. Amiről szó lesz. A minta. Rajzfilm helyett…. A Mandelbrot-halmazból származó képek készítése
E N D
Addig nyújtózkodj, ameddig a felhőd ér! Kőnig Tibor tibork@microsoft.com | blogs.msdn.com/tibork-on-ms | twitter.com/tibork Microsoft Magyarország
A Mandelbrot-halmazból származó képek készítése • Film „forgatása” a Mandelbrot-halmazban tett utazásról • Az alkalmazás összetevőinek skálázása • manuálisan • automatikusan, a rendszer valamely jellemzője (pl. a képrajzolási feladatokat tartalmazó várakozási sor) alapján • A feladat • A tavalyi 24 órás programozói verseny feladatára alapozva
A Mandelbrot-halmaz pontjainak kiszámítása // Egy ponthoz tartozó iteráció kiszámítása privatestaticintIterate(Complexpoint, intiterationCount) { Complex z = Complex.Zero; int i = 0; while (z.Magnitude < 4.0 && i < iterationCount) { z = z * z + point; i++; } return i; }
Egy fáziskép megrajzolása • Feladat fogadása várakozási sorból, kép tárolása konténerben Azure Compute Mandelbrot Explorer webes szerepkör Mandelbrot Renderer munkavégző szerepkör Azure Storage renderermessages sor jobs konténer
Adattárolási szolgáltatások • Blob Storage – bináris állományok és leíró adataik • Table Storage – tabuláris adatok • Queue Storage – várakozási sorok • Használat • REST API • Client API (.NET-osztálykönyvtár) • Egyéb osztálykönyvtárak • Felhasznált technológia • Azure Storage
Az Azure Storage programozása(az Azure Storage Sample segédkönyvtárral) // A rendererjobs sor megnyitása, ha kell, létrehozása QueueHelperqueueHelper = newQueueHelper("Storage", true); queueHelper.CreateQueue("renderermessages"); // A jobs konténer megnyitása, ha kell, létrehozása BlobHelperblobHelper = newBlobHelper("Storage", true); blobHelper.CreateContainer("jobs"); while (true) { // Ha van üzenet, beolvasása a sorból CloudQueueMessagemessage = null; if (queueHelper.GetMessage("renderermessages", outmessage)) … }
Fázisképek sorozatának elkészítése • Várakozási sorban érkező feladat további feladatokra bontása Azure Compute Mandelbrot Explorer webes szerepkör Mandelbrot Dispatcher munkavégző szerepkör Mandelbrot Renderer munkavégző szerepkör Azure Storage dispatchermessages sor renderermessages sor jobs konténer moviedata tábla
Film elkészítése • Fázisképek figyelése, filmkészítési utasítás kiadása Azure Compute Mandelbrot Explorer webes szerepkör Mandelbrot Dispatcher munkavégző szerepkör Mandelbrot Producer munkavégző szerepkör Azure Storage producermessages sor jobs konténer moviedata tábla
Alkalmazás manuális skálázása • Szerepkör példányszámának növelése a többitől függetlenül Fabric Fabric Controller Service Management API Azure Compute Mandelbrot Explorer webes szerepkör Mandelbrot Dispatcher munkavégző szerepkör Mandelbrot Renderer munkavégző szerepkör Mandelbrot Producer munkavégző szerepkör Mandelbrot Manager munkavégző szerepkör Azure Storage managermessages sor operationdata tábla
Cél: a Windows Azure portálon, interaktív módon elvégezhető műveletek elérhetővé tétele programból is • tárolási fiókok, hosztolt szolgáltatások, tanúsítványok és más objektumok kezelése • Használat • REST API (nincs menedzselt osztálykönyvtár) • azonosítás tanúsítványok segítségével • Felhasznált technológia • Service Management API
Service Management API - REST Szolgáltatás konfigurációjának megváltoztatása: https://management.core.windows.net/<subscription- id>/services/hostedservices/<service- name>/deploymentslots/<deployment-slot>/?comp=config A kérés törzse: <?xml version="1.0" encoding="utf-8"?> <ChangeConfiguration xmlns="http://schemas.microsoft.com/windowsazure"> <Configuration> base-64-encoded-configuration-file </Configuration> </ChangeConfiguration>
Service Management API - Kód // A hosztolt szolgáltatás megadott környezetébe (slot) telepített // alkalmazás adatainak kiolvasása publicstringGetDeployment(stringHostedService, stringSlot) { stringrequestID = ""; stringresponse = SendServiceManagementRequest( String.Format( "https://management.core.windows.net/{0}/" + "services/hostedservices/{1}/deploymentslots/{2}", SubscriptionID, HostedService, Slot), "GET", Certificate, "2009-10-01", "application/xml", null, outrequestID); returnresponse; }
Alkalmazás automatikus skálázása • Szerepkör példányszámának növelése pl. a sor hossza alapján Fabric Fabric Controller Service Management API Azure Compute Mandelbrot Explorer webes szerepkör Mandelbrot Dispatcher munkavégző szerepkör Mandelbrot Renderer munkavégző szerepkör Mandelbrot Producer munkavégző szerepkör Mandelbrot Manager munkavégző szerepkör Azure Storage renderermessages sor operationdata tábla
A teljes alkalmazás • Virtuális gépek, tárolási megoldások, platformszolgáltatások Fabric Fabric Controller Service Management API Azure Compute Mandelbrot Explorer webes szerepkör Mandelbrot Dispatcher munkavégző szerepkör Mandelbrot Renderer munkavégző szerepkör Mandelbrot Producer munkavégző szerepkör Mandelbrot Manager munkavégző szerepkör Azure Storage dispatchermessages sor renderermessages sor producermessages sor managermessages sor jobs konténer moviedata tábla operationdata tábla
Aszinkron, hibatűrő kommunikáció a szerepkörök között • várakozási sorok • Szabványos felületen (REST) elérhető, gyakorlatilag korlátlan mértékben skálázható erőforrások • virtuális gépek • adattárolás • Hibrid megoldások • együttműködés a „föld” és a „felhő” között • Összefoglalás • A megfelelően felépített alkalmazás rugalmasan skálázható