Udostępnij za pośrednictwem


Microsoft Orleans

Orleans:

  • To międzyplatformowa struktura do tworzenia niezawodnych, skalowalnych aplikacji rozproszonych. Aplikacje rozproszone są definiowane jako aplikacje obejmujące więcej niż jeden proces, często poza granicami sprzętu przy użyciu komunikacji równorzędnej.
  • Skaluje z jednego serwera lokalnego do tysięcy rozproszonych, wysoce dostępnych aplikacji w chmurze.
  • Rozszerza znane pojęcia i idiomy języka C# na środowiska z wieloma serwerami.
  • Jest przeznaczony do elastycznego skalowania. Gdy host dołącza do klastra, może zaakceptować nowe aktywacje. Gdy host opuści klaster, poprzednie aktywacje na tym hoście zostaną ponownie aktywowane na pozostałych hostach zgodnie z potrzebami. Host może pozostawić klaster z powodu awarii skalowania w dół lub maszyny. Klaster Orleans można skalować w dół do jednego hosta. Te same właściwości, które umożliwiają elastyczną skalowalność, umożliwiają odporność na uszkodzenia. Klaster automatycznie wykrywa i szybko odzyskuje sprawność po awariach.
  • Upraszcza złożoność tworzenia aplikacji rozproszonych, zapewniając wspólny zestaw wzorców i interfejsów API.
  • Umożliwia deweloperom zapoznanie się z tworzeniem aplikacji na jednym serwerze w celu przejścia na tworzenie odpornych, skalowalnych usług natywnych dla chmury i aplikacji rozproszonych.
  • Jest czasami nazywany "rozproszoną platformą .NET".
  • To wybrana struktura podczas tworzenia aplikacji natywnych dla chmury.
  • Działa w dowolnym miejscu obsługiwanym przez platformę .NET. Obejmuje to hosting w systemach Linux, Windows i macOS.
  • Aplikacje można wdrażać w usługach Kubernetes, virtual machines i PaaS, takich jak aplikacja systemu Azure Service i Azure Container Apps.

"Model aktora"

Orleans jest oparty na modelu "aktora". Model aktora pochodzi na początku lat 70.Orleans Model aktora to model programowania, w którym każdy aktor jest lekkim, współbieżnym, niezmiennym obiektem, który hermetyzuje fragment stanu i odpowiednie zachowanie. Aktorzy komunikują się wyłącznie ze sobą przy użyciu komunikatów asynchronicznych. Orleans wymyślił abstrakcję wirtualnego aktora , gdzie aktorzy istnieją wiecznie.

Uwaga

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 adresowalne.

Jest to nowatorskie podejście do tworzenia 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ń na dewelopera.

Aby uzyskać więcej informacji, zobacz Orleans: Virtual Actors via Microsoft Research (Wirtualne aktorzy za pośrednictwem usługi Microsoft Research). Wirtualny aktor jest reprezentowany jako Orleans ziarno.

Co to są ziarna?

Ziarno jest jednym z kilku Orleans pierwotnych. Jeśli chodzi o model aktora, ziarno jest aktorem wirtualnym. Podstawowym blokiem konstrukcyjnym w każdej Orleans aplikacji jest ziarno. Ziarna to jednostki składające się z tożsamości, zachowania i stanu zdefiniowanego przez użytkownika. Rozważ następującą wizualną reprezentację ziarna:

Ziarno składa się ze stabilnej tożsamości, zachowania i stanu.

Tożsamości ziarna to klucze zdefiniowane przez użytkownika, dzięki czemu ziarna są zawsze dostępne do wywołania. Ziarna mogą być wywoływane przez inne ziarna lub dowolną liczbę klientów zewnętrznych. Każde ziarno jest wystąpieniem klasy, która implementuje jeden lub więcej z następujących interfejsów:

Ziarna mogą mieć nietrwałe lub trwałe dane stanu, które mogą być przechowywane w dowolnym systemie magazynu. W związku z tym ziarna niejawnie partycjonuje stany aplikacji, umożliwiając automatyczną skalowalność i upraszczając odzyskiwanie po awariach. Stan ziarna jest przechowywany w pamięci, gdy ziarno jest aktywne, co prowadzi do mniejszego opóźnienia i mniejszego obciążenia magazynów danych.

