Utiliser Azure Event Hubs à partir d’applications Apache KafkaUse Azure Event Hubs from Apache Kafka applications

Event Hubs fournit un point de terminaison Kafka qui peut être utilisé par vos applications Kafka pour éviter d’exécuter votre propre cluster 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. Event Hubs prend en charge Apache Kafka protocole 1.0 et ultérieurs, et fonctionne avec vos applications Kafka, notamment MirrorMaker.Event Hubs supports Apache Kafka protocol 1.0 and later, and works with your existing Kafka applications, including MirrorMaker.

Qu’apporte Event Hubs à Kafka ?What does Event Hubs for Kafka provide?

La fonctionnalité Event Hubs pour Kafka fournit une tête de protocole sur Azure Event Hubs qui est compatible d’un point de vue binaire avec Kafka versions 1.0 et ultérieures pour lire et écrire dans des rubriques 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. Vous pouvez démarrer à l’aide du point de terminaison Kafka à partir de vos applications avec une modification de configuration minimale, mais aucune modification de code.You may start using the Kafka endpoint from your applications with no code change but a minimal configuration change. Vous mettez à jour la chaîne de connexion dans les configurations pour pointer vers le point de terminaison Kafka exposé par votre hub d’événements au lieu de pointer vers votre cluster 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. Vous pouvez ensuite commencer à diffuser des événements en continu à partir de vos applications qui utilisent le protocole Kafka dans Event Hubs.Then, you can start streaming events from your applications that use the Kafka protocol into Event Hubs. Cette intégration prend également en charge les infrastructures telles que Kafka Connect, qui est actuellement en préversion.This integration also supports frameworks like Kafka Connect, which is currently in preview.

Sur le plan conceptuel, Kafka et Event Hubs sont presque identiques : ce sont tous les deux des journaux d’activité partitionnés générés pour la diffusion en continu de données.Conceptually Kafka and Event Hubs are nearly identical: they're both partitioned logs built for streaming data. Le tableau suivant mappe les concepts entre Kafka et Event Hubs.The following table maps concepts between Kafka and Event Hubs.

Mappage des concepts Kafka et Event HubsKafka and Event Hub conceptual mapping

Concept KafkaKafka Concept Concept Event HubsEvent Hubs Concept
ClusterCluster Espace de nomsNamespace
RubriqueTopic Event HubEvent Hub
PartitionPartition PartitionPartition
Groupe de consommateursConsumer Group Groupe de consommateursConsumer Group
OffsetOffset OffsetOffset

Principales différences entre Kafka et Event HubsKey differences between Kafka and Event Hubs

Apache Kafka est un logiciel que vous pouvez exécuter où vous voulez, tandis qu’Event Hubs est un service cloud similaire au stockage 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. Il n’existe aucun serveur ni réseau à gérer, ni aucun répartiteur à configurer.There are no servers or networks to manage and no brokers to configure. Vous créez un espace de noms, qui est un nom de domaine complet dans lequel figurent vos rubriques, puis vous créez des hubs d’événements ou rubriques dans cet espace de noms.You create a namespace, which is an FQDN in which your topics live, and then create Event Hubs or topics within that namespace. Pour plus d’informations sur les espaces de noms et Event Hubs, consultez Fonctionnalités Event Hubs.For more information about Event Hubs and namespaces, see Event Hubs features. En tant que service cloud, Event Hubs utilise une seule adresse IP virtuelle stable comme point de terminaison, les clients n’ont donc pas besoin de connaître les répartiteurs ou machines dans un cluster.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.

La mise à l’échelle dans Event Hubs est contrôlée par le nombre d’unités de débit que vous achetez, chacune d’elles vous donnant droit à 1 Mo par seconde ou 1 000 événements par seconde d’entrée.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. Par défaut, Event Hubs augmente le nombre d’unités de débit (scale up) quand vous atteignez votre limite avec la fonctionnalité d’augmentation automatique ; celle-ci fonctionne également avec la fonctionnalité Event Hubs pour 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.

Sécurité et authentificationSecurity and authentication

Chaque fois que vous publiez ou utilisez des événements à partir d'une instance Event Hubs pour Kafka, votre client tente d'accéder aux ressources Event Hubs.Every time you publish or consume events from an Event Hubs for Kafka, your client is trying to access the Event Hubs resources. Vous voulez assurer l'accès aux ressources à l’aide d’une entité autorisée.You want to ensure that the resources are accessed using an authorized entity. Lorsque vous utilisez le protocole Apache Kafka avec vos clients, vous pouvez utiliser des mécanismes SASL pour définir votre configuration à des fins d’authentification et de chiffrement.When using Apache Kafka protocol with your clients, you can set your configuration for authentication and encryption using the SASL mechanisms. L’utilisation d'Event Hubs pour Kafka nécessite le chiffrement TLS (car toutes les données en transit avec Event Hubs sont chiffrées avec le protocole TLS).When using Event Hubs for Kafka requires the TLS-encryption (as all data in transit with Event Hubs is TLS encrypted). Pour ce faire, vous pouvez spécifier l'option SASL_SSL dans votre fichier de configuration.It can be done specifying the SASL_SSL option in your configuration file.

Azure Event Hubs propose plusieurs options afin d'autoriser l’accès à vos ressources sécurisées.Azure Event Hubs provides multiple options to authorize access to your secure resources.

  • OAuthOAuth
  • Signature d’accès partagé (SAP)Shared access signature (SAS)

OAuthOAuth

Event Hubs s’intègre à Azure Active Directory (Azure AD), qui fournit un serveur d'autorisation centralisé compatible avec OAuth 2.0.Event Hubs integrates with Azure Active Directory (Azure AD), which provides a OAuth 2.0 compliant centralized authorization server. Avec Azure AD, vous pouvez utiliser le contrôle d’accès en fonction du rôle (RBAC) pour accorder des autorisations affinées à vos identités clientes.With Azure AD, you can use role-based access control (RBAC) to grant fine grained permissions to your client identities. Vous pouvez utiliser cette fonctionnalité avec vos clients Kafka en spécifiant SASL_SSL pour le protocole et OAUTHBEARER pour le mécanisme.You can use this feature with your Kafka clients by specifying SASL_SSL for the protocol and OAUTHBEARER for the mechanism. Pour plus d’informations sur les rôles RBAC et niveaux en matière d'accès, consultez Autoriser l’accès avec 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;

Signature d’accès partagé (SAS)Shared Access Signature (SAS)

Event Hubs fournit également les signatures d'accès partagé (SAP) à des fins d'accès délégué aux ressources Event Hubs pour Kafka.Event Hubs also provides the Shared Access Signatures (SAS) for delegated access to Event Hubs for Kafka resources. Autoriser l’accès à l’aide d’un mécanisme basé sur les jetons OAuth 2.0 offre une sécurité et une facilité d'utilisation supérieures par rapport aux SAP.Authorizing access using OAuth 2.0 token-based mechanism provides superior security and ease of use over SAS. Grâce aux rôles intégrés, il n'est plus nécessaire de recourir à une autorisation basée sur une liste de contrôle d’accès, qui doit être gérée par l’utilisateur.The built-in roles can also eliminate the need for ACL-based authorization, which has to be maintained and managed by the user. Vous pouvez utiliser cette fonctionnalité avec vos clients Kafka en spécifiant SASL_SSL pour le protocole et PLAIN pour le mécanisme.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}";

ExemplesSamples

Pour consulter un tutoriel avec des instructions pas à pas afin de créer un Event Hub et y accéder à l’aide d’une signature d’accès partagé ou OAuth, consultez Démarrage rapide : Streaming de données avec Event Hubs en utilisant le protocole 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.

Pour plus d'exemples montrant comment utiliser OAuth avec Event Hubs pour Kafka, consultez les exemples sur GitHub.For more samples that show how to use OAuth with Event Hubs for Kafka, see samples on GitHub.

Autres fonctionnalités Event Hubs disponibles pour KafkaOther Event Hubs features available for Kafka

La fonctionnalité Event Hubs pour Kafka vous permet d’écrire avec un protocole et de lire avec un autre afin que vos producteurs Kafka actuels puissent continuer la publication via Kafka, et vous pouvez ajouter des lecteurs avec Event Hubs comme Azure Stream Analytics ou Azure Functions.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. De plus, les fonctionnalités Event Hubs telles que la capture et la géoreprise d’activité après sinistre fonctionnent également avec la fonctionnalité Event Hubs pour Kafka.Additionally, Event Hubs features such as Capture and Geo Disaster-Recovery also work with the Event Hubs for Kafka feature.

Fonctionnalités qui ne sont pas encore prises en chargeFeatures that are not yet supported

Voici la liste des fonctionnalités de Kafka qui ne sont pas prises en charge :Here is the list of Kafka features that are not yet supported:

  • TransactionTransaction
  • CompressionCompression
  • Rétention basée sur la tailleSize-based retention
  • Compactage de journalLog compaction
  • Prise en charge de l’API Kafka HTTPHTTP Kafka API support
  • Kafka StreamsKafka Streams

Étapes suivantesNext steps

Cet article a présenté une introduction à Event Hubs pour Kafka.This article provided an introduction to Event Hubs for Kafka. Pour en savoir plus, consultez Guide du développeur Apache Kafka pour Azure Event Hubs.To learn more, see Apache Kafka developer guide for Azure Event Hubs.