Event Hubs를 사용 하 여 크기 조정Scaling with Event Hubs

Event Hubs를 사용 하 여 크기 조정에 영향을 줄 수 있는 두 가지 요인이 있습니다.There are two factors which influence scaling with Event Hubs.

  • 처리량 단위Throughput units
  • 파티션Partitions

처리량 단위Throughput units

Event Hubs의 처리량 용량은 처리량 단위로 제어됩니다.The throughput capacity of Event Hubs is controlled by throughput units. 처리량 단위는 미리 구입한 용량의 단위입니다.Throughput units are pre-purchased units of capacity. 단일 처리량을 수 있습니다.A single throughput lets you:

  • 수신: 초당 최대 1MB 또는 초당 1,000회 이벤트(둘 중 빠른 쪽 적용)Ingress: Up to 1 MB per second or 1000 events per second (whichever comes first).
  • 송신: 초당 최대 2MB 또는 4096개의 이벤트Egress: Up to 2 MB per second or 4096 events per second.

구입한 처리량 단위의 용량을 초과하면 수신이 제한되며 ServerBusyException이 반환됩니다.Beyond the capacity of the purchased throughput units, ingress is throttled and a ServerBusyException is returned. 송신은 제한 예외를 생성하지 않지만 구입한 처리량 단위의 용량으로 제한됩니다.Egress does not produce throttling exceptions, but is still limited to the capacity of the purchased throughput units. 게시 속도 예외를 수신하거나 더 높은 송신을 예상하는 경우 네임스페이스에 대해 구입한 처리량 단위의 수를 확인해야 합니다.If you receive publishing rate exceptions or are expecting to see higher egress, be sure to check how many throughput units you have purchased for the namespace. Azure Portal에서 네임스페이스의 크기 조정 블레이드에서 처리량 단위를 관리할 수 있습니다.You can manage throughput units on the Scale blade of the namespaces in the Azure portal. Event Hubs API를 사용하여 프로그래밍 방식으로 처리량 단위를 관리할 수도 있습니다.You can also manage throughput units programmatically using the Event Hubs APIs.

처리량 단위는 미리 구입하는 방식이며 시간당 요금이 청구됩니다.Throughput units are pre-purchased and are billed per hour. 구입하면, 처리량 단위는 최소 한시간으로 청구됩니다.Once purchased, throughput units are billed for a minimum of one hour. Event Hubs 네임스페이스에 대해 최대 20개의 처리량 단위를 구입할 수 있으며, 네임스페이스의 모든 Event Hubs에서 공유할 수 있습니다.Up to 20 throughput units can be purchased for an Event Hubs namespace and are shared across all event hubs in that namespace.

Event Hubs의 자동 확장 기능은 필요한 사용량에 맞게 처리량 단위 수를 증가하여 자동으로 확장합니다.The Auto-inflate feature of Event Hubs automatically scales up by increasing the number of throughput units, to meet usage needs. 처리량 단위를 늘리면 다음과 같은 상황에서 제한 시나리오를 예방할 수 있습니다.Increasing throughput units prevents throttling scenarios, in which:

  • 데이터 수신 속도가 설정된 처리량 단위를 초과하는 경우.Data ingress rates exceed set throughput units.
  • 데이터 송신 요청 속도가 설정된 처리량 단위를 초과하는 경우.Data egress request rates exceed set throughput units.

ServerBusy 오류로 인한 요청 실패 없이 부하가 최소 임계값을 초과하면 Event Hubs 서비스는 처리량을 높입니다.The Event Hubs service increases the throughput when load increases beyond the minimum threshold, without any requests failing with ServerBusy errors.

에 대 한 자세한 내용은 자동 팽창 기능을 참조 하십시오 처리량 단위 자동으로입니다.For more information about the auto-inflate feature, see Automatically scale throughput units.

파티션Partitions

Event Hubs는 각 소비자만이 특정 하위 집합, 파티션 또는 메시지 스트림을 읽는 파티션된 소비자 패턴을 통해 메시지 스트리밍을 제공합니다.Event Hubs provides message streaming through a partitioned consumer pattern in which each consumer only reads a specific subset, or partition, of the message stream. 이 패턴은 이벤트 처리를 위한 가로 눈금을 사용하며 큐 및 항목에 사용할 수 없는 기타 스트림 중심 기능을 제공합니다.This pattern enables horizontal scale for event processing and provides other stream-focused features that are unavailable in queues and topics.

파티션은 Event Hub에서 보유하는 순서가 지정된 이벤트 시퀀스입니다.A partition is an ordered sequence of events that is held in an event hub. 최신 이벤트가 도착하면 이 시퀀스의 끝에 추가됩니다.As newer events arrive, they are added to the end of this sequence. 파티션을 "커밋 로그"로 생각할 수 있습니다.A partition can be thought of as a "commit log."

Event Hubs

Event Hubs는 Event Hub의 모든 파티션에 적용되도록 구성된 보존 시간에 대한 데이터를 유지합니다.Event Hubs retains data for a configured retention time that applies across all partitions in the event hub. 시간 단위로 이벤트가 만료됩니다. 명시적으로 삭제할 수 없습니다.Events expire on a time basis; you cannot explicitly delete them. 파티션은 독립적이며 자체 데이터 시퀀스를 포함하기 때문에 종종 다른 속도로 증가합니다.Because partitions are independent and contain their own sequence of data, they often grow at different rates.

Event Hubs

