Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Orleans to międzyplatformowa struktura przeznaczona do upraszczania tworzenia aplikacji rozproszonych. Niezależnie od tego, czy skalowanie odbywa się z jednego serwera do tysięcy aplikacji opartych na chmurze, Orleans zapewnia narzędzia ułatwiające zarządzanie złożonością systemów rozproszonych. Rozszerza znane pojęcia języka C# na środowiska wieloserwerowe, dzięki czemu deweloperzy mogą skupić się na logice aplikacji.
Oto co Orleans oferuje:
- Jest ona przeznaczona do elastycznego skalowania. Dodaj lub usuń serwery i Orleans odpowiednio dostosowuje się w celu zachowania odporności na uszkodzenia i skalowalności.
- Upraszcza tworzenie aplikacji rozproszonych za pomocą wspólnego zestawu wzorców i interfejsów API, dzięki czemu jest dostępny nawet dla nowych systemów rozproszonych.
- Jest ona natywna dla chmury i działa na platformach, na których jest obsługiwana platforma .NET — Linux, Windows, macOS i nie tylko.
- Obsługuje nowoczesne opcje wdrażania, takie jak Kubernetes, Azure App Service i Azure Container Apps.
Orleans jest często nazywana "rozproszoną platformą .NET" ze względu na skoncentrowanie się na tworzeniu odpornych, skalowalnych usług natywnych dla chmury. Teraz przyjrzyjmy się modelowi aktora.
Model aktora
Orleans jest oparty na modelu aktora. Pochodzący z początku lat 70., model aktora jest teraz podstawowym składnikiem Orleans. W modelu aktora każdy aktor jest lekkim, współbieżnym, niezmiennym obiektem zawierającym fragment stanu oraz odpowiadające zachowanie. Aktorzy komunikują się wyłącznie przy użyciu komunikatów asynchronicznych. Orleans wymyślił abstrakcję wirtualnego aktora , gdzie aktorzy istnieją wiecznie.
Notatka
Aktorzy są czysto logicznymi jednostkami, które zawsze istnieją praktycznie. Nie można jawnie utworzyć ani zniszczyć aktora, a jego istnienie wirtualne nie ma wpływu na awarię serwera, który go wykonuje. Ponieważ aktorzy zawsze istnieją, są zawsze adresowalni.
To nowatorskie podejście pomaga w tworzeniu nowej generacji aplikacji rozproszonych na potrzeby epoki chmury. Model Orleans programowania osłania złożoność związaną z wysoce równoległymi aplikacjami rozproszonymi bez ograniczania możliwości ani nakładania ograniczeń.
Aby uzyskać więcej informacji, zobacz Orleans: Virtual Actors za pośrednictwem usługi Microsoft Research. Wirtualny aktor jest reprezentowany jako ziarno Orleans.
Co to są ziarna?
Ziarno jest jednym z kilku Orleans prymitywów. Jeśli chodzi o model aktora, ziarno jest aktorem wirtualnym. Podstawowym blokiem konstrukcyjnym w dowolnej aplikacji Orleans jest ziarno . Ziarna to jednostki składające się z tożsamości, zachowania i zdefiniowanego przez użytkownika stanu. Rozważ następującą wizualną reprezentację ziarna:
Identyfikatory ziaren to klucze zdefiniowane przez użytkownika, co sprawia, że ziarna są zawsze dostępne do wywołania. Inne ziarna lub dowolna liczba klientów zewnętrznych mogą wywoływać ziarna. Każde ziarno jest instancją klasy implementującej co najmniej jeden z następujących interfejsów.
-
IGrainWithGuidKey: Interfejs znacznikowy dla ziarna z kluczami
Guid
. -
IGrainWithIntegerKey: Interfejs znacznikowy dla ziarna z kluczami
Int64
. -
IGrainWithStringKey: Interfejs znacznikowy dla ziarna z kluczami
string
. - IGrainWithGuidCompoundKey: interfejs znacznika dla ziarna z kluczami złożonymi.
- IGrainWithIntegerCompoundKey: interfejs znacznika dla ziarna z kluczami złożonymi.
Ziarna mogą mieć nietrwałe lub trwałe dane stanu przechowywane w dowolnym systemie magazynu. W związku z tym grainy niejawnie partycjonują stany aplikacji, umożliwiając automatyczną skalowalność i upraszczając odzyskiwanie po awariach. Orleans zachowuje stan ziarna w pamięci, gdy ziarno jest aktywne, co prowadzi do mniejszego opóźnienia i mniejszego obciążenia magazynów danych.
Środowisko Orleans uruchomieniowe automatycznie tworzy wystąpienia ziaren na żądanie. Ziarna, które nie są używane przez pewien czas, są automatycznie usuwane z pamięci, aby zwolnić zasoby. Usunięcie jest możliwe dzięki stabilnej tożsamości ziarna, co umożliwia ich wywołanie niezależnie od tego, czy są one ładowane do pamięci, czy nie. Umożliwia to również przezroczyste odzyskiwanie po awarii, ponieważ obiekt wywołujący nie musi wiedzieć, na którym serwerze ziarno jest tworzone w żadnym momencie. Grainy mają zarządzany cykl życia, przy czym środowisko uruchomieniowe Orleans odpowiada za aktywowanie/dezaktywowanie oraz umieszczanie/lokalizowanie grainów zgodnie z potrzebami. Umożliwia to pisanie kodu tak, jakby wszystkie ziarna zawsze znajdowały się w pamięci.
Co to są silosy?
Silos to kolejny przykład Orleans pierwotnego. Silos hostuje co najmniej jedno ziarno. Środowisko Orleans uruchomieniowe implementuje model programowania dla aplikacji.
Zazwyczaj grupa silosów działa jako klaster w celu zapewnienia skalowalności i odporności na uszkodzenia. Po uruchomieniu jako klaster, silosy koordynują się w celu rozdzielania zadań oraz wykrywania i odzyskiwania po awariach. Środowisko uruchomieniowe umożliwia ziarnom hostowanym w klastrze komunikowanie się tak, jakby były w ramach jednego procesu. Aby ułatwić wizualizowanie relacji między klastrami, silosami i ziarnami, rozważmy następujący diagram:
Na powyższym diagramie przedstawiono relację między klastrami, silosami i ziarnami. Może istnieć dowolna liczba klastrów, każdy klaster ma co najmniej jeden silos, a każdy silos ma co najmniej jedno ziarno.
Oprócz podstawowego modelu programowania, silosy zapewniają jednostkom usługi uruchomieniowe, takie jak czasomierze, przypomnienia (trwałe czasomierze), trwałość, transakcje, strumienie i inne. Aby uzyskać więcej informacji, zobacz Co można zrobić za pomocą Orleansfunkcji ?.
Aplikacje internetowe i inni klienci zewnętrzni nazywają ziarna w klastrze przy użyciu biblioteki klienta, która automatycznie zarządza komunikacją sieciową. Klienci mogą być również umieszczani razem w tym samym procesie z silosami dla uproszczenia.
Co można zrobić z Orleans?
Orleans to struktura do tworzenia aplikacji natywnych dla chmury i powinna być brana pod uwagę podczas tworzenia aplikacji platformy .NET, które mogą ostatecznie wymagać skalowania. Istnieją pozornie niekończące się sposoby korzystania z Orleansprogramu , ale poniżej przedstawiono niektóre z najbardziej typowych: Gry, Bankowość, Aplikacje czatu, Śledzenie GPS, Handel giełdowy, Koszyki na zakupy, Aplikacje do głosowania i nie tylko. Firma Microsoft korzysta z Orleans platformy Azure, Xbox, Skype, Halo, PlayFab, Gears of War i wielu innych usług wewnętrznych. Orleans ma wiele funkcji ułatwia korzystanie z różnych aplikacji.
Wytrwałość
Orleans Zapewnia prosty model trwałości zapewniający dostępność stanu przed przetworzeniem żądania i zachowaniem spójności. Ziarna mogą mieć wiele nazwanych trwałych obiektów danych. Na przykład, jeden może być nazywany "profilem" dla profilu użytkownika, a inny "ekwipunkiem" dla jego ekwipunku. Ten stan można przechowywać w dowolnym systemie magazynu.
Gdy Orleans działa, przechowuje stan w pamięci, aby obsługiwać żądania odczytu bez uzyskiwania dostępu do pamięci masowej. Gdy ziarno aktualizuje swój stan, wywołanie IStorage.WriteStateAsync zapewnia aktualizację pamięci pomocniczej, aby zagwarantować trwałość i spójność.
Aby uzyskać więcej informacji, zobacz Trwałość ziarna.
Czasomierze i przypomnienia
Przypomnienia to trwały mechanizm planowania dla ziarna. Użyj ich, aby upewnić się, że akcja zostanie ukończona w przyszłości, nawet jeśli ziarno nie jest obecnie aktywowane. Czasomierze są nietrwałym odpowiednikiem przypomnień i mogą być używane w przypadku zdarzeń o wysokiej częstotliwości, które nie wymagają niezawodności.
Aby uzyskać więcej informacji, zobacz Czasomierze i przypomnienia.
Elastyczne umieszczanie ziarna
Gdy ziarno aktywuje się w Orleans, czas wykonywania decyduje, na którym serwerze (silosie) ma być aktywowane. Ten proces jest nazywany umieszczaniem ziarna.
Proces umieszczania w Orleans jest w pełni konfigurowalny. Wybierz spośród wbudowanych zasad umieszczania, takich jak losowe, preferowane lokalnie i oparte na obciążeniu, lub skonfiguruj logikę niestandardową. Dzięki temu można w pełni elastycznie decydować, gdzie tworzone są ziarna. Na przykład umieść ziarna na serwerze w pobliżu zasobów, z którymi muszą działać, lub z innymi ziarnami, z którymi komunikują się.
Aby uzyskać więcej informacji, zapoznaj się z sekcją Umieszczanie ziarna.
Wersjonowanie ziarna i klastry heterogeniczne
Bezpieczne uaktualnianie systemów produkcyjnych pod kątem zmian może być trudne, szczególnie w systemach stanowych. Aby to uwzględnić, interfejsy grain mogą być wersjonowane za pomocą Orleans.
Klaster utrzymuje mapowanie, które implementacje ziarna są dostępne na których silosach oraz ich wersje. Środowisko wykonawcze używa tych informacji o wersji wraz ze strategiami rozmieszczania do podejmowania decyzji dotyczących rozmieszczania podczas przekierowania wywołań do jednostek obliczeń. Oprócz bezpiecznego aktualizowania wersji ziarna, umożliwia to również heterogeniczne klastry, w których różne silosy mają różne zestawy dostępnych implementacji ziarna.
Aby uzyskać więcej informacji, zobacz Grain Versioning.
Pracownicy bezstanowi
Bezstanowi pracownicy są specjalnie oznaczonymi jednostkami bez przypisanego stanu, które mogą działać jednocześnie w wielu silosach. Umożliwia to zwiększenie równoległości dla funkcji bezstanowych.
Aby uzyskać więcej informacji, zobacz bezstanowe jednostki robocze.
Filtry wywołań ziarna
Filtr wywołań ziarna jest logiką wspólną dla wielu ziaren. Orleans obsługuje filtry zarówno dla połączeń przychodzących, jak i wychodzących. Typowe zastosowania obejmują autoryzację, rejestrowanie i telemetrię oraz obsługę błędów.
Kontekst żądania
Przekazywanie metadanych i innych informacji z serii żądań przy użyciu kontekstu żądania. Użyj kontekstu żądania do przechowywania informacji dotyczących śledzenia rozproszonego lub innych zdefiniowanych wartości.
Transakcje rozproszone ACID
Oprócz prostego modelu trwałości opisanego powyżej ziarna mogą mieć stan transakcyjny. Wiele ziaren może razem uczestniczyć w transakcjach ACID, niezależnie od miejsca przechowywania ich stanu. Transakcje w Orleans są dystrybuowane i zdecentralizowane (co oznacza, że nie ma centralnego menedżera transakcji ani koordynatora) i mają serializowalną izolację.
Aby uzyskać więcej informacji na temat transakcji, zobacz transakcji.
Strumienie
Strumienie ułatwiają przetwarzanie serii elementów danych w czasie niemal rzeczywistym. Orleans strumienie są zarządzane; nie trzeba ich tworzyć ani rejestrować, zanim klient lub ziarno zacznie publikować lub subskrybować. Pozwala to na większe oddzielenie producentów strumieni i konsumentów od siebie i infrastruktury.
Przetwarzanie strumieniowe jest niezawodne: ziarna mogą przechowywać punkty kontrolne (kursory) i przywracać się do przechowywanego punktu kontrolnego podczas aktywacji lub w dowolnym późniejszym momencie. Strumienie obsługują dostarczanie wsadowe komunikatów konsumentom w celu zwiększenia wydajności i poprawy szybkości odzyskiwania.
Strumienie obsługiwane są przez usługi kolejkowania, takie jak Azure Event Hubs, Amazon Kinesis i inne.
Dowolna liczba strumieni może być multipleksowana na mniejszą liczbę kolejek, a odpowiedzialność za przetwarzanie tych kolejek jest równomiernie rozłożona w klastrze.
Wprowadzenie do wideo Orleans
Aby zapoznać się z wprowadzeniem wideo do Orleans, obejrzyj następujący film: