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

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

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

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

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

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

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

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

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

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

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

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

Блоки обработки

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

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

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

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

Примечание.

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

Секции

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сопоставление событий с секциями

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

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

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

Примечание.

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

Следующие шаги

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