Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Mezi hlavní výhody Orleans patří:
- Produktivita vývojářů: Dokonce i pro neodborných programátorů.
- Transparentní škálovatelnost ve výchozím nastavení: Nevyžaduje žádné zvláštní úsilí od vývojáře.
Produktivita vývojářů
Orleans Programovací model zvyšuje produktivitu bez ohledu na úroveň odborných znalostí tím, že poskytuje následující klíčové abstrakce, záruky a systémové služby.
Známé paradigma objektově orientovaného programování (OOP)
Zrna jsou třídy .NET, které implementují deklarovaná rozhraní .NET grain s asynchronními metodami. Zrna se zobrazují jako vzdálené objekty, jejichž metody lze přímo vyvolat. Toto poskytuje známé paradigma OOP tím, že mění volání metod na zprávy, směruje je na správné koncové body, volá metody cílového grainu a transparentně zpracovává selhání a krajní případy.
Jednovláknové provádění zrn
Modul runtime zaručuje, že se úloha nikdy neprovádí na více než jednom vlákně současně. V kombinaci s izolací od jiných zrnek vývojáři nikdy nečelí souběžnosti na úrovni zrnek a nikdy nepotřebují zámky ani jiné synchronizační mechanismy pro řízení přístupu ke sdíleným datům. Tato funkce sama umožňuje vývoj distribuovaných aplikací, a to i pro neodborných programátorů.
Transparentní aktivace
Běhové prostředí aktivuje obilí pouze tehdy, když je k dispozici zpráva pro zpracování. Tím se čistě oddělí vytvoření reference zrna (řízené aplikačním kódem) a fyzická aktivace zrna v paměti (neviditelná pro aplikaci). Podobá se virtuální paměti , ve které se operační systém rozhodne, kdy se mají stránky přenést do paměti a kdy je z paměti vyřadit. Podobně se modul Orleansruntime rozhodne, kdy aktivovat zrnko (převést ho do paměti) a kdy deaktivovat zrnko (vyřazení z paměti). Aplikace má nepřerušený přístup k úplnému "paměťovému prostoru" logicky vytvořených zrn, ať jsou v libovolném okamžiku ve fyzické paměti.
Transparentní aktivace umožňuje dynamické a adaptivní vyrovnávání zatížení prostřednictvím umístění a migrace zrn ve fondu hardwarových prostředků. Tato funkce výrazně zlepšuje tradiční model objektu actor, kdy životnost objektu actor je spravovaná aplikací.
Transparentnost umístění
Referenční objekt zrnka (objekt proxy), který se používá k volání metod zrnka nebo k předání jiným komponentám, obsahuje pouze logickou identitu zrnkového objektu. Modul Orleans runtime transparentně zpracovává překlad logické identity zrnka do fyzického umístění a odpovídajícím způsobem směruje zprávy.
Kód aplikace komunikuje s zrnky, aniž by věděl jejich fyzické umístění. Toto umístění se může v průběhu času měnit kvůli selháním, správě prostředků nebo kvůli deaktivaci částice, když je volána.
Transparentní integrace s trvalým úložištěm
Orleans umožňuje deklarativně mapovat stav z paměti zrnka na trvalé úložiště. Synchronizuje aktualizace, transparentně zaručuje, že volající obdrží výsledky až po úspěšné aktualizaci trvalého stavu. Rozšíření nebo přizpůsobení sady stávajících poskytovatelů trvalého úložiště je jednoduché.
Automatické šíření chyb
Runtime automaticky propaguje neošetřené chyby po řetězci volání sémantikou asynchronního a distribuovaného try/catch. V důsledku toho se chyby v aplikaci neztratí. To umožňuje umístit logiku zpracování chyb na odpovídající místa bez zdlouhavé práce ručního šíření chyb na jednotlivých úrovních.
Transparentní škálovatelnost ve výchozím nastavení
Programovací model Orleans pomáhá vývojářům k úspěšnému škálování aplikací nebo služeb o několik řádů velikosti. Dosahuje toho začleněním osvědčených postupů a vzorů a efektivní implementací funkcí systému nižší úrovně.
Tady je několik klíčových faktorů, které umožňují škálovatelnost a výkon:
Implicitní jemně odstupňované dělení stavu aplikace
Použití zrn jako přímo adresovatelných entit implicitně rozdělí celkový stav aplikace. I když Orleans programovací model nepředepisuje velikost zrnitosti, ve většině případů dává smysl mít poměrně velký počet zrn (miliony nebo více), přičemž každé představuje přirozenou entitu aplikace, například uživatelský účet nebo nákupní objednávku.
Díky tomu, že jednotky jsou individuálně adresovatelné a jejich fyzické umístění je abstrahované běhovým prostředím, Orleans disponuje obrovskou flexibilitou při vyrovnávání zatížení a transparentní a obecné správě hotspotů, aniž by vývojář aplikací musel přemýšlet.
Adaptivní správa prostředků
Zrna při interakci nepředpokládá lokalitu jiných zrn. Vzhledem k této transparentnosti umístění může modul runtime dynamicky spravovat a upravovat přidělování dostupných hardwarových prostředků. Modul runtime toho dosahuje tím, že provede podrobná rozhodnutí o umístění a migraci zrn v výpočetním clusteru v reakci na vzory zatížení a komunikace – bez selhání příchozích požadavků. Vytvořením několika replik konkrétního zrna může modul runtime zvýšit propustnost bez změny kódu aplikace.
Multiplexovaná komunikace
Zrna v Orleans mají logické koncové body a zasílání zpráv mezi nimi je multiplexováno napříč pevnou sadou všesměrových fyzických připojení (sokety TCP). To umožňuje modulu runtime hostovat miliony adresovatelných entit s nízkými režijními náklady na operační systém na jednotlivý grain. Navíc aktivace a deaktivace zrna nevyžaduje náklady na registraci či zrušení registrace fyzického koncového bodu (jako je TCP port nebo HTTP URL) nebo dokonce na uzavření TCP připojení.
Efektivní plánování
Modul runtime naplánuje provádění mnoha zrn s jedním vláknem pomocí fondu vláken .NET, který je vysoce optimalizovaný pro výkon. Pokud je kód grain napsán v neblokujícím, na pokračování založeném stylu (požadavek programovacího modelu Orleans), kód aplikace běží velmi efektivně kooperativním způsobem vícevláknového zpracování bez souběžnosti. To umožňuje systému dosáhnout vysoké propustnosti a spouštět velmi vysoké využití procesoru (až 90%+) s velkou stabilitou.
Skutečnost, že nárůst počtu zrn a zvýšené zatížení nemá za následek další vlákna ani jiné primitiva operačního systému, pomáhá škálovatelnost jednotlivých uzlů a celého systému.
Explicitní asynchronie
Programovací Orleans model vytváří asynchronní povahu distribuovaných aplikací explicitně a vede vývojáře k zápisu neblokujícího asynchronního kódu. V kombinaci s asynchronním zasíláním zpráv a efektivním plánováním to umožňuje velký stupeň distribuovaného paralelismu a celkové propustnosti bez nutnosti explicitního vícevláknového zpracování.