Vemos que un número significativo de clientes aprovecha la integración de Couchbase con Apache KafkaMediante el uso de Couchbase Kafka conector plugin que proporciona la capacidad de transmitir datos de forma fiable desde y hacia Apache Kafka a escala.
Apache Kafka es una plataforma de código abierto para crear aplicaciones y canalizaciones de datos en tiempo real. Sin embargo, necesita experiencia en la administración de la infraestructura de Apache Kafka para diseñar, operar y administrar por su cuenta. Amazon Managed Streaming para Apache Kafka (Amazon MSK) es un servicio totalmente gestionado y de alta disponibilidad que facilita la creación y ejecución de aplicaciones que utilizan Apache Kafka.
Amazon MSK soporta la integración con Couchbase con la función Amazon MSK Connect y el complemento del conector Couchbase Kafka. Con esta característica, puede implementar fácilmente el conector de Couchbase y escalarlo para ajustarlo a los cambios de carga.
En esta entrada del blog, vamos a ir a través de la configuración de clúster de Amazon MSK y utilizar Couchbase Kafka Connector como "fregadero" y "fuente". Utilizaremos Couchbase Capella para empezar en cuestión de minutos.
Paso 1: Clúster Couchbase Capella
-
- Empiece con Prueba gratuita de Couchbase Capella.
- Seleccione su región de AWS preferida y comience a utilizar el clúster Couchbase Capella en cuestión de minutos.
- Siguiente, Configurar las credenciales de la base de datos.
- Configurar una red privada mediante VPC Peering o AWS PrivateLink para la conectividad de red con su cuenta de AWS. Puede permitir el acceso desde cualquier lugar, pero no es recomendable.
- A continuación, acceda a la sección Herramientas de datos para crear un nuevo demo Cubo en el racimo.
Paso 2: Clúster Amazon MSK y cliente Apache Kafka
Se recomienda que tengas tu clúster de Amazon MSK y los conectores de Amazon MSK Connect en la subred privada de tu VPC. En caso de que no utilices VPC Peering o AWS PrivateLink para conectarte al clúster Couchbase Capella, necesitarás la puerta de enlace NAT para iniciar la conexión desde las subredes privadas.
Para empezar fácilmente podemos utilizar Plantilla de CloudFormation para Streaming Data Solutions para MSK que despliega un clúster de Amazon MSK y un cliente de Apache Kafka en una instancia de Amazon EC2.
Primero vamos a crear los temas de origen y destino de muestra en el clúster MSK:
A continuación, instalaremos algunos paquetes del KafkaClient para que podamos ejecutar un código de ejemplo que publicará algunos mensajes en la base de datos couchbase-sink-example tema
Seguiremos el Guía de inicio rápido de Couchbase Sink Connector para publicar mensajes en el clúster MSK.
Abra el archivo src/main/java/com/couchbase/connect/kafka/example/JsonProducerExample.java y actualice la cadena de conexión de Kafka Cluster Bootstrap.
Ahora puedes construir el proyecto maven:
1 |
mvn compilar exec:java |
El productor de ejemplo enviará algunos mensajes al tema kafka couchbase-sink-example y luego terminar.
Paso 3: Configurar el plugin MSK Connect
-
- Descargar el Plugin Couchbase Kafka Connect ZIP.
- Sube el archivo ZIP a un bucket de S3 al que tengas acceso.
- Abra el Consola Amazon MSK. En el panel izquierdo, expanda MSK Connectseleccione Plugins personalizados.
- Elija Crear plugin personalizado
- Elija Examinar S3. En la lista de cubos, busque el cubo en el que cargó el archivo ZIP y, a continuación, en la lista de objetos, seleccione el archivo ZIP.
- Entre en couchbase-kafka-connect como nombre del plugin personalizado y, a continuación, seleccione Crear plugin personalizado.
Paso 4: Crear el conector MSK para el sumidero
-
- Usando el plugin personalizado, ahora podemos crear un conector de fregadero. Abra el Consola Amazon MSK. En el panel izquierdo, en MSK ConnectElige Conectores. Elija Crear conector.
- Elija el plugin personalizado couchbase-kafka-connect y seleccione Siguiente.
- Entre en couchbase-sink-example como Conector nombre.
- Seleccione el clúster MSK creado en el paso 2.
- Introduzca la configuración del conector que se muestra a continuación:
- Seleccione Provisto o Autoescalado capacidad en función de sus necesidades.
- Cree y seleccione un rol IAM con la opción política fiduciaria requerida para MSK connect.
- Una vez que el couchbase-sink-example verá los mensajes del tema de Kafka añadidos al bucket de Couchbase como nuevos documentos.
Paso 5: Crear un conector MSK para la fuente
-
- Usando el plugin personalizado, ahora podemos crear un conector de origen. Abra el Consola Amazon MSK. En el panel izquierdo, en MSK ConnectElige Conectores. Elija Crear conector.
- Elija el plugin personalizado couchbase-kafka-connect y elija Siguiente.
- Entre en couchbase-source-example como Conector nombre
- Seleccione el clúster MSK creado en el paso 2.
- Introduzca la configuración del conector que se muestra a continuación:
- Seleccione la capacidad aprovisionada o autoescalada en función de sus necesidades.
- Cree y seleccione un rol IAM con la opción política fiduciaria requerida para MSK connect.
- Una vez que el couchbase-source-example Cuando se inicie el conector, escuchará el protocolo de cambio de base de datos (DCP) de Couchbase.
- Vamos a iniciar un consumidor de consola en el KafkaClient para escuchar el tema Kafka couchbase-source-example donde se publicarán los mensajes de actualización. Para ello me conectaré de nuevo a la instancia de KafkaClient utilizando la opción Session Manager y ejecutaré el siguiente código:
- Ahora, cuando ejecutemos consultas UPDATE en la base de datos viaje-muestra en Couchbase Capella utilizando la opción Herramientas de Datos - Consulta:
- Podemos ver que el documento actualizado es recibido por el consumidor Kafka que se ejecuta en la instancia Kafka Client:
Conclusión
En este artículo se explica cómo utilizar Couchbase conector de origen para publicar notificaciones de cambios en documentos desde Couchbase Capella a un tema Kafka, así como un tema conector del fregadero que se suscribe a uno o más temas de Kafka y escribe los mensajes en Couchbase Capella.
He seguido el tutorial y no he conseguido que funcione.
¿Quizá falta alguna información?