Udostępnij za pośrednictwem


Orleans Korzyści

Główne zalety Orleans są następujące:

  • Produktywność deweloperów: nawet dla programistów niebędących ekspertami.
  • Przezroczysta skalowalność domyślnie: nie wymaga specjalnego nakładu pracy od dewelopera.

Wydajność pracy deweloperskiej

Orleans Model programowania zwiększa produktywność, niezależnie od poziomu wiedzy, zapewniając następujące kluczowe abstrakcje, gwarancje i usługi systemowe.

Znany model programowania obiektowego (OOP)

Ziarna to klasy .NET, które implementują zadeklarowane interfejsy ziarna .NET za pomocą metod asynchronicznych. Ziarna są wyświetlane jako obiekty zdalne, których metody mogą być wywoływane bezpośrednio. Zapewnia to znany paradygmat programowania obiektowego, przekształcając wywołania metod w komunikaty, kierując je do właściwych punktów końcowych, wywołując metody ziarna docelowego i przezroczyście obsługując błędy oraz nietypowe przypadki.

Wykonywanie ziarna jednowątkowego

Środowisko uruchomieniowe gwarantuje, że jednostka nigdy nie jest wykonywana w więcej niż jednym wątku jednocześnie. Dzięki izolacji od innych ziaren deweloperzy nigdy nie napotykają współbieżności na poziomie ziarna i nigdy nie potrzebują blokad ani innych mechanizmów synchronizacji w celu kontrolowania dostępu do współdzielonych danych. Ta funkcja sama sprawia, że tworzenie aplikacji rozproszonych jest możliwe nawet dla programistów nienależących do ekspertów.

Przezroczysta aktywacja

Środowisko uruchomieniowe aktywuje ziarno tylko wtedy, gdy istnieje komunikat do przetworzenia. Wyraźne oddzielenie tworzenia odwołania do ziarna (kontrolowanego przez kod aplikacji) od fizycznej aktywacji ziarna w pamięci (niewidoczne dla aplikacji). Jest to podobne do pamięci wirtualnej , w której system operacyjny decyduje, kiedy należy przenieść strony do pamięci i kiedy wykluczyć strony z pamięci. Podobnie, w Orleans, środowisko uruchomieniowe decyduje, kiedy aktywować ziarno (przenosząc je do pamięci) i kiedy dezaktywować ziarno (usuwając je z pamięci). Aplikacja ma nieprzerwany dostęp do pełnej "przestrzeni pamięci" logicznie utworzonych ziaren, niezależnie od ich obecności w pamięci fizycznej w danym momencie.

Przezroczysta aktywacja umożliwia dynamiczne, adaptacyjne równoważenie obciążenia poprzez umieszczanie i migrację ziarna w puli zasobów sprzętowych. Ta funkcja znacznie poprawia model tradycyjnego aktora, w którym okres istnienia aktora jest zarządzany przez aplikację.

Przezroczystość lokalizacji

Obiekt proxy (odwołanie ziarna), używany do wywoływania metod ziarna lub przekazywania do innych składników, zawiera tylko tożsamość logiczną ziarna. Środowisko Orleans uruchomieniowe w sposób przezroczysty obsługuje tłumaczenie tożsamości logicznej ziarna na jego lokalizację fizyczną i odpowiednio rozsyłanie komunikatów.

Kod aplikacji komunikuje się z ziarnami bez znajomości ich lokalizacji fizycznej. Ta lokalizacja może zmieniać się w czasie z powodu awarii, zarządzania zasobami lub dlatego, że ziarno jest dezaktywowane, gdy zostanie wywołane.

Przezroczysta integracja z trwałym magazynem danych

Orleans umożliwia deklaratywne mapowanie stanu ziarna w pamięci do magazynu trwałego. Synchronizuje aktualizacje w sposób transparentny, gwarantując, że osoby wywołujące otrzymują wyniki dopiero po pomyślnym zaktualizowaniu trwałego stanu. Rozszerzanie i/lub dostosowywanie zestawu istniejących dostawców pamięci trwałej jest łatwe.

Automatyczne propagowanie błędów

Środowisko uruchomieniowe automatycznie propaguje nieobsługiwane błędy w łańcuchu wywołań, stosując semantykę asynchronicznego i rozproszonego try/catch. W związku z tym błędy nie są tracone w aplikacji. Umożliwia to umieszczenie logiki obsługi błędów w odpowiednich miejscach bez żmudnej pracy ręcznego propagowania błędów na każdym poziomie.

Przezroczysta skalowalność domyślnie

Orleans Model programowania prowadzi deweloperów do pomyślnego skalowania aplikacji lub usług za pomocą kilku rzędów wielkości. Pozwala to osiągnąć, włączając sprawdzone najlepsze rozwiązania i wzorce oraz zapewniając wydajną implementację funkcjonalności systemu niższego poziomu.

Poniżej przedstawiono niektóre kluczowe czynniki umożliwiające skalowalność i wydajność:

Niejawne, drobiazgowe partycjonowanie stanu aplikacji

Używanie ziaren jako bezpośrednio adresowalnych jednostek w sposób niejawny rozkłada ogólny stan aplikacji. Chociaż model programowania Orleans nie określa rozmiaru ziarna, w większości przypadków sensowne jest posiadanie stosunkowo dużej liczby ziaren (milionów lub więcej), z których każde reprezentuje naturalną jednostkę aplikacji, taką jak konto użytkownika lub zamówienie zakupu.

Ziarna są indywidualnie adresowalne, a ich lokalizacja fizyczna jest abstrakcją zarządzaną przez środowisko uruchomieniowe, Orleans ma ogromną elastyczność w równoważeniu obciążenia oraz radzeniu sobie z gorącymi punktami w sposób przejrzysty i uniwersalny, bez potrzeby angażowania uwagi dewelopera aplikacji.

Adaptacyjne zarządzanie zasobami

Ziarna nie przyjmują lokalności innych ziaren w trakcie interakcji. Ze względu na tę przejrzystość lokalizacji środowisko uruchomieniowe może dynamicznie zarządzać i dostosowywać alokację dostępnych zasobów sprzętowych. Środowisko uruchomieniowe osiąga to przez podejmowanie precyzyjnych decyzji dotyczących umieszczania i migrowania ziarna w klastrze obliczeniowym w reakcji na wzorce obciążenia i komunikacji — bez niepowodzeń żądań przychodzących. Tworząc wiele replik określonego ziarna, środowisko uruchomieniowe może zwiększyć przepływność bez zmieniania kodu aplikacji.

Komunikacja multipleksowana

Ziarna w systemie Orleans mają logiczne punkty końcowe, a komunikaty między nimi są multipleksowane poprzez stały zestaw fizycznych połączeń typu każdy z każdym (gniazda TCP). Dzięki temu środowisko uruchomieniowe może hostować miliony adresowalnych jednostek z niskim obciążeniem systemu operacyjnego na ziarno. Ponadto aktywowanie i dezaktywowanie ziarna nie powoduje ponoszenia kosztów rejestracji/wyrejestrowywania fizycznego punktu końcowego (takiego jak port TCP lub adres URL HTTP), a nawet zamknięcia połączenia TCP.

Efektywne planowanie

Środowisko uruchomieniowe planuje wykonywanie wielu ziaren jednowątkowych przy użyciu puli wątków platformy .NET, która jest wysoce zoptymalizowana pod kątem wydajności. Gdy kod zboża jest napisany w stylu opartym na kontynuacji, nieblokacyjnym (wymaganie Orleans modelu programowania), kod aplikacji jest uruchamiany bardzo wydajnie w sposób wielowątkowy kooperatywny, bez konfliktów. Dzięki temu system może osiągnąć wysoką przepływność i działać przy bardzo wysokim wykorzystaniu procesora CPU (do 90%+) ze wielką stabilnością.

Fakt, że wzrost liczby ziarnistości i zwiększone obciążenie nie prowadzi do dodatkowych wątków ani innych prymitywów systemu operacyjnego, przyczynia się do skalowalności poszczególnych węzłów i całego systemu.

Wyraźna asynchronia

Model Orleans programowania sprawia, że asynchroniczny charakter aplikacji rozproszonych jest jawny i prowadzi deweloperów do pisania kodu asynchronicznego bez blokowania. W połączeniu z asynchronicznym przesyłaniem komunikatów i wydajnym planowaniem umożliwia to duży stopień rozproszonego równoległego przetwarzania i ogólnej przepływności bez konieczności jawnego stosowania wielowątkowości.