Event Hubs 스케일링
Event Hubs의 크기 조정에 영향을 주는 두 가지 요소가 있습니다.
- 처리량 단위(표준 계층) 또는 처리 단위(프리미엄 계층)
- 파티션
처리량 단위
Event Hubs의 처리량 용량은 처리량 단위로 제어됩니다. 처리량 단위는 미리 구매한 용량의 단위입니다. 단일 처리량 단위를 사용하면 다음을 수행할 수 있습니다.
- 수신: 초당 최대 1MB 또는 초당 1,000회 이벤트(둘 중 빠른 쪽 적용).
- 송신: 초당 최대 2MB 또는 초당 4,096회 이벤트.
구매한 처리량 단위의 용량을 초과하면 수신이 제한되고 Event Hubs는 EventHubsException(ServiceBusy의 이유 값 포함)을 throw합니다. 송신은 제한 예외를 생성하지 않지만 구매한 처리량 단위의 용량으로 제한됩니다. 게시 속도 예외를 수신하거나 더 높은 송신을 예상하는 경우 네임스페이스에 대해 구입한 처리량 단위의 수를 확인해야 합니다. Azure Portal에서 네임스페이스의 크기 조정 페이지에서 처리량 단위를 관리할 수 있습니다. Event Hubs API를 사용하여 프로그래밍 방식으로 처리량 단위를 관리할 수도 있습니다.
처리량 단위는 미리 구매하는 방식이며 시간당 요금이 청구됩니다. 구입하면, 처리량 단위는 최소 한시간으로 청구됩니다. Event Hubs 네임스페이스에 대해 최대 40개의 처리량 단위를 구입할 수 있으며, 네임스페이스의 모든 Event Hubs에서 공유할 수 있습니다.
Event Hubs의 자동 확장 기능은 필요한 사용량에 맞게 처리량 단위 수를 증가하여 자동으로 확장합니다. 처리량 단위를 늘리면 다음과 같은 상황에서 제한 시나리오를 예방할 수 있습니다.
- 데이터 수신 속도가 설정된 처리량 단위를 초과하는 경우.
- 데이터 송신 요청 속도가 설정된 처리량 단위를 초과하는 경우.
ServerBusy 오류로 인한 요청 실패 없이 부하가 최소 임계값을 초과하면 Event Hubs 서비스는 처리량을 높입니다.
자동 확장 기능에 대한 자세한 내용은 처리량 단위 자동 크기 조정을 참조하세요.
처리 단위
Event Hubs 프리미엄은 관리형 다중 테넌트 PaaS 환경에서 뛰어난 성능과 더 나은 격리를 제공합니다. 프리미엄 계층의 리소스는 CPU 및 메모리 수준에서 격리되므로 각 테넌트 워크로드가 격리되어 실행됩니다. 이 리소스 컨테이너를 PU(처리 단위)라고 합니다. 각 Event Hubs Premium 네임스페이스에 대해 1, 2, 4, 6, 8, 10, 12 또는 16 처리 단위를 구매할 수 있습니다.
처리 단위로 수집하고 스트림할 수 있는 양은 생산자, 소비자, 수집 및 처리 속도 등과 같은 다양한 요인에 따라 달라집니다.
예를 들어 1개 PU 및 1개 이벤트 허브(100개 파티션)가 있는 Event Hubs Premium 네임스페이스는 AMQP 또는 Kafka 워크로드 모두에 대해 대략 최대 5~10MB/초 수신 및 10~20MB/초 송신의 코어 용량을 제공할 수 있습니다.
프리미엄 계층 네임스페이스에 대한 CPU를 구성하는 방법에 대한 자세한 내용은 처리 단위 구성을 참조하세요.
참고 항목
할당량 및 제한에 대한 자세한 내용은 Azure Event Hubs - 할당량 및 제한을 참조하세요.
파티션
Event Hubs는 이벤트 허브로 전송되는 이벤트 시퀀스를 하나 이상의 파티션으로 구성합니다. 최신 이벤트가 도착하면 이 시퀀스의 끝에 추가됩니다.
파티션을 커밋 로그로 생각할 수 있습니다. 파티션은 다음 정보를 포함하는 이벤트 데이터를 보유합니다.
- 이벤트의 본문
- 이벤트를 설명하는 사용자 정의 속성 모음
- 파티션의 오프셋, 스트림 시퀀스의 번호와 같은 메타데이터
- 승인된 서비스 쪽 타임스탬프
파티션 사용의 이점
Event Hubs는 대량의 이벤트를 처리하는 데 도움이 되도록 설계되었으며, 분할은 다음과 같은 두 가지 방면에서 유용합니다.
- Event Hubs는 PaaS 서비스이지만 그 아래에는 실제 현실이 있습니다. 이벤트 순서를 유지하는 로그를 유지 관리하려면 이러한 이벤트가 기본 스토리지와 해당 복제본에 함께 보관되어야 하며 이로 인해 해당 로그에 대한 처리량 한도가 발생합니다. 분할을 사용하면 동일한 이벤트 허브에 여러 병렬 로그를 사용할 수 있으므로 사용 가능한 원시 IO(입력-출력) 처리량 용량이 크게 증가합니다.
- 자체 애플리케이션은 이벤트 허브로 전송되는 이벤트의 볼륨 처리를 유지할 수 있어야 합니다. 복잡할 수 있으며 상당한 규모의 확장된 병렬 처리 용량이 필요합니다. 이벤트를 처리하는 단일 프로세스의 용량이 제한되어 있으므로 여러 프로세스가 필요합니다. 파티션은 솔루션이 이러한 프로세스를 피드하는 동시에 각 이벤트에 명확한 처리 소유자가 있는지 확인하는 방법입니다.
파티션 수
이벤트 허브를 만들 때 파티션 수가 지정됩니다. 1과 각 가격 책정 계층에 대해 허용된 최대 파티션 수 사이여야 합니다. 각 계층에 대한 파티션 수 제한은 이 문서를 참조하세요.
특정 이벤트 허브에서 애플리케이션의 부하가 가장 높을 때는 최소한 필요한 만큼의 파티션을 선택하는 것이 좋습니다. 프리미엄 및 전용 계층 이외의 계층의 경우 이벤트 허브를 만든 후에는 파티션 수를 변경할 수 없습니다. 프리미엄 또는 전용 계층의 이벤트 허브의 경우 만든 후 파티션 수를 늘릴 수 있지만 줄일 수는 없습니다. 이 작업이 완료되면 파티션에 대한 파티션 키 매핑이 변경되어 파티션 전체의 스트림 분포가 변경되므로 애플리케이션에서 이벤트의 상대적인 순서가 중요한 경우에는 이러한 변경을 방지하기 위해 열심히 노력해야 합니다.
파티션 수를 최대 허용 값으로 설정하고 싶겠지만 여러 파티션을 활용할 수 있도록 이벤트 스트림을 구성해야 한다는 점을 항상 유의해야 합니다. 모든 이벤트 또는 소수의 하위 스트림에서 절대 순서를 유지해야 하는 경우 많은 파티션을 활용하지 못할 수 있습니다. 또한 파티션이 많으면 처리가 더 복잡해집니다.
가격 책정과 관련하여 이벤트 허브에 있는 파티션의 수는 중요하지 않습니다. 네임스페이스 또는 전용 클러스터의 가격 책정 단위 수(표준 계층의 경우 TU(처리량 단위), 프리미엄 계층의 경우 PU(처리 단위), 전용 계층의 경우 CU(용량 단위))에 따라 달라집니다. 예를 들어 32개 파티션이 있는 표준 계층의 이벤트 허브 또는 1개 파티션이 있는 이벤트 허브는 네임스페이스가 1TU 용량으로 설정된 경우 정확히 동일한 비용을 발생시킵니다. 또한 파티션 수에 관계없이 네임스페이스의 TU나 PU 또는 전용 클러스터의 CU를 스케일링할 수 있습니다.
파티션은 데이터를 병렬 방식으로 게시하고 사용할 수 있는 데이터 구성 메커니즘입니다. 최적의 규모를 달성하려면 크기 조정 단위(표준 계층의 처리량 단위, 프리미엄 계층의 처리 단위 또는 전용 계층의 용량 단위)와 파티션의 균형을 맞추는 것이 좋습니다. 일반적으로 파티션당 최대 처리량은 1MB/s를 권장합니다. 따라서 파티션 수를 계산하는 방법은 최대 예상 처리량을 1MB/s로 나누는 것입니다. 예를 들어, 사용 사례에 20MB/s가 필요한 경우 최적의 처리량을 달성하려면 최소 20개 이상의 파티션을 선택하는 것이 좋습니다.
그러나 애플리케이션이 특정 파티션에 대한 선호도를 갖는 모델이 있는 경우 파티션 수를 늘리는 것은 유익하지 않습니다. 자세한 내용은 가용성 및 일관성을 참조하세요.
이벤트를 파티션에 매핑
파티션 키를 사용하여 들어오는 이벤트 데이터를 데이터 구성을 위한 특정 파티션으로 맵핑할 수 있습니다. 파티션 키는 Event Hub로 전달된 발신자가 제공하는 값입니다. 이 키는 파티션 할당을 만드는 정적 해싱 기능을 통해 처리됩니다. 이벤트를 게시할 때 파티션 키를 지정하지 않으면 라운드 로빈 할당이 사용됩니다.
이벤트 게시자는 이벤트를 게시하는 파티션이 아니라 파티션 키만 인식합니다. 이렇게 키와 파티션을 분리하면 발신자가 다운스트림 처리에 대해 너무 많이 알 필요가 없습니다. 디바이스 단위 또는 사용자 공유 ID는 좋은 파티션 키가 되지만 지리와 같은 다른 특성은 단일 파티션으로 관련 이벤트를 그룹화하는 데도 사용할 수 있습니다.
파티션 키를 지정하면 관련 이벤트를 동일한 파티션에 함께 유지하고 정확히 도착한 순서대로 유지할 수 있습니다. 파티션 키는 애플리케이션 컨텍스트에서 파생되고 이벤트의 상호 관계를 식별하는 문자열입니다. 파티션 키로 식별되는 이벤트 시퀀스는 스트림입니다. 파티션은 이러한 여러 스트림에 대한 멀티플렉싱 로그 저장소입니다.
참고 항목
이벤트를 파티션으로 직접 보낼 수 있지만, 특히 고가용성이 중요한 경우에는 권장하지 않습니다. 이벤트 허브의 가용성을 파티션 수준으로 다운그레이드합니다. 자세한 내용은 가용성 및 일관성을 참조하세요.
다음 단계
Event Hubs에 대한 자세한 내용은 다음 링크를 참조하세요.