다음을 통해 공유


Orleans 스트림 공급자

스트림은 다른 모양과 형태로 올 수 있습니다. 일부 스트림은 직접 TCP 링크를 통해 이벤트를 전달할 수 있으며, 다른 스트림은 지속성 큐를 통해 이벤트를 전달할 수 있습니다. 스트림 유형마다 다른 일괄 처리 전략, 다른 캐싱 알고리즘 또는 다른 백프레서 프로시저를 사용할 수 있습니다. 스트리밍 애플리케이션을 이러한 동작 선택 항목의 하위 집합으로만 제한하지 않도록 하기 위해 스트림 공급자는 사용자가 모든 유형의 스트림을 구현할 수 있도록 하는 Orleans 스트리밍 런타임에 대한 확장 지점입니다. 이 확장 지점은 Orleans Storage 공급자와 매우 유사합니다.

Azure Event Hubs 스트림 공급자

Azure Event Hub는 초당 수백만 개의 이벤트를 수신하고 처리할 수 있는 완전 관리형 실시간 데이터 수집 서비스입니다. 여러 원본에서 높은 처리량, 짧은 대기 시간으로 데이터를 수집하고 여러 소비자가 해당 데이터를 후속 처리하도록 설계되었습니다.

Event Hubs는 이벤트 파이프라인의 "정문" 역할을 하는, 대규모 이벤트 처리 아키텍처의 기초로 사용되는 경우가 많습니다. 소셜 미디어 피드, IoT 디바이스, 로그 파일을 비롯한 다양한 원본에서 데이터를 수집하는 데 사용할 수 있습니다. Event Hubs의 주요 이점 중 하나는 아무리 규모 간 큰 이벤트 처리 워크로드도 요구 사항을 충족할 수 있도록 수평으로 스케일 아웃하는 기능입니다. 또한 여러 Azure 지역에 분산된 여러 데이터 복제본을 사용하여 고가용성 및 내결함성을 보장합니다.

Microsoft.Orleans.Streaming.EventHubs NuGet 패키지에는 Event Hubs 스트림 공급자가 포함되어 있습니다.

AQ(Azure Queue) 스트림 공급자

AQ(Azure Queue) 스트림 공급자는 Azure 큐를 통해 이벤트를 전달합니다. 생산자 쪽에서 AQ 스트림 공급자는 이벤트를 직접 Azure 큐에 넣습니다. 소비자 쪽에서 AQ 스트림 공급자는 Azure 큐 세트에서 이벤트를 끌어오고 이를 사용하는 애플리케이션 코드에 전달하는 끌어오기 에이전트 세트를 관리합니다. 풀링 에이전트는 분할되고 고가용성 및 탄력적 분산 구성 요소인 분산된 “마이크로 서비스”라고 생각할 수 있습니다. 끌어오기 에이전트는 애플리케이션 조직을 호스트하는 동일한 사일로 내에서 실행됩니다. 따라서 큐에서 끌어오기 위해 별도의 Azure 작업자 역할을 실행할 필요가 없습니다. 에이전트 풀링, 관리, 백프레서, 큐의 분산, 실패한 에이전트에서 다른 에이전트로 큐 전달의 존재는 Orleans 스트리밍 런타임에 의해 완전히 관리되며 스트림을 사용하는 애플리케이션 코드에 투명합니다.

Microsoft.Orleans.Streaming.AzureStorage NuGet 패키지에는 Azure Queue Storage 스트림 공급자가 포함되어 있습니다.

큐 어댑터

지속성 큐를 통해 이벤트를 전달하는 다양한 스트림 공급자는 유사한 동작을 나타내며 유사한 구현의 적용을 받습니다. 따라서 개발자가 완전히 새로운 스트림 공급자를 처음부터 작성하지 않고도 다양한 유형의 큐에 플러그 인할 수 있도록 제네릭 확장성 PersistentStreamProvider를 제공합니다. PersistentStreamProvider는 특정 큐 구현 세부 정보를 추상화하고 이벤트를 큐에 넣기 및 큐에서 제거하는 수단을 제공하는 IQueueAdapter 구성 요소를 사용합니다. 나머지는 모두 PersistentStreamProvider 내부의 논리에 의해 처리됩니다. 위에서 언급한 Azure 큐 공급자도 이러한 방식으로 구현됩니다. 이는 AzureQueueAdapter를 사용하는 PersistentStreamProvider의 인스턴스입니다.

간단한 메시지 스트림 공급자

SMS 공급자라고도 하는 간단한 메시지 스트림 공급자는 일반 Orleans 조직 메시징을 활용하여 TCP를 통해 이벤트를 제공합니다. SMS의 이벤트는 신뢰할 수 없는 TCP 링크를 통해 전달되므로 SMS는 신뢰할 수 있는 이벤트 전달을 보장하지 않으며 SMS 스트림에 대해 실패한 메시지를 자동으로 다시 전송하지 않습니다. 기본적으로 OnNextAsync에 대한 생산자의 호출은 스트림 소비자의 처리 상태를 나타내는 Task를 반환합니다. 이 호출은 소비자가 이벤트를 성공적으로 수신하고 처리했는지 여부를 생산자에게 알려줍니다. 이 작업이 실패하면 생산자는 동일한 이벤트를 다시 전송하도록 하여 애플리케이션 수준에서 안정성을 달성할 수 있습니다. 스트림 메시지 전달이 최선의 노력이지만 SMS 스트림 자체는 안정적입니다. 즉, Pub-Sub에서 수행하는 구독자-생산자 바인딩은 완전히 신뢰할 수 있습니다.

참고 항목

Orleans 스트림 구현 세부 정보