Что такое Центры событий Azure для Apache Kafka
В этой статье объясняется, как использовать Центры событий Azure для потоковой передачи данных из приложений Apache Kafka без настройки кластера Kafka самостоятельно.
Примечание.
Эта функция поддерживается только на стандартных , премиум и выделенных уровнях.
Обзор
Центры событий Azure предоставляет конечную точку Apache Kafka в концентраторе событий, которая позволяет пользователям подключаться к концентратору событий с помощью протокола Kafka. Часто можно использовать конечную точку Центра событий Kafka из приложений без каких-либо изменений кода. Измените только конфигурацию, то есть обновите строка подключения в конфигурациях, чтобы указать конечную точку Kafka, предоставленную центром событий, а не указывать на кластер Kafka. Затем вы можете начать потоковую передачу событий из приложений, использующих протокол Kafka в концентраторы событий, которые эквивалентны разделам Kafka.
Дополнительные сведения о переносе приложений Kafka в Центры событий Azure см. в руководстве по миграции.
Примечание.
Центры событий для экосистем Kafka поддерживают Apache Kafka версии 1.0 и более поздних версий.
Сопоставление концепций Apache Kafka и Центра событий Azure
Концептуально, Kafka и Центры событий очень похожи. Они оба секционированных журнала, созданные для потоковой передачи данных, в которых клиент управляет частью сохраненного журнала, который он хочет прочитать. В следующей таблице показано составление понятий Kafka и Центров событий.
Понятия Kafka | Понятия Центров событий |
---|---|
Кластер | Пространство имен |
Раздел | Центр событий |
Секция | Секция |
Группа потребителей | Группа потребителей |
Смещение | Смещение |
Функции Apache Kafka, поддерживаемые в Центры событий Azure
потоки Kafka.
Примечание.
Kafka Streams в настоящее время находится в общедоступной предварительной версии в категории "Премиум" и "Выделенный".
Kafka Streams — это клиентская библиотека для stream analytics, которая входит в проект Apache Kafka с открытым исходным кодом, но отличается от брокера событий Apache Kafka.
Центры событий Azure поддерживает клиентская библиотека Kafka Streams с подробными сведениями и понятиями, доступными здесь.
Наиболее распространенная причина, по которой клиенты Центров событий Azure запрашивают поддержку потоков Kafka, заключается в том, что они заинтересованы в продукте "ksqlDB" от Confluent. ksqlDB — это частный проект с общим исходным кодом, который лицензируется таким образом, что ни один из поставщиков SAAS, PAAS, IAAS или других аналогичных веб-служб, которые конкурируют с продуктами или службами Confluent, не может использовать или предлагать поддержку ksqlDB. Практически, если вы используете ksqlDB, необходимо работать либо с Kafka непосредственно, либо использовать облачные предложения Confluent. Условия лицензионного соглашения также могут повлиять на клиентов Azure, предлагающих услуги для цели, исключенной из лицензии.
Автономно и без ksqlDB, потоки Kafka имеют меньше возможностей, чем многие альтернативные платформы и службы, которые интегрируются с концентраторами событий Azure сегодня и большинство из которых имеют встроенные потоковые интерфейсы SQL.
- Azure Stream Analytics
- Azure Synapse Analytics (через захват концентраторов событий Event Hubs Capture)
- Azure Databricks
- Apache Samza
- Apache Storm
- Apache Spark
- Apache Flink
- Apache Flink в HDInsight в AKS
- Потоки Akka Streams
Перечисленные службы и платформы обычно могут получать потоки событий и эталонные данные непосредственно из различных наборов источников через адаптеры. Потоки Kafka могут получать данные только из Apache Kafka, в силу чего и проекты аналитики ограничены использованием Apache Kafka. Чтобы использовать данные из других источников, необходимо сначала импортировать данные в Apache Kafka с помощью платформы Kafka Connect Framework.
Если вы должны использовать платформу Kafka Streams в Azure, Apache Kafka в HDInsight предоставляет этот параметр. Apache Kafka в HDInsight предоставляет полный контроль над всеми аспектами настройки Apache Kafka, в то время как сохраняется полная интеграция с различными аспектами платформы Azure — от размещения в домен сбоя/обновления до сетевой изоляции и мониторинга интеграции.
Транзакции 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
Хотя Apache Kafka — это программное обеспечение, которое обычно требуется установить и затем начать с ним работу, концентраторы событий — это полностью управляемая облачная служба. Вам не нужно вести мониторинг и управлять серверами, дисками, или сетями и задумываться над использованием или настройкой брокеров — эти компоненты просто отсутствуют. Создайте пространство имен, которое является конечной точкой с полным доменным именем, а затем создайте концентраторы событий (разделы) в этом пространстве имен.
Дополнительные сведения о Центрах событий и пространствах имен см. в статье Особенности Центров событий. Выступая в качестве облачной службы, концентраторы событий используют один стабильный виртуальный IP-адрес в качестве конечной точки, поэтому клиентам не нужно знать о брокерах или машинах в кластере. Хотя концентраторы событий реализуют один и тот же протокол, разница заключается в том, что весь трафик Kafka для всех секций прогнозируется через эту конечную точку и не требует доступа к брандмауэру для всех брокеров кластера.
Масштабирование в Центрах событий определяется количеством приобретенных единиц пропускной способности (TU) или единиц обработки. При включении функции автоматического расширения для пространства имен стандартного уровня Центры событий при достижении предельной пропускной способности автоматически выполняют вертикальное увеличение масштаба единиц пропускной способности. Эта функция также работает с поддержкой протокола Apache Kafka. Для пространства имен уровня "Премиум" можно увеличить количество единиц обработки, назначенных пространству имен.
Apache Kafka — верное решение для вашей рабочей нагрузки?
Тем, кто прежде занимался созданием приложений с помощью Apache Kafka, также будет полезно узнать, что Центры событий Azure являются частью парка служб, которые также включают в себя Служебную шину Azure и службу Сетка событий Azure.
Хотя некоторые поставщики коммерческих дистрибутивов 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
- Подписанный URL-адрес (SAS)
OAuth 2.0
Центры событий интегрируются с идентификатором Microsoft Entra, который предоставляет централизованный сервер авторизации 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 с Центрами событий для Kafka с помощью различных языков программирования см. в примерах на сайте GitHub.
Подписанный URL-адрес
Концентраторы событий также предоставляют подписанные URL-адреса (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.
Примечание.
Созданные маркеры подписанных URL-адресов не поддерживаются при использовании Центров событий для конечной точки 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.