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.
Orleans je multiplatformní architektura navržená tak, aby zjednodušila vytváření distribuovaných aplikací. Ať už je škálování z jednoho serveru na tisíce cloudových aplikací, Orleans poskytuje nástroje pro správu složitosti distribuovaných systémů. Rozšiřuje známé koncepty jazyka C# do prostředí s více servery, což vývojářům umožňuje zaměřit se na logiku aplikace.
Orleans Co nabízí:
- Je navržená pro elastické škálování. Přidejte nebo odeberte servery a Orleans upraví se odpovídajícím způsobem tak, aby se zachovala odolnost proti chybám a škálovatelnost.
- Zjednodušuje vývoj distribuovaných aplikací pomocí společné sady vzorů a rozhraní API, takže je přístupný i pro ty, které jsou v distribuovaných systémech nové.
- Je nativní pro cloud a běží na platformách, kde se podporuje .NET – Linux, Windows, macOS a další.
- Podporuje moderní možnosti nasazení, jako jsou Kubernetes, Azure App Service a Azure Container Apps.
Orleans se často označuje jako "Distribuovaná .NET", protože se zaměřuje na vytváření odolných a škálovatelných cloudových nativních služeb.
Novinky v Orleans 10.0
Orleans 10.0 zavádí několik nových funkcí a vylepšení:
- Orleans Řídicí panel: Integrovaný řídicí panel pro monitorování Orleans clusterů, zrn a sil v reálném čase.
- Zprostředkovatelé Redis: Stabilní poskytovatelé Redis pro clustering, trvalost a připomenutí.
- Podpora CancellationToken pro systémové cíle: Rozšířená podpora CancellationToken v rámci frameworku.
Návod
Orleans 10.0 cílí na .NET 8.0, .NET 9.0 a .NET 10.0.
Novinky ve Orleans verzi 9.x
Orleans 9.x představuje několik důležitých funkcí:
- Úplná podpora CancellationToken: Metody Grain nyní plně podporují tokeny zrušení.
- Adresář Strong-Consistency grain: Nový distribuovaný adresář v paměti s garancí silné konzistence.
- Deaktivace na základě paměti: Automatická deaktivace procesů pod tlakem paměti.
- In-Process Test Cluster: Zjednodušená testovací infrastruktura pro Orleans aplikace.
- Vylepšený protokol členství: Rychlejší detekce selhání (90 sekund vs. 10 minut v předchozích verzích).
- Vyvážení aktivace: Automatické vyvážení zrna mezi silami (stabilní, experimentální ve verzi 8.2).
- Výchozí změna umístění (9.2): Výchozí strategie umístění se změnila z Random na ResourceOptimized.
Návod
Orleans 9.x cílí na .NET 8.0 a .NET 9.0.
Novinky ve verzi Orleans 8.x
Orleans 8.x zavedl několik důležitých funkcí:
- .NET Aspire Integration: Prvotřídní podpora pro .NET Aspire pro zjednodušený vývoj nativní pro cloud.
- Umístění optimalizované podle zdrojů: Nová strategie umístění založená na využití procesoru a paměti.
- Repartitioning aktivace (8.2, Experimentální): Automatická redistribuce zrn pro lepší výkon.
-
New Grain Timer API (8.2):: RegisterGrainTimer Nahrazuje zastaralou
RegisterTimermetodu. - MessagePack Serializer (8.2): Nová možnost serializace s vysokým výkonem.
- Poskytovatel clusteringu Cassandra (8.2):: Podpora apache Cassandra jako poskytovatele clusteringu
Návod
Orleans 8.x cílí na .NET 8.0.
Novinky ve verzi Orleans 7.0
Orleans 7.0 byla hlavní verze s významnými vylepšeními:
- Zjednodušená rozhraní API: Zjednodušené vzory tvůrce používající UseOrleans a UseOrleansClient.
- Generátory zdrojů: Nahrazení generování kódu zdrojovými generátory za lepší výkon v době sestavení.
- Nový systém serializace: Nová vysoce výkonná architektura serializace odolné proti verzím.
- Podpora IAsyncEnumerable (7.2): Streamování odpovědí z metod agregace
- Časové limity pro jednotlivé volání (7.2.2): Určete časové limity pro jednotlivá volání agregačního intervalu.
- Poskytovatelé služby Cosmos DB (7.2):: Podpora clusteringu, trvalosti a připomenutí ve službě Azure Cosmos DB
Návod
Orleans 7.0 cílí na .NET 7.0 a novější.
Orleans 3.x (historická verze)
Orleans 3.x je starší verze. U nových projektů zvažte upgrade na Orleans verzi 7.0 nebo novější, abyste využili lepšího výkonu, zjednodušených rozhraní API a nových funkcí.
Hlavní rozdíly od novějších verzí:
- Používá ClientBuilder a SiloHostBuilder místo sjednoceného UseOrleans vzoru.
- Vyžaduje
ConfigureApplicationParts()kontrolu sestavení. - Používá místo zdrojových generátorů starší verzi generátoru kódu.
Pokyny k migraci najdete v průvodci migrací.
Model aktorů
Orleans je založen na modelu aktora. Od počátku sedmdesátých let 20. století je herecký model nyní základní komponentou Orleans. V modelu objektu actor je každý aktér jednoduchý, souběžný, neměnný objekt zapouzdřující kus stavu a odpovídající chování. Aktéři komunikují výhradně pomocí asynchronních zpráv. Orleans zejména vynalezl abstrakci virtuálního herce , kde herci existují trvale.
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í.
Tento nový přístup pomáhá vytvořit novou generaci distribuovaných aplikací pro cloudovou éru. Orleans Programovací model zkrotí složitost, která je součástí vysoce paralelních distribuovaných aplikací, aniž by omezovala možnosti nebo uložila omezení.
Další informace najdete v tématu Orleans: Virtual Actors prostřednictvím microsoft Research. Virtuální herec je reprezentován jako "Orleans grain."
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 každé aplikaci Orleans je zrno. Zrna jsou entity, které zahrnují uživatelem definovanou identitu, chování a stav. Zvažte následující vizuální znázornění zrna:
Identita zrn jsou uživatelsky definované klíče, díky kterým jsou zrna vždy dostupná k použití. Jiná zrnka nebo libovolný počet externích klientů mohou vyvolat zrnka. Každé zrno je instance třídy, která implementuje jedno nebo více následujících rozhraní:
- IGrainWithGuidKey: Rozhraní značky pro zrnka s klíči Guid.
-
IGrainWithIntegerKey: Rozhraní značky pro zrnka s klíči
Int64. -
IGrainWithStringKey: Rozhraní značky pro zrnka s klíči
string. - IGrainWithGuidCompoundKey: Rozhraní značky pro zrnka s složenými klíči.
- IGrainWithIntegerCompoundKey: Rozhraní značky pro zrnka s složenými klíči.
Zrnka můžou obsahovat nestálé nebo trvalá data o stavu uložená 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í. Orleans uchovává stav instance v paměti, zatímco je tato instance aktivní, což vede k nižší latenci a menšímu zatížení datových úložišť.
Modul Orleans runtime automaticky vytvoří instanci zrn na vyžádání. Zrna, která se nepoužívají po určitou dobu, se automaticky odeberou z paměti, aby se uvolnily prostředky. Toto odebrání je možné kvůli stabilní identitě, což umožňuje vyvolání zrn bez ohledu na to, jestli jsou načtena do paměti nebo ne. To také umožňuje transparentní zotavení z chyb, protože volající nemusí vědět, na kterém serveru je v kterémkoli okamžiku vytvořena instance grainu. Grains mají spravovaný životní cyklus, přičemž runtime Orleans je zodpovědný za jejich aktivaci/deaktivaci a umístění/lokalizaci podle potřeby. To umožňuje psát kód, jako by byla všechna zrnka vždy v paměti.
Co jsou sila?
To make the sentence slightly more explicit, we can propose: "Silo je dalším příkladem primitiva Orleans." Silo obsahuje 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. Při spuštění jako cluster koordinují sila pro distribuci práce a detekci a obnovu po selháních. Modul runtime umožňuje 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:
Předchozí diagram znázorňuje vztah mezi shluky, silami a zrnky. Může existovat libovolný počet shluků, každý cluster má jedno nebo více sila a každý siilo má jedno nebo více zrn.
Kromě základního programovacího modelu poskytují sila zrnkům běhové služby, jako jsou časovače, připomenutí (trvalé časovače), persistenci, transakce, datové proudy a další. Další informace najdete v tématu Co se dá dělat s Orleans?.
Webové aplikace a další externí klienti volají grains 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í.
Co se dá dělat s Orleans?
Orleans je architektura pro vytváření aplikací nativních pro cloud a měla by se zvážit při vytváření aplikací .NET, které by mohly nakonec potřebovat škálování. Existují zdánlivě nekonečné způsoby použití Orleans, ale následující jsou některé z nejběžnějších: hry, bankovnictví, chatovací aplikace, GPS sledování, burzovní obchodování, nákupní košíky, hlasovací aplikace a další. Microsoft používá Orleans azure, Xbox, Skype, Halo, PlayFab, Gears of War a mnoho dalších interních služeb. Orleans má mnoho funkcí, které usnadňují použití pro různé aplikace.
Perzistence
Orleans poskytuje jednoduchý model trvalosti, který zajišťuje dostupnost stavu před zpracováním požadavku a zachováním konzistence. Zrna můžou mít více pojmenovaných trvalých datových objektů. Například jedna může být označována jako "profil" pro profil uživatele a další jako "inventář" pro jeho inventář. Tento stav lze uložit v libovolném systému úložiště.
Když běží grain, Orleans udržuje stav v paměti, aby obsloužil požadavky na čtení bez přístupu k úložišti. Když zrno aktualizuje svůj stav, volání IStorage.WriteStateAsync zajistí aktualizaci podpůrného úložiště pro zajištění stálosti a konzistence.
Další informace najdete v tématu Trvalost zrnitosti.
Časovače a připomenutí
Připomenutí jsou trvalým plánovacím mechanismem pro zrnka. Pomocí nich zajistíte, že se akce v budoucnu dokončí, i když není momentálně aktivován daný granulární interval. Časovače jsou nedlouhodobým ekvivalentem připomenutí a lze je použít pro události, které se často opakují a nevyžadují spolehlivost.
Další informace najdete v tématu Časovače a Připomenutí.
Flexibilní umístění zrnitosti
Když se aktivuje zrno v Orleans, modul runtime rozhodne, na kterém serveru (silo) je má aktivovat. Tento proces se nazývá umístění zrna.
Proces umístění v Orleans je plně konfigurovatelný. Můžete si vybrat z předdefinovaných zásad umístění, jako jsou například náhodné, preferující místní a zatížením řízené, nebo nakonfigurovat vlastní logiku. To umožňuje plnou flexibilitu při rozhodování o tom, kde se zrna vytvářejí. Například umístěte zrní na server blízko k prostředkům, se kterými potřebují pracovat nebo s jinými zrny, se kterými komunikují.
Další informace naleznete v tématu umístění zrna.
Verzování Grain a heterogenní clustery
Modernizace produkčních systémů při bezpečném zohledňování změn může být náročná, zejména ve stavových systémech. Aby se toto zohlednilo, lze rozhraní verzovat v Orleans.
Cluster udržuje mapování toho, které implementace zrna jsou k dispozici na kterých silech a jejich verzích. Modul runtime používá tyto informace o verzi se strategiemi umístění k rozhodování o umístění při směrování volání zrn. Kromě bezpečné aktualizace verze zrna to také umožňuje heterogenní clustery, kde různé uzly mají různé jádra dostupných implementací zrna.
Další informace naleznete v tématu Grain Versioning.
Bezstavové pracovníky
Bezstavoví pracovníci jsou speciálně označená zrní bez přidruženého stavu, která se mohou aktivovat v několika silech současně. To umožňuje větší paralelismus pro bezstavové funkce.
Další informace najdete v tématu bezstavových pracovních zrn.
Filtry volání grainu
Filtr odstupňovaného volání je logika společná pro mnoho zrn. Orleans podporuje filtry příchozích i odchozích hovorů. Mezi běžné použití patří autorizace, protokolování a telemetrie a zpracování chyb.
Kontext požadavku
Předávání metadat a dalších informací pomocí řady požadavků pomocí kontextu požadavku Kontext požadavku použijte k uchovávání distribuovaných trasovacích informací nebo jiných 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. Transakce v Orleans jsou distribuované a decentralizované (to znamená, že neexistuje žádný centrální správce transakcí nebo koordinátor) a mají serializovatelnou izolaci.
Další informace o transakcích naleznete v tématu Transakce.
Proudy
Streamy pomáhají zpracovávat řadu datových položek téměř v reálném čase. Orleans datové proudy jsou spravovány; není potřeba datové proudy vytvářet ani registrovat předtím, než je grain nebo klient publikuje nebo se k nim přihlásí. 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 uložený kontrolní bod. Streamy podporují dávkové doručování zpráv příjemcům za účelem zlepšení efektivity a výkonu obnovení.
Streamy jsou podporovány službami ve frontě, jako jsou Azure Event Hubs, Amazon Kinesis a další.
Libovolný počet datových proudů může být multiplexován na menší počet front a odpovědnost za zpracování těchto front je rovnoměrně vyvážena napříč clusterem.
Úvod k videu Orleans
Podívejte se na následující úvodní video k Orleans.