Orleans 이점

Orleans의 주요 이점은 다음과 같습니다.

  • 비전문 프로그래머의 경우에도 개발자 생산성이 향상되었습니다.
  • 프로그래머의 특별한 노력 없이 기본적으로 투명한 확장성.

개발자 생산성

Orleans 프로그래밍 모델은 다음과 같은 주요 추상화, 보증 및 시스템 서비스를 제공하여 전문 및 비전문 프로그래머의 생산성을 증가시킵니다.

친숙한 개체 지향 프로그래밍(OOP) 패러다임

조직은 비동기 메서드를 사용하여 .NET 조직 인터페이스 선언을 구현하는 .NET 클래스입니다. 조직은 프로그래머에게 메서드를 직접 호출할 수 있는 원격 개체로 표시됩니다. 메서드 호출을 메시지로 전환하고, 올바른 엔드포인트로 라우팅하고, 대상 조직의 메서드를 호출하고, 투명한 방식으로 오류 및 비정상적인 사례를 처리함으로써 프로그래머에게 친숙한 OOP 패러다임을 제공합니다.

조직의 단일 스레드 실행

런타임은 한 번에 둘 이상의 스레드에서 조직이 실행되지 않도록 보장합니다. 프로그래머가 다른 조직과의 격리와 결합된 경우, 프로그래머는 조직 수준에서 동시성에 직면하지 않으며 공유 데이터에 대한 액세스를 제어하기 위해 잠금 또는 기타 동기화 메커니즘을 사용할 필요가 없습니다. 이 기능만으로도 비전문 프로그래머가 분산 애플리케이션을 쉽게 개발할 수 있습니다.

투명한 활성화

이 런타임은 처리할 메시지가 있을 때만 조직을 활성화합니다. 이를 통해 애플리케이션 코드에서 볼 수 있고 제어하는 조직에 대한 참조를 생성하는 개념과 애플리케이션에 투명한 메모리 내 조직의 실제 활성화를 명확하게 구분합니다. 이는 조직을 "페이지 아웃"(비활성화) 또는 "페이지 인"(활성화)할 시기를 결정한다는 측면에서 가상 메모리와 비슷합니다. 애플리케이션은 특정 시점에 실제 메모리에 있는지 여부에 관계없이 논리적으로 생성된 조직의 전체 "메모리 공간"에 중단 없이 액세스할 수 있습니다.

투명한 활성화를 사용하면 전체 하드웨어 리소스 풀에서 조직의 배치와 마이그레이션을 통해 동적인 적응형 부하 분산이 가능합니다. 이 기능은 작업자 수명이 애플리케이션으로 관리되는 기존 작업자 모델에서 크게 개선되었습니다.

위치 투명성

프로그래머가 조직의 메서드를 호출하거나 다른 구성 요소에 전달하는 데 사용하는 조직 참조(프록시 개체)는 조직의 논리적 ID만 포함합니다. 그레인의 논리적 ID를 물리적 위치로 변환하는 해당 메시지 라우팅은 Orleans 런타임에서 투명하게 수행됩니다.

애플리케이션 코드는 실제 위치를 알지 못한 채 조직과 통신합니다. 이는 오류 또는 리소스 관리로 인해 또는 호출될 때 조직이 비활성화되기 때문에 시간이 지남에 따라 변경될 수 있습니다.

영구 저장소와의 투명한 통합

Orleans를 통해 그레인의 메모리 내 상태를 영구 저장소에 선언적으로 매핑할 수 있습니다. 업데이트를 동기화하여 영구 상태가 성공적으로 업데이트된 후에만 호출자가 결과를 수신하도록 투명하게 보장합니다. 사용 가능한 기존 영구 스토리지 공급자 세트를 확장 및/또는 사용자 지정하는 것은 간단합니다.

오류 자동 전파

런타임은 비동기 및 분산 try/catch의 의미 체계를 사용하여 처리되지 않은 오류를 호출 체인에 자동으로 전파합니다. 따라서 애플리케이션 내에서 오류가 손실되지 않습니다. 이를 통해 프로그래머가 각 수준에서 오류를 수동으로 전파하는 지루한 작업 없이 적절한 위치에 오류 처리 논리를 배치할 수 있습니다.

