Использование Центров событий Azure из приложений Apache KafkaUse Azure Event Hubs from Apache Kafka applications

Центры событий предоставляют конечную точку Kafka, которую существующие приложения на основе Kafka могут использовать в качестве альтернативы запуска собственного кластера Kafka.Event Hubs provides a Kafka endpoint that can be used by your existing Kafka based applications as an alternative to running your own Kafka cluster. Центры событий поддерживают Apache Kafka 1.0 и более новые версии протокола и работают с имеющимися приложениями Kafka, в том числе с MirrorMaker.Event Hubs supports Apache Kafka protocol 1.0 and later, and works with your existing Kafka applications, including MirrorMaker.

Возможности, предоставленные Центрами событий для KafkaWhat does Event Hubs for Kafka provide?

Центры событий для компонента Kafka предоставляют заголовок протокола на основе концентраторов событий Azure, который совместим по двоичным файлам с Kafka 1.0 и более поздними версиями, для чтения из разделов Kafka и записи в них.The Event Hubs for Kafka feature provides a protocol head on top of Azure Event Hubs that is binary compatible with Kafka versions 1.0 and later for both reading from and writing to Kafka topics. Вы можете начать использовать конечную точку Kafka из своих приложений без изменения кода, но с минимальным изменением конфигурации.You may start using the Kafka endpoint from your applications with no code change but a minimal configuration change. Чтобы указать конечную точку Kafka, предоставленную концентратором событий, вместо указания кластера Kafka можно обновить строку подключения в конфигурации.You update the connection string in configurations to point to the Kafka endpoint exposed by your event hub instead of pointing to your Kafka cluster. Затем вы можете начать потоковую передачу событий из приложений, использующих в Центрах событий протокол Kafka.Then, you can start streaming events from your applications that use the Kafka protocol into Event Hubs. При такой интеграции также поддерживаются такие платформы, как Kafka Connect, которая сейчас доступна в предварительной версии.This integration also supports frameworks like Kafka Connect, which is currently in preview.

Концептуально Kafka и концентраторы событий практически идентичны: они являются секционированными журналами, созданными для потоковой передачи данных.Conceptually Kafka and Event Hubs are nearly identical: they're both partitioned logs built for streaming data. В следующей таблице показано составление понятий Kafka и Центров событий.The following table maps concepts between Kafka and Event Hubs.

Сопоставление понятий Kafka и концентратора событийKafka and Event Hub conceptual mapping

Понятия KafkaKafka Concept Понятия Центров событийEvent Hubs Concept
КластерCluster Пространство именNamespace
РазделTopic Концентратор событийEvent Hub
СекцияPartition СекцияPartition
Группа потребителейConsumer Group Группа потребителейConsumer Group
OffsetOffset OffsetOffset

Основные различия между Kafka и Центрами событийKey differences between Kafka and Event Hubs

Несмотря на то, что Apache Kafka — это программное обеспечение, которое можно использовать в любом месте, Центры событий представляют собой облачную службу, схожую с хранилищем BLOB-объектов Azure.While Apache Kafka is software, which you can run wherever you choose, Event Hubs is a cloud service similar to Azure Blob Storage. Вам не нужно управлять серверами или сетями и настраивать брокеры — эти компоненты просто отсутствуют.There are no servers or networks to manage and no brokers to configure. Вы создаете пространство имен, которое является полным доменным именем, содержащим разделы, а затем в этом пространстве имен создаете концентраторы событий или разделы.You create a namespace, which is an FQDN in which your topics live, and then create Event Hubs or topics within that namespace. Дополнительные сведения о Центрах событий и пространствах имен см. в статье Особенности Центров событий.For more information about Event Hubs and namespaces, see Event Hubs features. В качестве облачной службы концентраторы событий используют один стабильный виртуальный IP-адрес в качестве конечной точки, поэтому клиентам не нужно знать о брокерах или компьютерах в кластере.As a cloud service, Event Hubs uses a single stable virtual IP address as the endpoint, so clients don't need to know about the brokers or machines within a cluster.

Масштаб в Центрах событий контролируется количеством приобретаемых единиц пропускной способности, где каждая такая единица предоставляет 1 МБ в секунду или 1000 событий в секунду входящих данных.Scale in Event Hubs is controlled by how many throughput units you purchase, with each throughput unit entitling you to 1 MB per second, or 1000 events per second of ingress. По умолчанию Центры событий масштабируют единицы пропускной способности по достижении предела, используя функцию автоматического расширения. Эта функция также работает с концентраторами событий для компонента Kafka.By default, Event Hubs scales up throughput units when you reach your limit with the Auto-Inflate feature; this feature also works with the Event Hubs for Kafka feature.

Безопасность и проверка подлинностиSecurity and authentication

Каждый раз при публикации или использовании событий из концентраторов событий для Kafka клиент пытается получить доступ к ресурсам концентраторов событий.Every time you publish or consume events from an Event Hubs for Kafka, your client is trying to access the Event Hubs resources. Необходимо обеспечить доступ к ресурсам с помощью полномочной сущности.You want to ensure that the resources are accessed using an authorized entity. При использовании протокола Apache Kafka с клиентами можно настроить конфигурацию для проверки подлинности и шифрования с помощью механизмов SASL.When using Apache Kafka protocol with your clients, you can set your configuration for authentication and encryption using the SASL mechanisms. При использовании концентраторов событий для Kafka требуется TLS-шифрование (так как все данные, передаваемые с концентраторами событий, шифруются с помощью TLS).When using Event Hubs for Kafka requires the TLS-encryption (as all data in transit with Event Hubs is TLS encrypted). Это можно сделать, указав параметр SASL_SSL в файле конфигурации.It can be done specifying the SASL_SSL option in your configuration file.

Концентраторы событий Azure предоставляют несколько вариантов авторизации доступа к защищенным ресурсам.Azure Event Hubs provides multiple options to authorize access to your secure resources.

  • OAuthOAuth
  • Подписанный URL-адрес (SAS)Shared access signature (SAS)

OAuthOAuth

Концентраторы событий интегрируются с Azure Active Directory (Azure AD), который предоставляет сервер централизованной авторизации, совместимый с OAuth 2,0.Event Hubs integrates with Azure Active Directory (Azure AD), which provides a OAuth 2.0 compliant centralized authorization server. С помощью Azure AD можно использовать управление доступом на основе ролей (RBAC), чтобы предоставить точные разрешения для удостоверений клиентов.With Azure AD, you can use role-based access control (RBAC) to grant fine grained permissions to your client identities. Эту функцию можно использовать с клиентами Kafka, указав SASL_SSL для протокола и оаусбеарер для механизма.You can use this feature with your Kafka clients by specifying SASL_SSL for the protocol and OAUTHBEARER for the mechanism. Дополнительные сведения о ролях и уровнях RBAC для доступа к области см. в статье авторизация доступа с помощью Azure AD.For details about RBAC roles and levels for scoping access, see Authorize access with Azure AD.

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;

Подписанный URL-адресShared Access Signature (SAS)

Концентраторы событий также предоставляют подписанные URL-адрес (SAS) для делегированного доступа к концентраторам событий для ресурсов Kafka.Event Hubs also provides the Shared Access Signatures (SAS) for delegated access to Event Hubs for Kafka resources. Авторизация доступа с помощью механизма на основе токенов OAuth 2,0 обеспечивает более высокую безопасность и простоту использования SAS.Authorizing access using OAuth 2.0 token-based mechanism provides superior security and ease of use over SAS. Встроенные роли также могут устранить необходимость авторизации на основе ACL, которая должна поддерживаться и управляться пользователем.The built-in roles can also eliminate the need for ACL-based authorization, which has to be maintained and managed by the user. Эту функцию можно использовать с клиентами Kafka, указав для него SASL_SSL протокола и простой для механизма.You can use this feature with your Kafka clients by specifying SASL_SSL for the protocol and PLAIN for the mechanism.

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}";

ПримерыSamples

Пошаговые инструкции по созданию концентратора событий и доступу к нему с помощью SAS или OAuth см . в статье Краткое руководство. потоковая передача данных с концентраторами событий с помощью протокола Kafka.For a tutorial with step-by-step instructions to create an event hub and access it using SAS or OAuth, see Quickstart: Data streaming with Event Hubs using the Kafka protocol.

Дополнительные примеры , демонстрирующие использование OAuth с концентраторами событий для Kafka, см. в статье примеры на сайте GitHub.For more samples that show how to use OAuth with Event Hubs for Kafka, see samples on GitHub.

Другие функции Центров событий, доступные для KafkaOther Event Hubs features available for Kafka

Центры событий для компонента Kafka позволяют использовать один протокол для записи, а другой для чтения. В этом случае текущие производители Kafka могут продолжить публикацию с помощью Kafka, а вы можете добавлять средства чтения с помощью Центров событий, например Azure Stream Analytics или Функции Azure.The Event Hubs for Kafka feature enables you to write with one protocol and read with another, so that your current Kafka producers can continue publishing via Kafka, and you can add readers with Event Hubs, such as Azure Stream Analytics or Azure Functions. Кроме того, функции Центров событий, такие как Захват и Геоизбыточное аварийное восстановление, также работают с концентраторами событий для компонента Kafka.Additionally, Event Hubs features such as Capture and Geo Disaster-Recovery also work with the Event Hubs for Kafka feature.

Еще не реализованные функцииFeatures that are not yet supported

Ниже приведен список функций Kafka, которые еще не поддерживаются:Here is the list of Kafka features that are not yet supported:

  • идемпотентный производитель;Idempotent producer
  • ТранзакцияTransaction
  • сжатие;Compression
  • хранение на основе размера;Size-based retention
  • сжатие журнала;Log compaction
  • добавлений секций в существующий раздел;Adding partitions to an existing topic
  • поддержка API HTTP Kafka;HTTP Kafka API support
  • потоки Kafka.Kafka Streams

Дальнейшие шагиNext steps

В этой статье приведены ознакомительные сведения о Центрах событий для компонента Kafka.This article provided an introduction to Event Hubs for Kafka. См. сведения в руководстве для разработчиков Apache Kafka по Центрам событий Azure.To learn more, see Apache Kafka developer guide for Azure Event Hubs.