Sdílet prostřednictvím


Microsoft Orleans

Orleans:

  • Je multiplatformní architektura pro vytváření robustních a škálovatelných distribuovaných aplikací. Distribuované aplikace se definují jako aplikace, které přesahují více než jeden proces, často přes hranice hardwaru pomocí komunikace mezi dvěma účastníky.
  • Škáluje se z jednoho místního serveru na tisíce distribuovaných a vysoce dostupných aplikací v cloudu.
  • Rozšiřuje známé koncepty a idiomy jazyka C# do prostředí s více servery.
  • Je navržená pro elastické škálování. Když se hostitel připojí ke clusteru, může přijímat nové aktivace. Když hostitel opustí cluster, předchozí aktivace na daném hostiteli se podle potřeby znovu aktivuje na zbývajících hostitelích. Hostitel může opustit cluster kvůli vertikálnímu snížení kapacity nebo selhání počítače. Cluster Orleans je možné škálovat na jednoho hostitele. Stejné vlastnosti, které umožňují elastickou škálovatelnost, umožňují odolnost proti chybám. Cluster automaticky rozpozná a rychle se obnoví ze selhání.
  • Zjednodušuje složitost vývoje distribuovaných aplikací tím, že poskytuje společnou sadu vzorů a rozhraní API.
  • Umožňuje vývojářům, kteří znají vývoj jednoserverových aplikací, přechod na vytváření odolných, škálovatelných cloudových nativních služeb a distribuovaných aplikací.
  • Někdy se nazývá "Distributed .NET".
  • Je zvolená architektura při vytváření aplikací nativních pro cloud.
  • Spustí se kdekoli, kde se podporuje .NET. To zahrnuje hostování v Systémech Linux, Windows a macOS.
  • Aplikace je možné nasadit do kubernetes, virtuálních počítačů a služeb PaaS, jako jsou Aplikace Azure Service a Azure Container Apps.

Model objektu actor

Orleans je založená na modelu objektu actor. Model actor vznikl na počátku 1970s a je nyní základní součástí Orleans. Model objektu actor je programovací model, ve kterém je každý aktér jednoduchý, souběžný neměnný objekt, který zapouzdřuje kus stavu a odpovídající chování. Aktéři vzájemně komunikují výhradně pomocí asynchronních zpráv. Orleans zejména vynalezl abstrakci virtuálního herce , kde existují časově neomezeně.

Poznámka:

Aktéři jsou čistě logické entity, které vždy existují prakticky. Objekt actor nelze explicitně vytvořit ani zničit a jeho virtuální existence není ovlivněna selháním serveru, který ho spustí. Vzhledem k tomu, že aktéři vždy existují, jsou vždy adresovatelné.

Jedná se o nový přístup k vytváření nové generace distribuovaných aplikací pro cloudovou éru. Orleans Programovací model ztěžuje složitost, která je součástí vysoce paralelních distribuovaných aplikací, aniž by omezovala možnosti nebo ukládala omezení pro vývojáře.

Další informace najdete v tématu Orleans: Virtual Actors prostřednictvím microsoft Research. Virtuální objekt actor je reprezentován jako Orleans agregační.

Co jsou zrnka?

Zrno je jedním z několika Orleans primitiv. Z hlediska modelu objektu actor je zrnko virtuálním aktérem. Základním stavebním blokem v libovolné Orleans aplikaci je agregační blok. Zrna jsou entity obsahující uživatelem definovanou identitu, chování a stav. Představte si následující vizuální znázornění agregace:

Agregační interval se skládá ze stabilní identity, chování a stavu.

Identity zrnitosti jsou uživatelem definované klíče, které zrna vždy zpřístupňuje pro vyvolání. Zrna mohou být vyvolána jinými zrny nebo libovolným počtem externích klientů. Každé z nich je instance třídy, která implementuje jedno nebo více následujících rozhraní:

Zrnka můžou mít nestálá nebo trvalá data stavu, která mohou být uložena v jakémkoli úložném systému. Zrna implicitně rozdělují stavy aplikací, což umožňuje automatickou škálovatelnost a zjednodušení obnovení při selhání. Stav zrnitosti se uchovává v paměti, zatímco je agregační interval aktivní, což vede k nižší latenci a menšímu zatížení úložišť dat.