Zarządzany cykl życia Orleans ziarna.

Tworzenie wystąpienia ziarna jest wykonywane automatycznie na żądanie przez Orleans środowisko uruchomieniowe. Ziarna, które nie są używane przez jakiś czas, są automatycznie usuwane z pamięci, aby zwolnić zasoby. Jest to możliwe ze względu na ich stabilną tożsamość, która umożliwia wywoływanie ziarna, niezależnie od tego, czy są już zał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 dowolnym momencie. Ziarna mają zarządzany cykl życia, ze środowiskiem uruchomieniowym odpowiedzialnym za aktywowanie/dezaktywowanie i umieszczanie/lokalizowanie ziarna zgodnie z Orleans potrzebami. Dzięki temu deweloper może napisać kod tak, jakby wszystkie ziarna zawsze znajdowały się w pamięci.

Co to są silosy?

Silos to kolejny przykład pierwotnego Orleans elementu. 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. W przypadku uruchamiania jako klastra silosy koordynują się ze sobą w celu dystrybucji pracy i wykrywania i odzyskiwania po awariach. Środowisko uruchomieniowe umożliwia ziarnom hostowanym w klastrze komunikowanie się ze sobą 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:

Klaster ma co najmniej jeden silos, a silos ma co najmniej jedno ziarno.

Na powyższym diagramie przedstawiono relację między klastrami, silosami i ziarnami. Można mieć dowolną liczbę 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 udostępniają zestaw usług środowiska uruchomieniowego, takich jak czasomierze, przypomnienia (trwałe czasomierze), trwałość, transakcje, strumienie i inne. Aby uzyskać więcej informacji, zobacz Co mogę zrobić z Orleans?

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ż współgospodarzeni w tym samym procesie z silosami dla uproszczenia.

Co mogę zrobić za pomocą Orleanspolecenia ?

Orleans to struktura do tworzenia aplikacji natywnych dla chmury i powinna być brana pod uwagę za każdym razem, gdy tworzysz aplikacje platformy .NET, które ostatecznie będą musiały zostać skalowane. Pozornie niekończące się sposoby korzystania z programu Orleans, ale poniżej przedstawiono niektóre z najbardziej typowych sposobów; Gry, Bankowość, Aplikacje do czatów, Śledzenie GPS, Handel giełdowy, Koszyki na zakupy, Aplikacje do głosowania i nie tylko. Orleans jest używany przez firmę Microsoft na platformie Azure, Xbox, Skype, Halo, PlayFab, Gears of War i wiele innych usług wewnętrznych. Orleans Ma wiele funkcji, które ułatwiają korzystanie z różnych aplikacji.

Trwałość

Orleans Zapewnia prosty model trwałości, który gwarantuje, że stan jest dostępny przed przetworzeniem żądania i że jego spójność jest utrzymywana. Ziarna mogą mieć wiele nazwanych trwałych obiektów danych. Na przykład może istnieć jeden o nazwie "profil" dla profilu użytkownika i jeden o nazwie "inventory" dla swojego spisu. Ten stan można przechowywać w dowolnym systemie magazynu.

Gdy ziarno jest uruchomione, stan jest przechowywany w pamięci, dzięki czemu żądania odczytu mogą być obsługiwane bez uzyskiwania dostępu do magazynu. Gdy ziarno aktualizuje jego stan, wywołanie IStorage.WriteStateAsync gwarantuje, że magazyn zapasowy jest aktualizowany pod kątem trwałości i spójności.

Aby uzyskać więcej informacji, zobacz Trwałość ziarna.

Czasomierze i przypomnienia

Przypomnienia to trwały mechanizm planowania dla ziarna. Można ich użyć, aby upewnić się, że niektóre działania są wykonywane w przyszłości, nawet jeśli ziarno nie jest obecnie aktywowane w tym czasie. 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 jest aktywowane w Orleansprogramie , środowisko uruchomieniowe decyduje, na którym serwerze (silosie) aktywowano to ziarno. Jest to nazywane umieszczaniem ziarna.

