Поделиться через


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

Существует два фактора, влияющие на масштабирование с помощью Центров событий.

  • Единицы пропускной способности (уровень "Стандартный") или блоки обработки (уровень "Премиум")
  • Разделы

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

Пропускная способность концентраторов событий контролируется единицами пропускной способности. Единицы пропускной способности — это предварительно приобретенные единицы емкости. Одна единица пропускной способности позволяет:

  • Входящий трафик: до 1 МБ в секунду или 1000 событий в секунду (в зависимости от того, что происходит первым).
  • Исходящий трафик: до 2 МБ в секунду или 4096 событий в секунду.

Помимо емкости приобретенных единиц пропускной способности, входящий поток ограничивается, а Event Hubs генерируют исключение EventHubsException с причиной ServiceBusy. Исходящий трафик не создает исключения, связанные с ограничениями пропускной способности, но по-прежнему ограничивается емкостью приобретенных единиц пропускной способности. Если вы получаете исключения по скорости публикации или ожидаете увеличения исходящего трафика, обязательно проверьте количество единиц пропускной способности, приобретенных для пространства имен. Вы можете управлять единицами пропускной способности на странице масштабирования пространств имен в портале Azure. Вы также можете управлять единицами пропускной способности программным способом через API Центров событий.

Единицы пропускной способности предварительно оплачиваются и учитываются по часам. После приобретения единицы пропускной способности тарифицируются минимум за один час. Для пространства имен Центров событий можно приобрести до 40 единиц пропускной способности, которые распределяются между всеми концентраторами событий в этом пространстве имен. Общая емкость входящего трафика и исходящего трафика этих единиц пропускной способности также предоставляется всем секциям и потребителям в каждом концентраторе событий, что означает, что несколько потребителей, читающих из одной секции, должны совместно использовать доступную пропускную способность.

Функция автоматического расширения Центров событий автоматически масштабирует число единиц пропускной способности в соответствии с потребностями. Увеличение единиц пропускной способности предотвращает сценарии регулирования, в которых:

  • скорости входящего трафика данных превышают установленные единицы пропускной способности;
  • скорости запросов исходящего трафика данных превышают установленные единицы пропускной способности.

Служба "Центры событий" увеличивает пропускную способность, когда загрузка превышает минимальное пороговое значение, при этом ни один запрос не возвращается с ошибками ServerBusy.

Дополнительные сведения о функции автоинфляции см. в разделе "Автоматическое масштабирование единиц пропускной способности".

Процессорные блоки

Центры событий ценовой категории «Премиум» обеспечивают превосходную производительность и лучшую изоляцию в управляемой многопользовательской среде PaaS. Ресурсы ценовой категории «Премиум» изолированы на уровне ЦП и памяти, поэтому рабочая нагрузка каждого клиента выполняется изолированно. Этот контейнер ресурса называется блоком обработки (PU). Вы можете приобрести 1, 2, 4, 6, 8, 10, 12 или 16 единиц обработки данных для каждого пространства имен Центров событий Premium.

Количество, которое вы можете принимать и передавать с помощью устройства обработки, зависит от различных факторов, таких как ваши производители, потребители, скорость, с которой вы принимаете и обрабатываете, и многое другое.

Например, пространство имен Event Hubs Premium с одним обработающим блоком и одним концентратором событий (100 разделов) может примерно предложить базовую емкость ~5–10 МБ/с входящего трафика и 10–20 МБ/с исходящего трафика для рабочих нагрузок AMQP или Kafka.

Сведения о настройке блоков обработки для пространства имен уровня "Премиум" см. в статье Настройка блоков обработки.

Примечание.

Дополнительные сведения о квотах и ограничениях см. в статье Концентраторы событий Azure — квоты и ограничения.

Перегородки

Центры событий упорядочивают последовательности событий, отправленных в концентратор событий, в одну или несколько секций. По мере поступления новых событий они добавляются в конец этой последовательности.

Изображение, показывающее концентратор событий с несколькими секциями.

Раздел можно рассматривать как журнал фиксации. Разделы содержат данные о событиях, включающие следующие сведения:

  • Содержимое события
  • Определяемый пользователем контейнер свойств, описывающий событие
  • Метаданные, такие как смещение в разделе, номер в последовательности потока
  • Метка времени на стороне службы, в которой она была принята

Схема, на которой показана последовательность событий (от старых до более новых).

Преимущества использования секций