기본적으로 투명한 확장성

Orleans 프로그래밍 모델은 프로그래머가 몇 가지 크기의 순서를 통해 애플리케이션 또는 서비스 크기를 조정하는 데 성공할 가능성이 있는 경로를 안내하도록 설계되었습니다. 입증된 모범 사례와 패턴을 통합하고 하위 수준의 시스템 기능을 효율적으로 구현하도록 제공하여 달성됩니다.

확장성과 성능을 사용할 수 있게 해주는 일부 주요 요소는 다음과 같습니다.

애플리케이션 상태의 세분화된 암시적 분할

직접 주소 지정 가능한 엔터티로 조직을 사용하면 프로그래머가 애플리케이션의 전체 상태를 암시적으로 분석합니다. Orleans 프로그래밍 모델은 그레인이 얼마나 크거나 작아야 하는지를 규정하지 않지만, 대부분의 경우 사용자 계정 또는 구매 주문과 같은 애플리케이션의 자연 엔터티를 나타내는 비교적 많은 수의 그레인(수백만 개 이상)을 갖는 것이 합리적입니다.

그레인은 개별적으로 주소를 지정하고 런타임에 의해 물리적 위치가 추상화되므로, Orleans는 애플리케이션 개발자의 생각 없이 부하를 분산하고 핫스폿을 투명하고 일반적으로 처리하는 데 엄청난 유연성을 제공합니다.

적응형 리소스 관리

조직은 상호 작용할 때 다른 조직의 위치를 가정하지 않습니다. 위치 투명성 때문에 런타임은 사용 가능한 하드웨어 리소스 할당을 동적으로 관리하고 조정할 수 있습니다. 런타임은 들어오는 요청을 실패하지 않고 로드 및 통신 패턴에 대한 응답으로 컴퓨팅 클러스터 전체에 걸친 조직의 배치 및 마이그레이션에 세분화된 결정을 내려서 수행합니다. 특정 조직의 여러 복제본을 만들면 런타임에서 애플리케이션 코드를 변경하지 않고도 조직의 처리량을 증가시킬 수 있습니다.

멀티플렉스 통신

Orleans의 그레인에는 논리적 엔드포인트가 있으며 그 사이의 메시징은 전체-전체 간 물리적 연결(TCP 소켓)의 고정 세트를 통해 멀티플렉스됩니다. 이를 통해 런타임은 조직당 OS 오버헤드가 낮은 수백만 개의 주소 지정 가능한 엔터티를 호스트할 수 있습니다. 또한 조직의 활성화 및 비활성화는 TCP 포트 또는 HTTP URL과 같은 실제 엔드포인트를 등록/등록 취소하거나 TCP 연결을 닫는 비용이 발생하지 않습니다.

효율적인 예약

런타임은 성능에 매우 최적화된 .NET 스레드 풀을 사용하여 많은 수의 단일 스레드 그레인 실행을 예약합니다. 비차단 연속 기반 스타일(Orleans 프로그래밍 모델의 요구 사항)로 작성된 조직 코드를 사용하면 애플리케이션 코드가 매우 효율적이고 "협조적"인 다중 스레드 방식으로 경합 없이 실행됩니다. 이를 통해 시스템은 높은 처리량에 도달하고 매우 높은 CPU 사용률(최대 90% 이상)에서 매우 안정적으로 실행할 수 있습니다.

시스템 내 조직의 수 및 로드가 증가해도 추가 스레드 또는 다른 OS 기본 요소가 발생하지 않으며 이는 개별 노드 및 전체 시스템의 확장성에 도움이 됩니다.

명시적 비동기

Orleans 프로그래밍 모델은 분산 애플리케이션의 비동기 특성을 명시적으로 만들고 비차단 비동기 코드를 작성할 수 있도록 프로그래머를 지원합니다. 비동기 메시징 및 효율적인 일정 예약과 결합하면 다중 스레딩을 명시적으로 사용하지 않고도 대규모 분산 병렬 처리와 전반적인 처리량을 가능하게 합니다.