Proces umieszczania w programie Orleans jest w pełni konfigurowalny. Deweloperzy mogą wybierać spośród wbudowanych zasad umieszczania, takich jak losowe, preferowane lokalnie i oparte na obciążeniu lub niestandardowa logika. Dzięki temu można w pełni elastycznie decydować, gdzie tworzone są ziarna. Na przykład ziarna można umieścić na serwerze w pobliżu zasobów, które muszą działać względem lub innych ziarna, z którymi komunikują się.

Aby uzyskać więcej informacji, zobacz Umieszczanie ziarna.

Przechowywanie wersji ziarna i klastry heterogeniczne

Uaktualnianie systemów produkcyjnych w sposób bezpieczny dla zmian może być trudne, szczególnie w systemach stanowych. Aby to uwzględnić, interfejsy ziarna w Orleans programie mogą być wersjonowane.

Klaster obsługuje mapowanie implementacji ziarna, na których są dostępne silosy w klastrze i wersje tych implementacji. Ta wersja informacji jest używana przez środowisko uruchomieniowe w połączeniu ze strategiami umieszczania w celu podejmowania decyzji dotyczących umieszczania podczas kierowania wywołań do ziarna. Ponadto, aby bezpiecznie zaktualizować ziarno wersji, umożliwia to również heterogeniczne klastry, w których różne silosy mają różne zestawy implementacji ziarna dostępne.

Aby uzyskać więcej informacji, zobacz Grain Versioning (Przechowywanie wersji ziarna).

Pracownicy bezstanowi

Pracownicy bezstanowi są specjalnie oznaczonymi ziarnami, które nie mają żadnego skojarzonego stanu i mogą być aktywowane na wielu silosach jednocześnie. Umożliwia to zwiększenie równoległości dla funkcji bezstanowych.

Aby uzyskać więcej informacji, zobacz bezstanowe ziarna procesów roboczych.

Filtry wywołań ziarna

Filtr wywołań ziarna jest logiką wspólną dla wielu ziarna. Orleans obsługuje filtry zarówno dla połączeń przychodzących, jak i wychodzących. Filtry autoryzacji, rejestrowania i telemetrii oraz obsługi błędów są uznawane za typowe.

Kontekst żądania

Metadane i inne informacje mogą być przekazywane z serią żądań przy użyciu kontekstu żądania. Kontekst żądania może służyć do przechowywania informacji dotyczących śledzenia rozproszonego lub innych wartości zdefiniowanych przez użytkownika.

Transakcje rozproszone ACID

Oprócz prostego modelu trwałości opisanego powyżej ziarna mogą mieć stan transakcyjny. Wiele ziarna może uczestniczyć w transakcjach ACID razem, niezależnie od tego, gdzie ich stan jest ostatecznie przechowywany. Transakcje w programie Orleans są dystrybuowane i zdecentralizowane (nie ma centralnego menedżera transakcji lub koordynatora transakcji) i mają serializowalne izolacji.

Aby uzyskać więcej informacji na temat transakcji, zobacz Transakcje.

Strumienie

Strumienie pomagają deweloperom przetwarzać serię elementów danych niemal w czasie rzeczywistym. Orleans strumienie są zarządzane; strumienie nie muszą być tworzone ani rejestrowane przed opublikowaniem ziarna lub klienta ani subskrybowania strumienia. Pozwala to na większe oddzielenie producentów strumieni i konsumentów od siebie i infrastruktury.

Przetwarzanie strumienia jest niezawodne: ziarna mogą przechowywać punkty kontrolne (kursory) i resetować do przechowywanego punktu kontrolnego podczas aktywacji lub w dowolnym późniejszym czasie. Strumienie obsługiwać dostarczanie wsadowe komunikatów użytkownikom w celu zwiększenia wydajności i wydajności odzyskiwania.

Strumienie są wspierane 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ównoważona w całym klastrze.

Orleans — wideo z wprowadzeniem

Jeśli interesuje Cię wprowadzenie Orleansdo filmu wideo , zapoznaj się z następującym filmem wideo:

Następne kroki