Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как использовать Центры событий Azure для потоковой передачи данных из приложений Apache Kafka без настройки кластера Kafka самостоятельно.
Обзор
Центры событий Azure предоставляет конечную точку Apache Kafka в концентраторе событий, которая позволяет пользователям подключаться к концентратору событий с помощью протокола Kafka. Часто можно использовать конечную точку Центра событий Kafka из приложений без каких-либо изменений кода. Измените только конфигурацию, то есть обновите строку подключения в параметрах конфигурации, чтобы указать конечную точку Kafka, предоставленную вашим центром событий, а не указывать на кластер Kafka. Затем вы можете начать потоковую передачу событий из приложений, использующих протокол Kafka в концентраторы событий, которые эквивалентны разделам Kafka.
Дополнительные сведения о переносе приложений Apache Kafka в Центры событий Azure см. в руководстве по миграции.
Примечание.
- Эта функция поддерживается только на уровнях **стандарт, премиум и выделенном.
- Центры событий для экосистем Apache Kafka поддерживают Apache Kafka версии 1.0 и более поздних версий.
Сопоставление концепций Apache Kafka и Центра событий Azure
Концептуально, Apache Kafka и Центры событий очень похожи. Они оба секционированных журнала, созданные для потоковой передачи данных, в которых клиент управляет частью сохраненного журнала, который он хочет прочитать. В следующей таблице представлены основные понятия между Apache Kafka и Центрами событий.
| Понятие Apache Kafka | Концепция центров событий |
|---|---|
| Кластер | Пространство имен |
| Тема | Центр событий |
| Раздел | Раздел |
| Группа потребителей | Группа потребителей |
| Смещение | Смещение |
Функции Apache Kafka, поддерживаемые в Центрах событий Azure
Kafka Streams
Kafka Streams — это клиентская библиотека для stream analytics, которая входит в проект Apache Kafka с открытым исходным кодом, но отличается от брокера событий Apache Kafka.
Примечание.
Kafka Streams в настоящее время доступен в общедоступной предварительной версии для уровней "Премиум" и "Выделенный".
Центры событий Azure поддерживает клиентская библиотека Kafka Streams с подробными сведениями и понятиями, доступными здесь.
Наиболее распространенная причина, по которой клиенты Центров событий Azure запрашивают поддержку потоков Kafka, заключается в том, что они заинтересованы в продукте "ksqlDB" от Confluent. ksqlDB — это частный проект с общим исходным кодом, который лицензируется таким образом, что ни один из поставщиков SAAS, PAAS, IAAS или других аналогичных веб-служб, которые конкурируют с продуктами или службами Confluent, не может использовать или предлагать поддержку ksqlDB. Практически, если вы используете ksqlDB, необходимо работать либо с Kafka непосредственно, либо использовать облачные предложения Confluent. Условия лицензионного соглашения также могут повлиять на клиентов Azure, предлагающих услуги для цели, исключенной из лицензии.
В автономном режиме и без ksqlDB, Kafka Streams имеют меньше возможностей, чем многие альтернативные фреймворки и службы: большинство из них имеют встроенные потоковые SQL интерфейсы, и все они интегрируются с концентраторами событий Azure сегодня.
- Azure Stream Analytics
- Azure Synapse Analytics (через Event Hubs Capture для захвата данных)
- Azure Databricks
- Apache Samza
- Apache Storm
- Apache Spark
- Apache Flink
- Apache Flink в HDInsight на службе Azure Kubernetes
- Akka Streams
Транзакции Kafka
Примечание.
Транзакции Kafka в настоящее время находятся в общедоступной предварительной версии для уровней “Premium” и “Dedicated”.
Центры событий Azure поддерживает транзакции Kafka. Дополнительные сведения о поддержке и концепциях см. транзакции Apache Kafka.
Сжатие
Примечание.
Сжатие Kafka для Центров событий в настоящее время поддерживается только на уровнях "Премиум" и "Выделенный".
Функция сжатия на стороне клиента в клиентах Apache Kafka экономит вычислительные ресурсы и пропускную способность путем сжатия пакета нескольких сообщений в одно сообщение на стороне производителя и распаковки пакета на стороне потребителя. Брокер Apache Kafka обрабатывает пакет как специальное сообщение.
Разработчики приложений производителя Kafka могут включить сжатие сообщений, задав compression.type свойство. Центры событий Azure в настоящее время поддерживает gzip сжатие.
Compression.type = none | gzip
Хотя эта функция поддерживается только для трафика производителя Apache Kafka и трафика потребителей, потребитель AMQP может использовать сжатый трафик Kafka как распакованные сообщения.
Основные различия между Apache Kafka и Azure Event Hubs
Хотя Apache Kafka — это программное обеспечение, которое обычно требуется установить и затем начать с ним работу, концентраторы событий — это полностью управляемая облачная служба. Вам не нужно вести мониторинг и управлять серверами, дисками, или сетями и задумываться над использованием или настройкой брокеров — эти компоненты просто отсутствуют. Создаете пространство имен, которое является конечной точкой с полностью квалифицированным доменным именем, а затем создаете концентраторы событий (топики) в этом пространстве имен.
Дополнительные сведения о Центрах событий и пространствах имен см. в статье Особенности Центров событий. Выступая в качестве облачной службы, концентраторы событий используют один стабильный виртуальный IP-адрес в качестве конечной точки, поэтому клиентам не нужно знать о брокерах или машинах в кластере. Хотя концентраторы событий реализуют один и тот же протокол, разница заключается в том, что весь трафик Kafka для всех секций прогнозируется через эту конечную точку и не требует доступа к брандмауэру для всех брокеров кластера.
Масштабирование в Центрах событий определяется количеством приобретенных единиц пропускной способности (TU) или единиц обработки. При включении функции автоматического расширения для пространства имен стандартного уровня Event Hubs автоматически масштабирует единицы пропускной способности при достижении предельной пропускной способности. Эта функция также работает с поддержкой протокола Apache Kafka. Для пространства имен уровня "Премиум" можно увеличить количество единиц обработки, назначенных пространству имен.
Apache Kafka — верное решение для вашей рабочей нагрузки?
Если вы пришли из сферы разработки приложений, использующих Apache Kafka, также полезно понять, что Событийные концентраторы Azure являются частью набора служб, который также включает Azure Service Bus и Azure Event Grid.
Некоторые поставщики коммерческих дистрибутивов Apache Kafka могут утверждать, что Apache Kafka является универсальным решением для всех ваших потребностей в платформах обмена сообщениями, однако на самом деле Apache Kafka не поддерживает, например, шаблон очереди конкурирующих потребителей. Он не поддерживает публикацию-подписку на уровне, который позволяет подписчикам получать доступ к входящим сообщениям на основе правил, вычисляемых сервером, отличных от простых смещений. Он не имеет средств для отслеживания жизненного цикла задания, инициированного сообщением, или для перенаправления ошибочных сообщений в очередь недоставленных сообщений. Все эти функции являются основой для многих сценариев корпоративного обмена сообщениями.
Сведения о различиях между шаблонами и тем, какой шаблон лучше подойдет для конкретной службы, см. в руководстве по использованию параметров асинхронного обмена сообщениями в Azure. Как пользователь Apache Kafka, вы можете найти, что пути связи, которые вы поняли с помощью Kafka, можно реализовать с гораздо менее базовой сложностью и еще более мощными возможностями с помощью сетки событий или служебной шины.
Если вам нужны специальные функции Apache Kafka, которые недоступны в концентраторах событий для интерфейса Apache Kafka, или если шаблон реализации превышает квоты Центров событий, можно также запустить собственный кластер Apache Kafka в Azure HDInsight.
Безопасность и проверка подлинности
Каждый раз, когда вы публикуете или используете события из Центров событий для Kafka, клиент пытается получить доступ к ресурсам Центров событий. Необходимо обеспечить доступ к ресурсам через авторизованную сущность. При использовании протокола Apache Kafka с клиентами настройте конфигурацию для проверки подлинности и шифрования с помощью механизмов SASL. При использовании Центров событий для Kafka требуется шифрование TLS (так как все данные во время передачи с концентраторами событий шифруются TLS). В файле конфигурации можно указать параметр SASL_SSL.
Центры событий Azure предоставляют несколько вариантов авторизации доступа к защищенным ресурсам:
- OAuth 2.0
- Подпись общего доступа (SAS)
OAuth 2.0
Центры событий интегрируются с Microsoft Entra ID, который предоставляет централизованный сервер авторизации, совместимый с OAuth 2.0. С помощью идентификатора Microsoft Entra можно использовать управление доступом на основе ролей Azure (Azure RBAC) для предоставления детализированных разрешений идентификациями клиентов. Используйте эту функцию с клиентами Kafka, указав SASL_SSL для протокола и OAUTHBEARER для механизма. Дополнительные сведения о ролях и уровнях Azure для области доступа см. в статье "Авторизация доступа с помощью идентификатора Microsoft Entra".
bootstrap.servers=NAMESPACENAME.servicebus.windows.net:9093
security.protocol=SASL_SSL
sasl.mechanism=OAUTHBEARER
sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;
sasl.login.callback.handler.class=CustomAuthenticateCallbackHandler
Примечание.
Эти свойства конфигурации предназначены для языка программирования Java. Для примеров использования OAuth с Event Hubs для Kafka на различных языках программирования, см. примеры на сайте GitHub.
Подписанный ключ доступа (SAS)
Центры событий также предоставляют Подписи для общего доступа (SAS) для делегированного доступа к ресурсам Kafka в центрах событий. Авторизация доступа с помощью механизма на основе маркеров OAuth 2.0 обеспечивает более высокую безопасность и простоту использования, чем в случае использования SAS. Встроенные роли также могут устранить необходимость в авторизации на основе ACL, которую необходимо поддерживать и управлять. Эту функцию можно использовать с клиентами Kafka, указав SASL_SSL в качестве протокола и PLAIN в качестве механизма.
bootstrap.servers=NAMESPACENAME.servicebus.windows.net:9093
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="{YOUR.EVENTHUBS.CONNECTION.STRING}";
Внимание
Замените {YOUR.EVENTHUBS.CONNECTION.STRING} строкой подключения для пространства имен ваших Центров событий. Инструкции по получению строки подключения см. в статье Получение строки подключения Центров событий. Пример конфигурации см. здесь: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";
Примечание.
При использовании проверки подлинности SAS с клиентами Kafka установленные подключения не отключаются при повторном формировании ключа SAS.
Примечание.
Созданные токены общей подписи доступа не поддерживаются при использовании центров событий в конечной точке Apache Kafka.
Примеры
Пошаговые инструкции по созданию концентратора событий и доступу к нему с помощью SAS или OAuth см. в статье Краткое руководство: потоковая передача данных с концентраторами событий с помощью протокола Kafka.
Другие функции Центра событий Azure
Функция Центров событий для Apache Kafka — это один из трех протоколов, доступных одновременно на Центры событий Azure вместе с HTTP и AMQP. Вы можете записывать данные, используя любой из этих протоколов, и читать с помощью другого, чтобы ваши текущие продюсеры Apache Kafka могли продолжить публикацию через Apache Kafka, но читатели могли бы воспользоваться преимуществами встроенной интеграции с интерфейсом AMQP Центра событий, например Azure Stream Analytics или Функции Azure. И наоборот: вы можете легко интегрировать Центры событий Azure в сети маршрутизации AMQP в качестве целевой конечной точки, и в то же время считывать данные, используя средства интеграции Apache Kafka.
Кроме того, такие функции Центров событий, как Сбор, позволяют очень экономично выполнять долгосрочную архивацию с помощью хранилища BLOB-объектов Azure и Azure Data Lake Storage, а геоаварийное восстановление также работает с функцией "Центры событий для Kafka".
Идемпотентность
Центры событий Azure для Apache Kafka поддерживают как идемпотентных производителей, так и идемпотентных потребителей.
Одним из основных принципов Центра событий Azure является концепция доставки по крайней мере однократно. Такой подход гарантирует, что события всегда доставляются. Это также означает, что потребители могут получать события более одного раза, даже неоднократно. По этой причине важно, чтобы потребитель поддерживал паттерн идемпотентного потребителя.
Связанный контент
В этой статье представлены центры событий для Kafka. См. сведения в руководстве для разработчиков Apache Kafka по Центрам событий Azure.
Пошаговые инструкции по созданию концентратора событий и доступу к нему с помощью SAS или OAuth см. в статье Краткое руководство: потоковая передача данных с концентраторами событий с помощью протокола Kafka.
Кроме того, см . примеры OAuth на сайте GitHub.