Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье объясняется, как использовать Центры событий 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 в настоящее время доступны для публичного предварительного просмотра в уровнях "Премиум" и "Выделенный".
Центры событий Azure поддерживает транзакции 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 и службу Сетка событий Azure.
Хотя некоторые поставщики коммерческих дистрибутивов Apache Kafka могут заявить, что Apache Kafka является единым решением, отвечающим всем потребностям платформы обмена сообщениями, реальность заключается в том, что Apache Kafka не реализует, например, шаблон очереди конкурирующих потребителей, не имеет поддержки модели Публикация и подписка на уровне, который дает подписчикам доступ к входящим сообщениям на основе правил, обрабатываемых на сервере вместо простых смещений, и не имеет средств для отслеживания жизненного цикла задания, инициированного сообщением или фильтрации ошибочных сообщений в очередь недоставленной почты. Все эти функции являются ключевыми для множества сценариев корпоративного обмена сообщениями.
Сведения о различиях между шаблонами и тем, какой шаблон лучше подойдет для конкретной службы, см. в руководстве по использованию параметров асинхронного обмена сообщениями в Azure. Как пользователь Apache Kafka, вы можете обнаружить, что пути связи, которые вы реализовали с помощью Kafka, можно реализовать с меньшей основной сложностью и при этом с более мощными возможностями, используя либо Event Grid, либо Service Bus.
Если вам нужны специальные функции 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 ID можно использовать управление доступом на основе ролей 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.