Servidor Couchbase

Kafka Connect de MySQL a Couchbase con Debezium

Kafka es una plataforma de streaming que se puede utilizar para transmitir registros a (Kafka sink) y desde (Kafka source) centros de datos. Couchbase ha creado y soporta un Kafka conector que permite utilizar fácilmente Couchbase como fuente o sumidero.

He estado trabajando en un tutorial completo para un Cliente 360 caso de uso. Una parte de él tiene que ver con Kafka. Aquí hay un diagrama de alto nivel:

Customer 360 ingestion digram

Una parte de este tutorial es una guía sobre cómo empezar a transmitir datos desde una base de datos MySQL (que se utiliza para un sistema de "entrega a domicilio" en una empresa) a la plataforma Couchbase Data (que se utilizará para fines de Customer 360). Para esta entrada de blog, me centraré sólo en esta parte del diagrama:

Customer 360 diagram focused on Kafka

Requisitos previos

Empecé sin saber mucho acerca de Kafka, pero fui capaz de armar una prueba de concepto de trabajo mediante el uso de:

  • Docker. Necesitarás tener instalado Docker para completar este tutorial. Es posible que con el tiempo desee mover todo esto en docker-compose o (más probable) Kubernetes. Estoy construyendo toda la arquitectura en este post, pero en su empresa habrá al menos algunas partes que ya están desplegadas.
  • Tutorial de inicio rápido de Debezium - Debezium es el conector que elegí utilizar para configurar una base de datos MySQL como fuente.
  • Couchbase Docker quickstart - para ejecutar un cluster simple de Couchbase dentro de Docker
  • Couchbase Kafka tutorial de inicio rápido del conector - Este tutorial muestra cómo configurar Couchbase como sumidero de Kafka o como fuente de Kafka.
  • Referencia Dockerfile - cómo crear una imagen docker personalizada. Esto puede sonar intimidante, pero no te preocupes, es sólo un par de líneas de texto.

Configuración de Couchbase

Instalar Couchbase con Docker:

docker run -d --name db -p 8091-8094:8091-8094 -p 11210:11210 couchbase

También tendrá que configurar ese clúster Couchbase como de costumbre. He creado un cubo llamado "staging".

Ejecutar Zookeeper, Kafka, MySQL

En la mayoría de los casos, sólo tendrá que seguir las instrucciones de Tutorial Debezium. Asegúrese de leer todos los detalles, pero la versión resumida es seguir estos pasos:

Ejecutar una imagen Zookeeper (esto es necesario para Kafka):

docker run -it --rm --name zookeeper -p 2181:2181 -p 2888:2888 -p 3888:3888 debezium/zookeeper:0.9

Ejecuta una imagen de Kafka (vinculada a Zookeeper):

docker run -it --rm --name kafka -p 9092:9092 --link zookeeper:zookeeper debezium/kafka:0.9

Inicie una base de datos MySQL (Debezium suministra una imagen Docker que ya contiene algunos datos de ejemplo):

docker run -it --rm --name mysql -p 3306:3306 -e MYSQL_ROOT_PASSWORD=debezium -e MYSQL_USER=mysqluser -e MYSQL_PASSWORD=mysqlpw debezium/example-mysql:0.9

Después de esto, puede conectarse a la base de datos MySQL utilizando las credenciales anteriores. El tutorial Debezium proporciona otra imagen Docker para hacer eso, o puede utilizar la herramienta MySQL de su elección. No necesitas hacer esto ahora, pero eventualmente querrás conectarte a ella e insertar/actualizar datos para probar el proceso de principio a fin.

Preparación de conectores Kafka

En este punto de mi viaje, debo desviarme ligeramente del tutorial de Debezium. Ese tutorial muestra cómo iniciar un Conector MySQL de Debezium (con otra imagen Docker y una petición REST). Sin embargo, quiero introducir el Conector Couchbase Kafka.

La forma más sencilla de hacerlo es crear una imagen Docker personalizada. Esta usará la imagen Debezium Kafka connect como base, y simplemente le añadirá el archivo JAR Couchbase Kafka Connect. Para ello, crea un archivo de texto llamado Dockerfile:

Una vez hecho esto, construye la imagen: docker build . --tag couchbasedebezium. Llamé a la imagen couchbasedebeziumpero puedes llamarlo como quieras. Cuando termine, ejecute imágenes dockery couchbasedebezium debería aparecer en su repositorio local:

Inicio de Kafka Connect

Para iniciar Kafka Connect:

docker run -it --rm --name connect -p 8083:8083 -e GROUP_ID=1 -e CONFIG_STORAGE_TOPIC=my_connect_configs -e OFFSET_STORAGE_TOPIC=my_connect_offsets -e STATUS_STORAGE_TOPIC=my_connect_statuses --link zookeeper:zookeeper --link kafka:kafka --link mysql:mysql --link db:db couchbasedebezium

