2014-12-25 2 views
1

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

Дополнительная пропускная способность = больше мощности при проглатывании.

Но на стороне приема/потребления вы можете создать до 32 приемников (поскольку мы можем создать 32 раздела и один раздел может быть использован одним приемником).

На основании вышеизложенного, если одно сообщение принимает 100 milisencond для обработки, один потребитель может обрабатывать 10 сообщений в секунду, а 32 пользователя могут обрабатывать 32 * 10 = 320 сообщений в секунду.

Как я могу заставить мой приемник потреблять больше сообщений (например, 5-10 тыс. За каждый день).

1) Либо я должен обрабатывать сообщение асинхронно внутри ProcessEventsAsync. Но в этом случае я не смог бы поддерживать порядок.

2) Или я должен попросить Microsoft разрешить мне создавать дополнительные разделы.

Пожалуйста, советы

+0

Hi @Pragmatic, с 32 разделами и 10 TU, я мог получить 6 сообщений о недостатках за 10 минут. заметил, что при 20 ТУ он сократился до 5 мин. но увеличение TU может в конечном итоге платить больше денег. Если вы решили это, то, пожалуйста, поделитесь своими комментариями. так как я хотел бы получить все 6 недостающих сообщений для обработки через 1 минуту или меньше. –

ответ

5

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

Вы правы, что ваш блок параллелизма потребления является разделом. Если ваши потребители могут делать только 10/секунд по порядку или даже 100 секунд в секунду, тогда вам понадобится больше разделов, чтобы потреблять миллионы событий. В то время как 100 мс/событие, конечно, кажется мне медленным, и я думаю, что вы должны искать там оптимизации (т. Е. Работать на ферме, которую вам не нужно ждать, совершать реже и т. Д.), Вы достигнете необходимости в большем количестве разделов по шкале.

Некоторые вещи, о которых нужно помнить: 32 раздела дают вам только 32 Мб/с входа и 64 Мбит/с выхода. Оба эти фактора имеют значение, поскольку пропускная способность выхода распределяется между всеми группами потребителей, которые вы используете. Поэтому, если у вас есть 4 группы пользователей, которые читают данные (по 16 Мб/с), вам потребуется в два раза больше разделов (или, по крайней мере, пропускных единиц) для ввода, поскольку вы основывались бы исключительно на доступе к данным (потому что иначе вы бы отстали) ,

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

+0

, если у вас уже есть и концентратор событий, и вам необходимо улучшить скорость потребления - еще одно решение для рассмотрения - это концентраторы событий в канале (загрузка данных из загруженного раздела EventHub в другой eventHub), а затем потребление из новых 32 разделов (которые разделены на один раздел). – Sreeram

+0

Хотя комментарий @Sreeram, вероятно, является вашим единственным реальным подходом к существующему центру событий, недостатком этого является то, что вы в конечном итоге платите дважды за каждое событие ($ 0,028/миллион). Потенциал роста вы также получаете еще один набор из 5 (4 для безопасности) потребителей на раздел, который является ограничением, которое я не заметил в своем ответе. – cacsar