Можем ли мы использовать единый центр событий Azure для разных клиентов без ущерба для других данных клиентов?

#c# #azure #azure-eventhub #azure-eventgrid

Вопрос:

В моей базе данных COSMOS Db хранятся данные разных клиентов. Мне нужно передать эти данные в центр событий Azure, и на конце получателя у меня есть разные потребители, которые используют свои собственные данные. Следует ли использовать один концентратор событий Azure для всех клиентов или создать несколько концентраторов событий? Пожалуйста, предложите мне наилучший подход для достижения этой цели.

Ответ №1:

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

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

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

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

Или, как предлагает Анупам Чанд, вы можете передавать данные клиентам, используя что-то вроде сетки событий.

Комментарии:

1. Спасибо за быстрый ответ. В настоящее время я не ищу мультитенантную систему, мой сценарий таков, как будто у меня есть журналы, соответствующие разным клиентам, а идентификатор клиента находится в сообщении журнала json. Теперь, как только я отправлю этот журнал в центр событий, я хочу, чтобы каждый клиент мог получать только свои журналы из центра событий.

2. Вместо того, чтобы полагаться на то, что клиенты будут получать свои собственные журналы, почему бы не передать их им? В этом случае вы должны использовать что-то вроде Eventgrid. Затем вы можете отфильтровать соответствующие данные клиентов и на основе некоторых свойств передать им только эти данные.

3. @manishraghu, называете ли вы это арендатором или клиентом, не меняет того факта, что это не может быть сделано так, как вам нравится. Но я добавил несколько вариантов к своему ответу

4. @AnupamChand действительно, это тоже возможно.

5. @AnupamChand Я работаю над интеграцией с Logrhythm, которая поддерживает концентратор событий. поэтому у меня есть несколько клиентов, у которых установлен SIEM для извлечения данных из концентратора событий