Utilización de la API de Kafka
Kafka proporciona un conjunto enriquecido de API y clientes en una gran variedad de lenguajes. Las API incluyen la API principal, la API de Streams y la API de Connect.
- Kafka aPI principal de (API de consumidor, productor y administrador)
Se utiliza para enviar y recibir mensajes directamente desde uno de los temas de Kafka, o varios temas. El cliente de administración de Kafka proporciona una interfaz sencilla a través de la API de Kafka para gestionar los recursos de Kafka. Puede crear, suprimir y gestionar temas. También puede utilizar el cliente de administración para gestionar grupos de clientes y configuraciones. - API de Streams
Una API de procesamiento de flujo de nivel superior para consumir, transformar y producir fácilmente eventos entre temas. - API de conexión
Un marco que permite integraciones reutilizables o estándar para transmitir eventos hacia y desde sistemas externos, como bases de datos.
En la tabla siguiente se resume lo que puede utilizar con Event Streams:
Plan de empresa | Plan Estándar | Plan Lite | |
---|---|---|---|
Versión de Kafka en el clúster | Kafka 3.6 | Kafka 3.6 | Kafka 3.6 |
Versión de cliente de Kafka mínima recomendada | Kafka 2.6.0, o posterior | Kafka 2.6.0, o posterior | Kafka 2.6.0, o posterior |
Versiones de cliente admitidas | Consulte Resumen de soporte para todos los clientes recomendados | ||
Soporte a Kafka Connect | Sí | Sí | No |
Soporte a Kafka Streams | Sí | Sí | No |
Soporte a ksqlDB | Sí | No | No |
Requisitos de autenticación | El cliente debe admitir la autenticación mediante el mecanismo SASL Plain y utilizar la extensión Server Name Indication (SNI) del protocolo TLSv1.2. | El cliente debe admitir la autenticación mediante el mecanismo SASL Plain y utilizar la extensión Server Name Indication (SNI) del protocolo TLSv1.2. | El cliente debe admitir la autenticación mediante el mecanismo SASL Plain y utilizar la extensión Server Name Indication (SNI) del protocolo TLSv1.2. |
Elección de un cliente Kafka para utilizarlo con Event Streams
El cliente oficial de la API de Kafka está escrito en Java y, como tal, contiene las funciones y correcciones de errores más recientes. Para obtener más información sobre esta API, consulte Kafka API de productor 3.6 y Kafka API de consumidor 3.6.
Para otros idiomas, ejecute uno de los clientes siguientes, todos los cuales se prueban con Event Streams.
Soporte al resumen de todos los clientes recomendados
Cliente | Idioma | Versión recomendada | Versión mínima soportada [1] | Enlace al ejemplo |
---|---|---|---|---|
Cliente Apache Kafka oficial: | ||||
Cliente Apache Kafka | Java | 3.6.2o posterior | 2.5.0 | Ejemplo de consola Java |
Clientes de terceros: | ||||
confluent-kafka-javascript | Node.js | Más reciente | 1.0.0 | |
confluent-kafka-python | Python | Más reciente | 1.4.0 | Ejemplo de Kafka Python |
confluent-kafka-go | Go | Más reciente | 1.4.0 | |
librdkafka | C o C++ | Más reciente | 1.4.0 | |
node-rdkafka | Node.js | Más reciente | 2.8.0 | Ejemplo deNode.js |
sarama | Go | Más reciente | 1.40.0 | Ejemplos de Sarama |
Conexión de su cliente a Event Streams
Para obtener información sobre cómo configurar el cliente Java para que se conecte a Event Streams, consulte Configuración de su cliente.
Configuración del cliente de API Kafka
Para establecer una conexión, los clientes deben estar configurados para utilizar SASL PLAIN o SASL OAUTHBEARER a través de TLSv1.2 como mínimo y para requerir un nombre de usuario y una lista de los servidores bootstrap. TLSv1.2 garantiza que las conexiones estén cifradas y valida la autenticidad de los intermediarios (para evitar ataques de intermediarios). SASL aplica la autenticación en todas las conexiones.
Para recuperar el nombre de usuario, la contraseña y la lista de servidores de arranque, se requiere un objeto de credenciales de servicio o una clave de servicio para la instancia de servicio. Para obtener más información sobre la creación de estos objetos, consulte Conexión a Event Streams.
Utilización de SASL PLAIN
Utilice las siguientes series y propiedades.
- Utilice la serie
bootstrap_endpoints
como lista de servidores de rutina de carga y pase esta serie de pares de host y puerto al cliente Kafka. - Utilice las propiedades
user
yapi_key
como nombre de usuario y contraseña.
Para un cliente de Java, el siguiente ejemplo muestra el conjunto mínimo de propiedades, donde ${USERNAME}
, ${PASSWORD}
y ${BOOTSTRAP_ENDPOINTS}
deben ser reemplazados por los valores que recuperó anteriormente.
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
Si utiliza un cliente Kafka anterior a la versión 0.10.2.1, la propiedad sasl.jaas.config
no es compatible y, en su lugar, debe proporcionar la configuración del cliente en un archivo de configuración JAAS.
Utilización de SASL OAUTHBEARER
Antes de configurar el mecanismo SASL para el cliente Java, hay dos requisitos previos.
- La versión mínima soportada del cliente Kafka Java es 3.1.0.
- El paquete jar adicional debe descargarse de Maven Central y estar disponible en la vía de acceso de clases.
Si Maven se utiliza en el sistema de compilación, añada la siguiente información al archivo pom.xml
en la sección de dependencias.
<dependency>
<groupId>com.ibm.cloud.eventstreams</groupId>
<artifactId>oauth-client</artifactId>
<version>1.3.1</version>
</dependency>
Si se utiliza Gradle en el sistema de compilación, añada la siguiente información al archivo build.gradle
en la sección de dependencias.
implementation com.ibm.cloud.eventstreams:oauth-client:1.3.1
Utilice las siguientes series y propiedades.
- Utilice la serie
bootstrap_endpoints
como lista de servidores de rutina de carga y pase esta serie de pares de host y puerto al cliente Kafka. - Utilice la serie
api_key
como clave de API. - El
IAMOAuthBearerLoginCallbackHandler
lo proporciona el paquete jarcom.ibm.cloud.eventstreams:oauth-client:+
. - El punto final de señal de IBM Cloud® Identity and Access Management
https://iam.cloud.ibm.com/identity/token
está configurado para generar señal a partir de la clave de API utilizando el tipo de otorgamiento especificado en jaas config. Se realiza en el lado del cliente, por lo que la clave de API nunca se envía al lado del servidor y proporciona una mejor seguridad que una clave de API de larga duración. - El punto final de clave de Cloud Identity and Access Management
https://iam.cloud.ibm.com/identity/keys
está configurado para validar la señal.
Para un cliente de Java, el siguiente ejemplo muestra el conjunto mínimo de propiedades, donde ${BOOTSTRAP_ENDPOINTS}
y ${APIKEY}
deben sustituirse por los valores que recuperó anteriormente.
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
El código de ejemplo hace referencia a los ejemplos deEvent Streams.
Para otras libarias de cliente Kafka, consulte su documentación sobre cómo implementar el soporte de OAUTHBEARER. Por ejemplo:.
- sarama: es necesaria una implementación de la interfaz
AccessTokenProvider
. - librdkafka: es necesaria una implementación de la devolución de llamada
oauthbearer_token_refresh_cb
.
Para obtener información sobre cómo generar una señal de IAM de IBM Cloud utilizando una clave de API, consulte el documento de IBM Cloud® Identity and Access Management.
-
La primera versión que se validó en pruebas continuas. Por lo general, es la versión inicial disponible en los últimos 12 meses, o más reciente si se sabe que existen problemas importantes. Si no puede ejecutar ninguno de los clientes que se enumeran, puede utilizar otros clientes de terceros que cumplan los siguientes requisitos mínimos (por ejemplo, librdkafka ). 1. Da soporte a Kafka 1.40o posterior. 2. Puede conectarse y autenticarse utilizando SASL PLAIN con TLSv1.2. 3. Admite las extensiones SNI para TLS cuando el nombre de host del servidor se incluye en el protocolo de enlace TLS. 4. Da soporte a la criptografía de curva elíptica. En todos los casos, utilice la versión más reciente del cliente. ↩︎