Spravovaný životní cyklus agregace Orleans .

Instance zrn se automaticky provádí na vyžádání modulem Orleans runtime. Zrna, která se na chvíli nepoužívají, se automaticky odeberou z paměti, aby se uvolnily prostředky. Je to možné kvůli stabilní identitě, která umožňuje vyvolání zrn bez ohledu na to, jestli jsou už načtené do paměti, nebo ne. To také umožňuje transparentní obnovení z selhání, protože volající nemusí vědět, na kterém serveru se v libovolném okamžiku vytvoří instance agregace. Zrnka mají spravovaný životní cyklus s Orleans modulem runtime zodpovědným za aktivaci nebo deaktivaci a umístěním a umístěním zrn podle potřeby. Vývojář tak může psát kód, jako by byla všechna zrnka vždy v paměti.

Co jsou sila?

Silo je dalším příkladem primitiva Orleans . Silo hostuje jedno nebo více zrn. Modul Orleans runtime implementuje programovací model pro aplikace.

Skupina sila se obvykle spouští jako cluster pro zajištění škálovatelnosti a odolnosti proti chybám. Když běží jako cluster, sila vzájemně koordinují, aby distribuují práci a detekují a obnovují se při selhání. Modul runtime umožňuje vzájemné komunikaci zrn hostovaných v clusteru, jako by byla v rámci jednoho procesu. Pokud chcete pomoct vizualizovat vztah mezi shluky, silami a zrnky, zvažte následující diagram:

Shluk má jedno nebo více sila a silo má jedno nebo více zrn.

Předchozí diagram znázorňuje vztah mezi shluky, silami a zrnky. Můžete mít libovolný počet shluků, každý shluk má jedno nebo více sila a každé silo má jedno nebo více zrn.

Kromě základního programovacího modelu poskytují sila zrnka se sadou služeb runtime, jako jsou časovače, připomenutí (trvalé časovače), trvalost, transakce, streamy a další. Další informace najdete v tématu S čím můžu dělat Orleans?

Webové aplikace a další externí klienti volají zrnka v clusteru pomocí klientské knihovny, která automaticky spravuje síťovou komunikaci. Klienti mohou být také spolu hostovaní ve stejném procesu s silami pro zjednodušení.

S čím můžu dělat Orleans?

Orleans je architektura pro vytváření aplikací nativních pro cloud a měla by se zvážit vždy, když vytváříte aplikace .NET, které by nakonec potřebovaly škálovat. Existují zdánlivě nekonečné způsoby použití Orleans, ale následující jsou některé z nejběžnějších způsobů; Hry, bankovnictví, chatovací aplikace, GPS sledování, burzovní obchodování, nákupní košíky, hlasovací aplikace a další. Orleans Microsoft používá Microsoft v Azure, Xboxu, Skypu, Halo, PlayFabu, Gears of War a mnoha dalších interních službách. Orleans má mnoho funkcí, které usnadňují použití pro různé aplikace.

Uchování

Orleans poskytuje jednoduchý model trvalosti, který zajišťuje, že stav je k dispozici před zpracováním požadavku a že je zachována jeho konzistence. Zrna můžou mít více pojmenovaných trvalých datových objektů. Může se například jednat o profil uživatele s názvem "profile" a jeden s názvem "inventory" pro svůj inventář. Tento stav lze uložit v libovolném systému úložiště.

Zatímco je spuštěné agregační interval, stav se uchovává v paměti, aby se žádosti o čtení mohly obsluhovat bez přístupu k úložišti. Když agregační interval aktualizuje svůj stav, volání IStorage.WriteStateAsync zajistí, že záložní úložiště bude aktualizováno pro stálost a konzistenci.

Další informace naleznete v tématu Trvalost zrnitosti.

Časovače a připomenutí

Připomenutí jsou trvalým plánovacím mechanismem pro zrnka. Dají se použít k zajištění toho, aby se některá akce dokončila v budoucnu, i když se v tuto chvíli neaktivuje agregační interval. Časovače jsou neztrácené protějšky připomenutí a lze je použít pro události s vysokou frekvencí, které nevyžadují spolehlivost.