Esto iniciará una imagen Docker que usaremos para conectar Kafka tanto a MySQL como a Couchbase. Fíjate que estoy usando el couchbasedebezium y también estoy usando -enlace db:dbpero por lo demás es idéntico al tutorial de Debezium.

Hay dos pasos más:

  1. Indique a Kafka Connect que utilice MySQL como fuente.
  2. Indique a Kafka Connect que utilice Couchbase como sumidero.

Hay muchas formas de hacerlo, pero yo decidí utilizar la API REST de Kafka.

Conectarse a MySQL como fuente

Crear una solicitud POST a http://localhost:8083/connectors/ con el cuerpo:

Esto está sacado directamente del tutorial de Debezium. Tome nota especial de nombre.servidor.base.datos y base de datos.whitelist. Después de POST esto, los datos comenzarán inmediatamente a fluir desde MySQL a Kafka.

Conectar a Couchbase como sumidero

Crear otra petición POST a http://localhost:8083/connectors/ con el cuerpo:

Esta configuración se ha extraído en gran medida del Inicio rápido de Couchbase. En lugar de ser un archivo de texto para la línea de comandos, es un HTTP POST. Tome nota especial de:

  • clase.conector - Esta es la clase del conector que se encuentra en el archivo JAR
  • temas - Los temas de los que se hundirá Couchbase.
  • conexion.direccion_cluster - Cuando inicié Couchbase en Docker, le di un nombre de "db"
  • conexión.bucket, nombre.de.usuario.de.la.conexión, contraseña.de.conexión - Estas son todas las configuraciones que creé cuando configuré Couchbase.

Los datos ya fluyen

Ahora, los datos deberían estar fluyendo hacia tu bucket de Couchbase. Conéctate a Couchbase, y verás 4 documentos en el bucket de staging (esto corresponde a las 4 filas de datos en la base de datos MySQL de ejemplo). Añade o actualiza los datos en la base de datos MySQL y más registros comenzarán a rodar en el cubo Couchbase automáticamente.

Pasé por todo este proceso en mi Código en directo en Twitch. Si quieres ver todo el proceso en acción, he preparado un vídeo que muestra todos los pasos:

[youtube https://www.youtube.com/watch?v=HCAY7EMm3pg&w=560&h=315]

Recursos y próximos pasos

Ahora que has completado este tutorial, hay otras direcciones en las que puedes seguir explorando.

  • Orquestación: esta muestra contiene muchas imágenes Docker que se ejecutan manualmente. En un entorno de producción, es probable que desee orquestar y escalar algunas o todas estas piezas con algo como Kubernetes. Existe una Operador de Kubernetes para Couchbase Enterprise.
  • Cliente 360: Transmitir datos de una base de datos MySQL a Couchbase es sólo un paso en esta dirección. Una aplicación Customer 360 probablemente extraerá datos de una variedad de otras bases de datos. Permanece atento al Blog de Couchbase y a los Tutoriales de Couchbase para más información sobre cómo construir una arquitectura de ingesta de Customer 360.

Si tiene alguna pregunta, puede ponerse en contacto conmigo en Twitter @mgrovesdeja un comentario a continuación, o sintoniza mi próximo Código en directo.

Si tiene alguna pregunta técnica sobre Couchbase o el conector Couchbase Kafka, no deje de consultar la página Foros de Couchbase.

Comparte este artículo
Recibe actualizaciones del blog de Couchbase en tu bandeja de entrada
Este campo es obligatorio.

Autor

Publicado por Matthew Groves

A Matthew D. Groves le encanta programar. No importa si se trata de C#, jQuery o PHP: enviará pull requests para cualquier cosa. Lleva codificando profesionalmente desde que escribió una aplicación de punto de venta en QuickBASIC para la pizzería de sus padres, allá por los años noventa. Actualmente trabaja como Director de Marketing de Producto para Couchbase. Su tiempo libre lo pasa con su familia, viendo a los Reds y participando en la comunidad de desarrolladores. Es autor de AOP in .NET, Pro Microservices in .NET, autor de Pluralsight y MVP de Microsoft.

Deja un comentario

¿Listo para empezar con Couchbase Capella?

Empezar a construir

Consulte nuestro portal para desarrolladores para explorar NoSQL, buscar recursos y empezar con tutoriales.

Utilizar Capella gratis

Ponte manos a la obra con Couchbase en unos pocos clics. Capella DBaaS es la forma más fácil y rápida de empezar.

Póngase en contacto

¿Quieres saber más sobre las ofertas de Couchbase? Permítanos ayudarle.