파티션 수는 만들 때 지정되며 2와 32 사이여야 합니다.The number of partitions is specified at creation and must be between 2 and 32. 파티션 수는 변경할 수 없으므로 파티션 수를 설정할 때 장기적인 규모를 고려해야 합니다.The partition count is not changeable, so you should consider long-term scale when setting partition count. 파티션은 애플리케이션을 사용하는 데 필요한 다운스트림 병렬 처리와 관련된 데이터 구성 메커니즘입니다.Partitions are a data organization mechanism that relates to the downstream parallelism required in consuming applications. Event Hub의 파티션 수는 예상되는 동시 판독기의 수와 직접적으로 관련이 있습니다.The number of partitions in an event hub directly relates to the number of concurrent readers you expect to have. Event Hubs 팀에 문의하여 32개를 초과하는 파티션 수를 늘릴 수 있습니다.You can increase the number of partitions beyond 32 by contacting the Event Hubs team.

만들 때 가장 높은 값 (32)으로 설정 해야 할 수 있습니다.You may want to set it to be the highest possible value, which is 32, at the time of creation. 두 개 이상의 파티션이 있는 경우에는 두 개 이상의 파티션이 중복 된 상태를 유지 32 하도록 발신자를 구성 하지 않는 한, 순서를 유지 하지 않고 여러 파티션으로 이벤트를 보냅니다.Remember that having more than one partition will result in events sent to multiple partitions without retaining the order, unless you configure senders to only send to a single partition out of the 32 leaving the remaining 31 partitions redundant. 이전 경우에는 모든 32 파티션에서 이벤트를 읽어야 합니다.In the former case, you will have to read events across all 32 partitions. 후자의 경우에는 이벤트 프로세서 호스트에서 수행 해야 하는 추가 구성에 대 한 명확한 추가 비용이 없습니다.In the latter case, there is no obvious additional cost apart from the extra configuration you have to make on Event Processor Host.

파티션은 식별 가능하고 직접 보낼 수 있지만 파티션으로 직접 보내는 방법은 권장하지 않습니다.While partitions are identifiable and can be sent to directly, sending directly to a partition is not recommended. 대신 이벤트 게시자 섹션에서 도입 된 더 높은 수준의 구문을 사용할 수 있습니다.Instead, you can use higher level constructs introduced in the Event publishers section.

파티션은 이벤트 본문, 사용자 정의 속성 모음 및 파티션의 오프셋과 스트림 시퀀스의 번호와 같은 메타데이터를 포함하는 이벤트 데이터 시퀀스로 채워집니다.Partitions are filled with a sequence of event data that contains the body of the event, a user-defined property bag, and metadata such as its offset in the partition and its number in the stream sequence.

최적의 규모를 얻기 위해 1:1 처리량 단위와 파티션 간에 균형을 유지 하는 것이 좋습니다.We recommend that you balance 1:1 throughput units and partitions to achieve optimal scale. 단일 파티션에는 최대 하나의 처리량 단위에 대 한 수신 및 송신이 보장 됩니다.A single partition has a guaranteed ingress and egress of up to one throughput unit. 파티션에서 처리량을 높일 수는 있지만 성능이 보장 되지는 않습니다.While you may be able to achieve higher throughput on a partition, performance is not guaranteed. 따라서 이벤트 허브의 파티션 수는 처리량 단위 수보다 크거나 같은 것이 좋습니다.This is why we strongly recommend that the number of partitions in an event hub be greater than or equal to the number of throughput units.

필요한 총 처리량을 고려 하 여 필요한 처리량 단위 수와 최소 파티션 수를 알고 있어야 하는 파티션 수는 얼마 인가요?Given the total throughput you plan on needing, you know the number of throughput units you require and the minimum number of partitions, but how many partitions should you have? 원하는 다운스트림 병렬 처리와 향후 처리량 요구 사항에 따라 파티션 수를 선택 합니다.Choose number of partitions based on the downstream parallelism you want to achieve as well as your future throughput needs. 이벤트 허브 내에 있는 파티션 수에는 요금이 부과 되지 않습니다.There is no charge for the number of partitions you have within an Event Hub.

파티션 및 가용성과 안정성 간의 균형에 대한 자세한 내용은 Event Hubs 프로그래밍 가이드Event Hubs의 가용성 및 일관성 문서를 참조하세요.For more information about partitions and the trade-off between availability and reliability, see the Event Hubs programming guide and the Availability and consistency in Event Hubs article.

파티션 키Partition key

파티션 키를 사용하여 들어오는 이벤트 데이터를 데이터 구성을 위한 특정 파티션에 매핑할 수 있습니다.You can use a partition key to map incoming event data into specific partitions for the purpose of data organization. 파티션 키는 Event Hub로 전달된 발신자가 제공하는 값입니다.The partition key is a sender-supplied value passed into an event hub. 이 키는 파티션 할당을 만드는 정적 해싱 기능을 통해 처리됩니다.It is processed through a static hashing function, which creates the partition assignment. 이벤트를 게시할 때 파티션 키를 지정하지 않으면 라운드 로빈 할당이 사용됩니다.If you don't specify a partition key when publishing an event, a round-robin assignment is used.

이벤트 게시자는 이벤트를 게시하는 파티션이 아니라 파티션 키만 인식합니다.The event publisher is only aware of its partition key, not the partition to which the events are published. 이렇게 키와 파티션을 분리하면 발신자가 다운스트림 처리에 대해 너무 많이 알 필요가 없습니다.This decoupling of key and partition insulates the sender from needing to know too much about the downstream processing. 디바이스 단위 또는 사용자 공유 ID는 좋은 파티션 키가 되지만 지리와 같은 다른 특성은 단일 파티션으로 관련 이벤트를 그룹화하는 데도 사용할 수 있습니다.A per-device or user unique identity makes a good partition key, but other attributes such as geography can also be used to group related events into a single partition.

다음 단계Next steps

Event Hubs에 대한 자세한 내용은 다음 링크를 참조하세요.You can learn more about Event Hubs by visiting the following links: