Масштабирование с помощью концентраторов событийScaling with Event Hubs

Существует два фактора, которые влияют на масштабирование с помощью концентраторов событий.There are two factors which influence scaling with Event Hubs.

  • Единицы пропускной способностиThroughput units
  • СекцииPartitions

Единицы пропускной способностиThroughput units

Пропускная способность концентраторов событий управляется единицами пропускной способности.The throughput capacity of Event Hubs is controlled by throughput units. Единицы пропускной способности — это предварительно приобретенные единицы емкости.Throughput units are pre-purchased units of capacity. Одна пропускная способность позволяет:A single throughput lets you:

  • Входящий трафик: до 1 МБ в секунду либо 1000 событий в секунду (в зависимости от того, что произойдет раньше).Ingress: Up to 1 MB per second or 1000 events per second (whichever comes first).
  • Исходящий трафик: до 2 МБ в секунду или 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.You can manage throughput units on the Scale blade of the namespaces in the Azure portal. Это также можно реализовать программным способом с помощью интерфейсов 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. Для пространства имен Центров событий можно приобрести до 20 единиц пропускной способности (этот объем можно распределить между всеми концентраторами событий в пространстве имен).Up to 20 throughput units can be purchased for an Event Hubs namespace and are shared across all event hubs in that namespace.

Функция автоматического расширения Центров событий автоматически масштабирует число единиц пропускной способности в соответствии с потребностями.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.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 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.

Секция — это упорядоченная последовательность событий, хранящаяся в концентраторе событий.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 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.

Центры событий

Количество секций определяется во время создания. Рабочий диапазон — от 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. Поэтому количество секций в концентраторе событий непосредственно связано с предполагаемым числом параллельных модулей чтения.The number of partitions in an event hub directly relates to the number of concurrent readers you expect to have. Но вы можете увеличить число секций, превысив максимальное ограничение (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, оставив оставшиеся 31 секцию избыточными.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.

Дополнительные сведения о секциях и компромиссе между доступностью и надежностью см. в статье Руководство по программированию Центров событий и Доступность и согласованность в Центрах событий.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. Ключ секции — это указываемое отправителем значение, передаваемое в концентратор событий.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. Уникальное удостоверение устройства или пользователя является хорошим ключом секции, но другие атрибуты, например географическое положение, можно также использовать для группировки связанных событий в одну секцию.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

Дополнительные сведения о Центрах событий см. в следующих источниках:You can learn more about Event Hubs by visiting the following links: