Orleans Výhody

Mezi hlavní výhody Orleans patří:

  • Produktivita vývojářů, i pro neodborných programátorů.
  • Transparentní škálovatelnost ve výchozím nastavení bez zvláštního úsilí od programátora.

Produktivita vývojářů

Orleans Programovací model zvyšuje produktivitu odborníků i neodborných programátorů 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 programátorovi jeví jako vzdálené objekty, jejichž metody lze přímo vyvolat. To poskytuje programátorovi známé paradigma OOP tím, že transformuje volání metod na zprávy, směruje je do správných koncových bodů, vyvolá metody cílového zrnka a řeší selhání a rohové případy transparentně.

Jednovláknové provádění zrn

Modul runtime zaručuje, že se agregační interval nikdy nespustí na více než jednom vlákně najednou. V kombinaci s izolací od jiných zrn se programátor nikdy nestýká souběžnosti na úrovni zrn a nikdy nepotřebuje používat zámky nebo jiné synchronizační mechanismy pro řízení přístupu ke sdíleným datům. Tato funkce sama o sobě umožňuje vývoj distribuovaných aplikací pro neodborných programátorů.

Transparentní aktivace

Modul runtime aktivuje agregační interval pouze v případě, že je k dispozici zpráva, která se má zpracovat. Tím se čistě odděluje pojem vytvoření odkazu na zrnko, které je viditelné a řízené kódem aplikace, a fyzickou aktivaci zrnka v paměti, která je pro aplikaci transparentní. To se podobá virtuální paměti v tom, že se rozhodne, kdy "page out" (deaktivovat) nebo "page in" (aktivovat) agregační interval; Aplikace má nepřerušený přístup k úplnému "paměťovému prostoru" logicky vytvořených zrn, ať už jsou v fyzické paměti v jakémkoli konkrétním okamžiku.

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 je významným vylepšením tradičního modelu objektu actor, ve kterém je životnost objektu actor spravovaná aplikací.

Průhlednost umístění

Referenční informace o zrnitosti (objekt proxy), který programátor používá k vyvolání metod zrnka nebo předání jiným komponentám, obsahuje pouze logickou identitu zrnka. Překlad logické identity agregace do fyzického umístění a odpovídající směrování zpráv se provádí transparentně modulem Orleans runtime.

Kód aplikace komunikuje s zrny a přitom zůstává nepotřebný s jejich fyzickým umístěním, což se může v průběhu času měnit kvůli selháním nebo správě prostředků nebo kvůli deaktivaci agregace v době, kdy je volána.

Transparentní integrace s trvalým úložištěm

Orleans umožňuje deklarativní mapování stavu v paměti agregace 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 dostupných poskytovatelů trvalého úložiště je jednoduché.

Automatické šíření chyb

Modul runtime automaticky rozšíří neošetřené chyby do řetězce volání sémantikou asynchronního a distribuovaného try/catchu. V důsledku toho se chyby neztratí v rámci aplikace. To umožňuje programátoru umístit logiku zpracování chyb na příslušných místech, aniž by zdlouhavá práce ručního šíření chyb na jednotlivých úrovních.

Transparentní škálovatelnost ve výchozím nastavení

Programovací Orleans model je navržený tak, aby programátora provedl cestu pravděpodobného úspěchu při škálování aplikace nebo služby několika řády. To se provádí začleněním osvědčených postupů a vzorů a zajištěním efektivní implementace funkčnosti systému nižší úrovně.

Tady jsou některé klíčové faktory, které umožňují škálovatelnost a výkon:

Implicitní podrobné dělení stavu aplikace

Díky použití zrn jako přímo adresovatelných entit programátor implicitně rozdělí celkový stav své aplikace. Orleans I když programovací model předepisuje, jak velké nebo malé zrno by mělo být, dává ve většině případů smysl mít relativně velký počet zrn – milionů nebo více – s každou entitou, která představuje přirozenou entitu aplikace, jako je uživatelský účet nebo nákupní objednávka.

Díky tomu, že zrnka jsou individuálně adresovatelná a jejich fyzické umístění abstrahované modulem runtime, Orleans má obrovskou flexibilitu při vyrovnávání zatížení a práci s horkými místy transparentně a obecně bez představ od vývojáře aplikací.

Adaptivní správa prostředků

Zrna nepředpokládá lokalitu jiných zrn, protože s nimi pracují. Z důvodu transparentnosti tohoto umístění může modul runtime dynamicky spravovat a upravovat přidělování dostupných hardwarových prostředků. Modul runtime to provede podrobným rozhodováním o umístění a migraci zrn v výpočetním clusteru v reakci na vzorce zatížení a komunikace bez selhání příchozích požadavků. Vytvořením několika replik konkrétního agregace může modul runtime zvýšit propustnost agregace, aniž by došlo ke změnám kódu aplikace.

Multiplexovaná komunikace

Zrna v Orleans logických koncových bodech a mezi nimi je multiplexované napříč pevnou sadou fyzických připojení typu all-to-all (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é agregace. Aktivace a deaktivace agregačního intervalu navíc neúčtují náklady na registraci nebo zrušení registrace fyzického koncového bodu, jako je port TCP nebo adresa URL PROTOKOLU HTTP nebo dokonce uzavření připojení TCP.

Efektivní plánování

Modul runtime plánuje provádění velkého počtu zrn s jedním vláknem pomocí fondu vláken .NET, který je vysoce optimalizovaný pro výkon. S odstupňovaným kódem napsaným v neblokovacím stylu založeném na pokračování (požadavek programovacího Orleans modelu) běží kód aplikace velmi efektivním "kooperativním" vícevláknovým způsobem bez kolize. 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 růst počtu zrn v systému a zvýšení zatížení neznamená další vlákna nebo jiné primitiv operačního systému pomáhá škálovatelnost jednotlivých uzlů a celého systému.

Explicitní asynchrony

Programovací Orleans model vytváří asynchronní povahu distribuované aplikace explicitně a vede programátory 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 explicitního použití vícevláknového zpracování.