Další informace najdete v tématu Časovače a připomenutí.

Flexibilní umístění zrnitosti

Když se aktivuje Orleansagregační interval, modul runtime rozhodne, na kterém serveru (silo) se má toto agregační interval aktivovat. Tomu se říká umístění zrnitosti.

Proces Orleans umístění je plně konfigurovatelný. Vývojáři si můžou vybrat ze sady předkonfigurovaných zásad umístění, jako jsou náhodná, preferovaná místní a na základě zatížení nebo vlastní logika. To umožňuje plnou flexibilitu při rozhodování o tom, kde se zrna vytvářejí. Například zrnka se dají umístit na server blízko prostředků, se kterými potřebují pracovat nebo s jinými zrnky, se kterými komunikují.

Další informace naleznete v tématu Umístění grain.

Správa verzí a heterogenní clustery

Upgrade produkčních systémů způsobem, který bezpečně odpovídá změnám, může být náročný, zejména ve stavových systémech. K tomuto nastavení je možné použít rozhraní Orleans odstupňované verze.

Cluster udržuje mapování toho, které implementace zrnitosti jsou k dispozici na kterých sila v clusteru a verze těchto implementací. Tato verze informací je používána modulem runtime ve spojení se strategiemi umístění k rozhodování o umístění při směrování volání zrn. Kromě toho, aby bylo možné bezpečně aktualizovat odstupňované verze, to také umožňuje heterogenní clustery, kde různá sila mají k dispozici různé sady implementací zrnitosti.

Další informace najdete v tématu Správa verzí odstupňované verze.

Bezstavové pracovníky

Bezstavové pracovníci jsou speciálně označená zrnka, která nemají žádný přidružený stav a lze je aktivovat na více sil současně. To umožňuje větší paralelismus pro bezstavové funkce.

Další informace najdete v tématu bezstavová pracovní zrnka.

Filtry volání agregace

Filtr odstupňovaného volání je logika, která je společná pro mnoho zrn. Orleans podporuje filtry pro příchozí i odchozí hovory. Všechny filtry pro autorizaci, protokolování a telemetrii a zpracování chyb jsou považovány za běžné.

Kontext požadavku

Metadata a další informace je možné předat pomocí řady požadavků pomocí kontextu požadavku. Kontext požadavku lze použít k uchovávání distribuovaných trasovacích informací nebo jakýchkoli jiných uživatelem definovaných hodnot.

Distribuované transakce ACID

Kromě jednoduchého modelu trvalosti popsaného výše mohou zrnka mít transakční stav. Více zrn se může účastnit transakcí ACID společně bez ohledu na to, kde je jejich stav nakonec uložen. Orleans Transakce jsou distribuované a decentralizované (neexistuje žádný centrální správce transakcí ani koordinátor transakcí) a mají serializovatelnou izolaci.

Další informace o transakcích naleznete v tématu Transakce.

Streamy

Toky vývojářům pomáhají zpracovávat řadu datových položek téměř v reálném čase. Orleans datové proudy se spravují. Datové proudy není nutné vytvářet ani registrovat před publikováním agregačního intervalu nebo klientem nebo přihlášením k odběru datového proudu. To umožňuje větší oddělení výrobců datových proudů a spotřebitelů od sebe a infrastruktury.

Zpracování datových proudů je spolehlivé: zrnka může ukládat kontrolní body (kurzory) a během aktivace nebo kdykoli později obnovit do uloženého kontrolního bodu. Toky podporují dávkové doručování zpráv spotřebitelům za účelem zlepšení efektivity a výkonu obnovení.

Toky jsou podporovány službami ve frontě, jako jsou Azure Event Hubs, Amazon Kinesis a další.

Libovolný počet datových proudů lze multiplexovat na menší počet front a odpovědnost za zpracování těchto front je rovnoměrně vyvážena napříč clusterem.

Video Úvod do služby Orleans

Pokud vás zajímá úvod do videa, podívejte se na Orleansnásledující video:

Další kroky