Orleans Korzyści

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

  • Produktywność deweloperów, nawet dla programistów nienależących do ekspertów.
  • Przezroczysta skalowalność domyślnie bez specjalnego nakładu pracy od programisty.

Wydajność pracy deweloperskiej

Model Orleans programowania zwiększa produktywność zarówno ekspertów, jak i programistów nienależących do ekspertów, zapewniając następujące kluczowe abstrakcji, gwarancji i usług systemowych.

Znany model programowania obiektowego (OOP)

Ziarna to klasy platformy .NET, które implementują zadeklarowane interfejsy ziarna platformy .NET za pomocą metod asynchronicznych. Ziarna wydają się programisty jako obiekty zdalne, których metody mogą być wywoływane bezpośrednio. Zapewnia to programistom znany paradygmat oop, przekształcając wywołania metod w komunikaty, rozsyłając je do odpowiednich punktów końcowych, wywołując metody ziarna docelowego i zajmując się błędami i przypadkami narożnymi w sposób niewidoczny.

Wykonywanie ziarna jednowątkowego

Środowisko uruchomieniowe gwarantuje, że ziarno nigdy nie jest wykonywane w więcej niż jednym wątku jednocześnie. W połączeniu z izolacją z innych ziarna programista nigdy nie stoi przed współbieżnością na poziomie ziarna i nigdy nie musi używać blokad lub innych mechanizmów synchronizacji w celu kontrolowania dostępu do udostępnionych danych. Ta funkcja sama sprawia, że opracowywanie aplikacji rozproszonych jest możliwe dla programistów nienależących do ekspertów.

Przezroczysta aktywacja

Środowisko uruchomieniowe aktywuje ziarno tylko wtedy, gdy istnieje komunikat do przetworzenia. To czysto oddziela pojęcie tworzenia odwołania do ziarna, który jest widoczny i kontrolowany przez kod aplikacji, oraz fizyczną aktywację ziarna w pamięci, który jest niewidoczny dla aplikacji. Jest to podobne do pamięci wirtualnej w tym, że decyduje, kiedy "page out" (dezaktywować) lub "page in" (uaktywnić) ziarno; Aplikacja ma nieprzerwany dostęp do pełnej "przestrzeni pamięci" logicznie utworzonych ziarna, niezależnie od tego, czy znajdują się w pamięci fizycznej w jakimkolwiek konkretnym momencie w czasie.

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

Przezroczystość lokalizacji

Odwołanie ziarna (obiekt proxy), którego programista używa do wywoływania metod ziarna lub przekazywania do innych składników zawiera tylko logiczną tożsamość ziarna. Tłumaczenie tożsamości logicznej ziarna na jego lokalizację fizyczną i odpowiedni routing komunikatów odbywa się w sposób niewidoczny dla środowiska uruchomieniowego Orleans .

Kod aplikacji komunikuje się z ziarnami, pozostając nieświadomy ich lokalizacji fizycznej, co może ulec zmianie w czasie z powodu awarii lub zarządzania zasobami lub dlatego, że ziarno jest dezaktywowane w momencie jego wywołania.

Przezroczysta integracja z magazynem trwałym

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

Automatyczne propagowanie błędów

Środowisko uruchomieniowe automatycznie propaguje nieobsługiwane błędy w łańcuchu wywołań przy użyciu semantyki asynchronicznej i rozproszonej try/catch. W związku z tym błędy nie są tracone w aplikacji. Dzięki temu programista może umieścić logikę 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

Model Orleans programowania jest przeznaczony do kierowania programistą w dół ścieżki prawdopodobnego sukcesu w skalowaniu aplikacji lub usługi przez kilka rzędów wielkości. Jest to realizowane poprzez włączenie sprawdzonych najlepszych rozwiązań i wzorców oraz zapewnienie wydajnej implementacji funkcjonalności systemu niższego poziomu.

Oto kilka kluczowych czynników, które umożliwiają skalowalność i wydajność:

Niejawne partycjonowanie szczegółowe stanu aplikacji

Używając ziarna jako bezpośrednio adresowalnych jednostek, programista niejawnie dzieli ogólny stan aplikacji. Orleans Chociaż model programowania nie określa, jak duże lub małe powinno być ziarno, w większości przypadków warto mieć stosunkowo dużą liczbę ziarna — miliony lub więcej — z każdym reprezentującym naturalną jednostkę aplikacji, taką jak konto użytkownika lub zamówienie zakupu.

Z ziarna są indywidualnie adresowalne i ich lokalizacja fizyczna abstrakcja przez środowisko uruchomieniowe, Orleans ma ogromną elastyczność równoważenia obciążenia i radzenia sobie z punktami gorącymi w sposób przezroczysty i ogólny bez żadnej myślenia od dewelopera aplikacji.

Adaptacyjne zarządzanie zasobami

Ziarna nie zakładają lokalności innych ziarna, ponieważ wchodzą z nimi w interakcje. Ze względu na tę przejrzystość lokalizacji środowisko uruchomieniowe może dynamicznie zarządzać i dostosowywać alokację dostępnych zasobów sprzętowych. W tym celu środowisko uruchomieniowe podejmuje szczegółowe decyzje dotyczące umieszczania i migracji 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ść ziarna bez wprowadzania żadnych zmian w kodzie aplikacji.

Komunikacja multipleksowana

Ziarna w systemie Orleans mają logiczne punkty końcowe, a komunikaty między nimi są multipleksowane w stałym zestawie wszystkich połączeń fizycznych (gniazd TCP). Dzięki temu środowisko uruchomieniowe może hostować miliony adresowalnych jednostek z niskim obciążeniem systemu operacyjnego na ziarno. Ponadto aktywacja i dezaktywacja ziarna nie wiąże się z kosztem rejestracji/wyrejestrowywania fizycznego punktu końcowego, takiego jak port TCP lub adres URL HTTP, a nawet zamknięcie połączenia TCP.

Efektywne planowanie

Środowisko uruchomieniowe planuje wykonywanie dużej liczby ziarna jednowątkowego przy użyciu puli wątków platformy .NET, która jest wysoce zoptymalizowana pod kątem wydajności. Kod ziarna napisany w stylu nieblokowania, oparty na kontynuacji (wymaganie Orleans modelu programowania), kod aplikacji działa w bardzo wydajny sposób "współpracy" wielowątkowy bez rywalizacji. Dzięki temu system osiąga wysoką przepływność i działa przy bardzo wysokim wykorzystaniu procesora CPU (do 90%+) ze wielką stabilnością.

Fakt, że wzrost liczby ziarna w systemie i wzrost obciążenia nie prowadzi do dodatkowych wątków lub innych elementów pierwotnych systemu operacyjnego pomaga skalowalność poszczególnych węzłów i całego systemu.

Jawna asynchronia

Orleans Model programowania sprawia, że asynchroniczny charakter aplikacji rozproszonej jawnie i prowadzi programistów do pisania kodu asynchronicznego bez blokowania. W połączeniu z asynchronicznym obsługą komunikatów i wydajnym planowaniem umożliwia to duży stopień rozproszonego równoległości i ogólnej przepływności bez wyraźnego użycia wielowątków.