Служба "Центры событий" предназначена для обработки больших объемов событий, а секционирование помогает при этом двумя способами.

  • Несмотря на то, что Центры событий — это служба PaaS, под ней есть физическая реальность. Сохранение журнала, сохраняющего порядок событий, требует, чтобы эти события хранились вместе в базовом хранилище и ее репликах, что приводит к потолку пропускной способности для такого журнала. Секционирование позволяет использовать несколько параллельных журналов для одного концентратора событий и, таким образом, увеличивает доступную пропускную способность ввода-вывода.
  • Ваши приложения должны справляться с обработкой объема событий, отправляемых в концентратор событий. Это может быть сложно и требует значительных ресурсов для масштабной, параллельной обработки. Емкость одного процесса обработки событий ограничена, поэтому вам требуется несколько процессов. Разделы — это способ, как ваше решение распределяет эти процессы и при этом заботится о том, чтобы у каждого события был четкий ответственный за обработку.

Количество разделов

Количество разделов задается при создании концентратора событий. Оно должно быть между одним и максимальным числом секций, разрешенным для каждой ценовой категории. Для получения информации о лимите количества разделов для каждого уровня см. в этой статье.

Рекомендуем выбрать как минимум столько разделов, сколько потребуется при пиковой нагрузке вашего приложения для данного концентратора событий. Для уровней, отличных от уровня "Премиум" и выделенных уровней, нельзя изменить число секций для концентратора событий после его создания. Для концентратора событий уровня "Премиум" или "Выделенный" после его создания можно увеличить число разделов, но их нельзя уменьшить. Распределение потоков по разделам изменится после завершения сопоставления ключей секций с разделами, поэтому следует избегать таких изменений, если относительный порядок событий важен для вашего приложения.

Установить для количества секций максимально допустимое значение может быть заманчиво, но всегда помните, что ваши потоки событий должны быть структурированы так, чтобы вы действительно могли воспользоваться преимуществами нескольких секций. Если требуется абсолютное сохранение порядка во всех событиях или только в небольшом количестве подпотоков, вам может не удасться воспользоваться преимуществами множества разделов. Кроме того, наличие большого количества разделов усложняет обработку.

Когда речь идет о ценообразовании, не важно, сколько разделов находится в концентраторе событий. Это зависит от количества единиц ценообразования (единиц пропускной способности для стандартного уровня, единиц обработки для уровня "Премиум" и единиц мощности для уровня "Выделенный") для пространства имен или выделенного кластера. Например, концентратор событий стандартного уровня с 32 секциями или с одной секцией влечет за собой одинаковую стоимость, если пространство имен имеет вместимость в один TU. Кроме того, можно масштабировать единицы транзакций (TUs) или единицы процесса (PUs) в вашем пространстве имен или единицы вычислительной мощности (CUs) в выделенном кластере независимо от количества разделов.

Раздел — это механизм организации данных, который обеспечивает параллельную публикацию и использование. Хотя она поддерживает параллельную обработку и масштабирование, общая емкость остается ограниченной выделением пространства имен. Рекомендуется сбалансировать единицы масштабирования (единицы пропускной способности для стандартного уровня, единицы обработки для уровня "Премиум" или единицы емкости для выделенного уровня) и секции для достижения оптимального масштабирования. Как правило, рекомендуется использовать максимальную пропускную способность в 1 МБ/с на секцию. Таким образом, общее правило для вычисления количества разделов — делить максимальную ожидаемую пропускную способность на 1 МБ/с. Например, если для вашего варианта использования требуется 20 МБ/с, рекомендуется выбрать по крайней мере 20 секций для достижения оптимальной пропускной способности.

Однако если у вас есть модель, в которой приложение имеет сходство с определенной секцией, увеличение числа секций не является полезным. Дополнительные сведения см. в разделе Доступность и согласованность.

Сопоставление событий с разделами

Вы можете использовать ключ раздела, чтобы сопоставлять входные данные событий с определенными разделами для организации данных. Ключ секции — это указываемое отправителем значение, передаваемое в концентратор событий. Он обрабатывается через статическую хэш-функцию, которая создает распределение разделов. Если при публикации события не указать ключ раздела, используется назначение по принципу циклического перебора.

Издателю событий известен только ключ раздела, но не сам раздел, в который публикуются события. Благодаря разделению ключа и раздела отправителю не нужно знать слишком много о последующей обработке. Уникальный идентификатор устройства или пользователя является хорошим ключом раздела, но другие атрибуты, такие как географическое положение, также можно использовать для объединения связанных событий в один раздел.

Указание ключа раздела позволяет хранить связанные события в одном и том же разделе и в точно таком же порядке, в котором они прибыли. Ключ секции — это строка, которая является производной от контекста приложения и определяет взаимосвязь событий. Последовательность событий, определяемых ключом секции, называется потоком. Секция — это мультиплексное хранилище журналов для множества таких потоков.

Примечание.

Хотя вы можете отправлять события непосредственно в разделы, мы не рекомендуем этого делать, особенно когда вам важна высокая доступность. Это понижает доступность концентратора событий до уровня раздела. Дополнительные сведения см. в статье Доступность и согласованность.

Дополнительные сведения о Центрах событий см. в следующих источниках: