Utilizzo dell'API Kafka
Kafka fornisce un'ampia gamma di API e client in una vasta gamma di linguaggi. Le API includono API core, API Streams e API Connect.
- Kafka (Consumer, Producer e Admin API)
Utilizza per inviare e ricevere i messaggi direttamente da uno o più argomenti Kafka. Il client Kafka Admin fornisce un'interfaccia semplice tramite l'API Kafka per la gestione delle risorse Kafka. È possibile creare, eliminare e gestire argomenti. Puoi utilizzare il client Admin anche per gestire i gruppi di consumatori e le configurazioni. - API flussi
Un'API di elaborazione dei flussi di livello superiore per consumare, trasformare e produrre facilmente eventi tra gli argomenti. - Collegare l'API
Un framework che consente integrazioni riutilizzabili o standard per il flusso di eventi verso e da sistemi esterni, come i database.
La seguente tabella riepiloga cosa puoi utilizzare con Event Streams:
piano Enterprise | Piano Standard | Piano Lite | |
---|---|---|---|
**Versione Kafka sul cluster ** | Kafka 3.6 | Kafka 3.6 | Kafka 3.6 |
Versione client Kafka minima consigliata | Kafka 2.6.0, o più tardi | Kafka 2.6.0, o più tardi | Kafka 2.6.0, o più tardi |
Versioni client supportate | Consultare Riepilogo di supporto per tutti i client consigliati | ||
Kafka Connect supportato | Sì | Sì | No |
Kafka Streams supportati | Sì | Sì | No |
ksqlDB supportato | Sì | No | No |
Requisiti di autenticazione | Il client deve supportare l'autenticazione tramite il meccanismo SASL Plain e utilizzare l'estensione Server Name Indication (SNI) del protocollo TLSv1.2. | Il client deve supportare l'autenticazione tramite il meccanismo SASL Plain e utilizzare l'estensione Server Name Indication (SNI) del protocollo TLSv1.2. | Il client deve supportare l'autenticazione tramite il meccanismo SASL Plain e utilizzare l'estensione Server Name Indication (SNI) del protocollo TLSv1.2. |
Scelta di un client Kafka da utilizzare con Event Streams
Il client ufficiale per l'API Kafka è scritto in Java e di conseguenza contiene le funzioni e le correzioni di bug più recenti. Per ulteriori informazioni su questa API, vedere Kafka Producer API 3.6 e Kafka Consumer API 3.6.
Per altre lingue, esegui uno dei seguenti client, tutti verificati con Event Streams.
Riepilogo del supporto per tutti i client consigliati
Client | Lingua | Versione consigliata | Versione minima supportata [1] | Link all'esempio |
---|---|---|---|---|
Client ufficiale di Apache Kafka: | ||||
Client Apache Kafka | Java | 3.6.2o successiva | 2.5.0 | Java campione della console |
Clienti terzi: | ||||
confluent-kafka-javascript | Node.js | Più recente | 1.0.0 | |
kafka - python confluente | Python | Più recente | 1.4.0 | EsempioKafka Python |
confluente - kafka - go | Vai | Più recente | 1.4.0 | |
librdkafka | C o C++ | Più recente | 1.4.0 | |
nodo - rdkafka | Node.js | Più recente | 2.8.0 | EsempioNode.js |
sarama | Vai | Più recente | 1.40.0 | Esempi Sarama |
Collegamento del tuo client a Event Streams
Per informazioni su come configurare il tuo client Java per il collegamento a Event Streams, consulta Configurazione del tuo client.
Configurazione del tuo client API Kafka
Per stabilire una connessione, i client devono essere configurati per utilizzare almeno SASL PLAIN o SASL OAUTHBEARER su TLSv1.2 e per richiedere un nome utente e un elenco dei server di bootstrap. TLSv1.2 garantisce che le connessioni siano codificate e convalida l'autenticità dei broker (per evitare attacchi man - in - the - middle). SASL applica l'autenticazione su tutte le connessioni.
Per recuperare il nome utente, la password e l'elenco dei server di bootstrap, è necessario un oggetto credenziali di servizio o una chiave di servizio per l'istanza del servizio. Per ulteriori informazioni sulla creazione di questi oggetti, vedere Connessione a Event Streams.
Utilizzo di SASL PLAIN
Utilizzare le seguenti stringhe e proprietà.
- Utilizza la stringa
bootstrap_endpoints
come elenco di server di avvio e passa questa stringa di coppie host e porta al tuo client Kafka. - Utilizzare le proprietà
user
eapi_key
come nome utente e password.
Per un client Java, l'esempio seguente mostra l'insieme minimo di proprietà, dove ${USERNAME}
, ${PASSWORD}
e ${BOOTSTRAP_ENDPOINTS}
devono essere sostituiti dai valori recuperati in precedenza.
bootstrap.servers=${BOOTSTRAP_ENDPOINTS}
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="${USERNAME}" password="${PASSWORD}";
security.protocol=SASL_SSL
ssl.protocol=TLSv1.2
ssl.enabled.protocols=TLSv1.2
ssl.endpoint.identification.algorithm=HTTPS
Se si utilizza un client Kafka precedente alla versione 0.10.2.1, la proprietà sasl.jaas.config
non è supportata e occorre fornire la configurazione del client in un file di configurazione JAAS.
Utilizzo di SASL OAUTHBEARER
Prima di configurare il meccanismo SASL per il client Java, esistono due prerequisiti.
- La versione client Kafka Java minima supportata è 3.1.0.
- Il pacchetto jar aggiuntivo deve essere scaricato da Maven Central e reso disponibile nel percorso classi.
Se Maven viene utilizzato nel sistema di build, aggiungi le seguenti informazioni al file pom.xml
nella sezione delle dipendenze.
<dependency>
<groupId>com.ibm.cloud.eventstreams</groupId>
<artifactId>oauth-client</artifactId>
<version>1.3.1</version>
</dependency>
Se Gradle viene utilizzata nel sistema di creazione, aggiungi le seguenti informazioni al file build.gradle
nella sezione delle dipendenze.
implementation com.ibm.cloud.eventstreams:oauth-client:1.3.1
Utilizzare le seguenti stringhe e proprietà.
- Utilizza la stringa
bootstrap_endpoints
come elenco di server di avvio e passa questa stringa di coppie host e porta al tuo client Kafka. - Utilizza la stringa
api_key
come chiave API. IAMOAuthBearerLoginCallbackHandler
viene fornita dal package jarcom.ibm.cloud.eventstreams:oauth-client:+
.- L'endpoint token di IBM Cloud® Identity and Access Management
https://iam.cloud.ibm.com/identity/token
è configurato per generare il token dalla chiave API utilizzando il tipo di concessione specificato nella configurazione jaas. Viene eseguito sul lato client, quindi la chiave API non viene mai inviata al lato server e fornisce una sicurezza migliore rispetto a una chiave API di lunga durata. - L'endpoint chiave di Cloud Identity and Access Management
https://iam.cloud.ibm.com/identity/keys
è configurato per convalidare il token.
Per un client Java, l'esempio seguente mostra l'insieme minimo di proprietà, dove ${BOOTSTRAP_ENDPOINTS}
e ${APIKEY}
devono essere sostituiti dai valori recuperati in precedenza.
bootstrap.servers=${BOOTSTRAP_ENDPOINTS}
sasl.mechanism=OAUTHBEARER
sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required grant_type="urn:ibm:params:oauth:grant-type:apikey" apikey="${APIKEY}";
sasl.login.callback.handler.class=com.ibm.eventstreams.oauth.client.IAMOAuthBearerLoginCallbackHandler
sasl.oauthbearer.token.endpoint.url=https://iam.cloud.ibm.com/identity/token
sasl.oauthbearer.jwks.endpoint.url=https://iam.cloud.ibm.com/identity/keys
security.protocol=SASL_SSL
ssl.protocol=TLSv1.2
ssl.enabled.protocols=TLSv1.2
ssl.endpoint.identification.algorithm=HTTPS
Il codice di esempio fa riferimento agli esempi Event Streams.
Per altre librerie client Kafka, fare riferimento alla relativa documentazione su come implementare il supporto OAUTHBEARER. Ad esempio:.
- sarama: è richiesta un'implementazione dell'interfaccia
AccessTokenProvider
. - librdkafka: è richiesta un'implementazione del callback
oauthbearer_token_refresh_cb
.
Per informazioni su come generare un token IAM IBM Cloud utilizzando una chiave API, consulta il documento di IBM Cloud® Identity and Access Management.
-
La prima versione convalidata in test continui. In genere, si tratta della versione iniziale disponibile negli ultimi 12 mesi, o di una versione più recente se sono noti problemi significativi. Se non è possibile eseguire nessuno dei client elencati, è possibile utilizzare altri client di terze parti che soddisfano i seguenti requisiti minimi (ad esempio, librdkafka ). 1. Supporta Kafka 1.40o versioni successive. 2. È possibile connettersi e autenticarsi utilizzando SASL PLAIN con TLSv1.2. 3. Supporta le estensioni SNI per TLS, in cui il nome host del server è incluso nell'handshake TLS. 4. Supporta la crittografia della curva ellittica. In tutti i casi, utilizzare la versione più recente del client. ↩︎