El socio perfecto para la integración de datos en tiempo real: tecnología CDC y solución integrada Kafka

Tabla de contenido

1. Sincronización de datos en tiempo real

2. Transmisión de datos confiable

3. Procesamiento de datos flexible

4. Sistemas de datos desacoplados

5. Introducción a las principales herramientas gratuitas de los CDC

6. Pasos de instalación y uso de Flink CDC:

7. Pasos de instalación y uso de ETL CDC

8. Escribe al final


1. Sincronización de datos en tiempo real

A medida que los datos empresariales continúan creciendo, cómo capturarlos, sincronizarlos y procesarlos de manera eficiente se ha vuelto clave para el desarrollo empresarial. En esta era digital, la integración de la tecnología CDC y Kafka proporciona a las empresas una solución de gestión de datos perfecta, abriendo una nueva puerta para el flujo de datos y el procesamiento en tiempo real.

La integración de la tecnología CDC y Kafka puede lograr una sincronización de datos en tiempo real rápida y confiable. La tecnología CDC captura los cambios de datos en los registros de transacciones de la base de datos y los convierte en flujos de datos confiables. Estos flujos de datos se transmiten a través de la cola de mensajes de alto rendimiento de Kafka, lo que garantiza datos consistentes y en tiempo real. Ya sea que se trate de sincronización desde la base de datos de origen a la base de datos de destino o de transferencia de datos entre diferentes sistemas de almacenamiento de datos, la tecnología CDC integrada con Kafka proporciona una solución eficiente y perfecta.

2. Transmisión de datos confiable

Como sistema de cola de mensajes distribuido y escalable, Kafka proporciona un mecanismo de transmisión de datos altamente confiable. Con el mecanismo de replicación de datos y almacenamiento persistente de Kafka, los datos no se perderán ni se dañarán. La integración de Kafka garantiza la integridad y confiabilidad de los datos incluso en condiciones de alta concurrencia. Esto proporciona a las empresas una base sólida para la transmisión de datos y garantiza la transmisión segura de datos en todos los aspectos.

3. Procesamiento de datos flexible

La integración de la tecnología CDC y Kafka no solo proporciona sincronización de datos en tiempo real, sino que también brinda a las empresas capacidades de procesamiento de datos flexibles. Las funciones de procesamiento de secuencias y colas de mensajes de Kafka permiten a las empresas realizar procesamiento y análisis de datos en tiempo real mientras transmiten datos. Con las aplicaciones de consumo de Kafka, las empresas pueden transformar, filtrar y agregar flujos de datos para lograr la limpieza, el procesamiento y el análisis de datos en tiempo real. Esta capacidad de procesamiento de datos en tiempo real proporciona a las empresas información instantánea, ayudándolas a tomar decisiones rápidas y precisas.

4. Sistemas de datos desacoplados

La integración de la tecnología CDC con Kafka también puede ayudar a las empresas a desacoplar los sistemas de datos. Al utilizar la tecnología CDC y Kafka como capa intermedia, diferentes fuentes de datos y sistemas de destino pueden operar de forma independiente, eliminando dependencias estrechamente vinculadas entre sí. Este desacoplamiento aporta una gran flexibilidad, lo que facilita a las empresas agregar, eliminar o actualizar fuentes de datos y sistemas de destino sin tener que reestructurar todo el proceso de datos.

La integración de la tecnología CDC y Kafka aporta una nueva experiencia en gestión de datos a las empresas. Proporciona sincronización de datos eficiente y confiable y procesamiento en tiempo real para ayudar a las empresas a lograr el éxito basado en datos. Ya sea sincronización de datos, procesamiento en tiempo real o desacoplamiento de sistemas de datos, la integración de la tecnología CDC y Kafka proporciona a las empresas una solución potente y flexible.

5. Introducción a las principales herramientas gratuitas de los CDC

Presentamos dos herramientas principales que pueden integrar de forma rápida y gratuita la tecnología CDC con Kafka: Flink CDC y ETLCloud CDC.

Preparación del entorno antes de la prueba: JDK8 o superior, base de datos Mysql (habilite BinLog), kafka

6. Pasos de instalación y uso de Flink CDC:

Descargue el paquete de instalación

Ingrese al sitio web oficial de Flink y descargue el paquete de instalación de la versión 1.13.3  flink-1.13.3-bin-scala_2.11.tgz. ( Flink1.13.3 admite la versión flink cdc2.x, que es compatible con flink cdc )

Abrir la cremallera

Cree el directorio de instalación /home/flink en el servidor, coloque el paquete de instalación de flink en este directorio y ejecute el comando de descompresión para descomprimirlo en el directorio actual. t ar  -zxvf  flink-1.13.3-bin-scala_2.11.tgz

puesta en marcha

Ingrese al directorio flink/lib descomprimido y cargue los paquetes de controladores mysql y sql-connector.

 Ingrese al directorio flink/bin y ejecute el comando de inicio: ./start-cluster.sh

 Ingrese a la interfaz visual de Flink para ver http://ip:8081

 prueba

A continuación, creemos un nuevo proyecto maven para realizar pruebas de sincronización del monitoreo de datos de CDC.

dependencia de POM

<!-- Flink CDC -->
< dependencia >
    < groupId >com.ververica</ groupId >
    < artefactoId >flink-connector-mysql-cdc</ artefactoId >
    < versión >2.0.0</ versión >
</ dependencia >
< dependencia >
    < groupId >org.apache.</ groupId >
    < artefactoId >flink-java</ artefactoId >
    < versión> 1.12.0 </ versión >
</ dependencia >
< dependencia >
    < groupId > org.apache.flink </ groupId >
    < artefactoId > flink-streaming-java_2.12 </ artefactoId >
    < versión > 1.12.0 </ versión >
</ dependencia >
< dependencia >
    < groupId > org.apache.flink </ grupoId >
    < artefactoId >flink-clients_2.12 </ artefactoId >
    < versión > 1.12.0 </ versión >
</ dependencia >
< dependencia >
    < grupoId > mysql </ grupoId >
    < artefactoId > mysql-connector-java </ artefactoId >
    < versión > 5.1 .49 < / versión >
</dependencia> <dependencia> <groupId> org . _
_ _ _apache.flink
    </ groupId >
    < artefactoId > flink-table-planner-blink_2.12 </ artefactoId >
    < versión > 1.12.0 </ versión >
</ dependencia >
< dependencia >
    < grupoId > com.alibaba </ grupoId >
    < artefactoId > fastjson </ artefactoId >
    < versión > 1.2.75 < / versión >
</dependencia> <
dependencia >
    < groupId >org.apache.flink</ groupId >
    < artefactoId >flink-connector-kafka_2.11</ artefactoId >
    < versión >1.12.0</ versión >
</ dependencia >

Utilice Flink_CDC2Kafka
para importar com.ververica.cdc.connectors.mysql.MySqlSource;
importar com.ververica.cdc.connectors.mysql.table.StartupOptions;
importar com.ververica.cdc.debezium.DebeziumSourceFunction;
importar org.apache.flink.api.common.serialization.SimpleStringSchema;
importar org.apache.flink.streaming.api.datastream.DataStreamSource;
importar org.apache.flink.streaming.api.environment.StreamExecutionEnvironment; importar org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer; clase pública Flink_CDC2Kafka { public static void main(String[] args) lanza una excepción {  


    
        //1. Obtener el entorno de ejecución StreamExecutionEnvironment env = StreamExecutionEnvironment. getExecutionEnvironment ();        env.setParallelism(1); //1.1 Establecer el backend de estado de CK&         // Omitido         // 2. Construir SourceFunction a través de FlinkCDC y leer los datos DebeziumSourceFunction< String> sourceFunction = MySqlSource.<String> builder ()                .hostname( "ip" )   //IP de la base de datos                 .port(3306) //Puerto de la base de datos                 .username( "admin" )   //Base de datos nombre de usuario.contraseña                 ( "contraseña" )    //contraseña de la base de datos                 .
        

        


        




"test" )    //Este comentario es sincronización de múltiples bases de datos.tableList ( "test.admin" ) //Este comentario es sincronización de múltiples tablas.deserializer ( new CustomerDeserialization()) //Necesita personalizar el formato de serialización aquí / / .deserializer(new StringDebeziumDeserializationSchema()) //El valor predeterminado es este formato de serialización.startupOptions (StartupOptions. last ())                .build();        DataStreamSource<String> streamSource = env.addSource(sourceFunction); //3. Imprime el datos y escribir datos en Kafka streamSource.print();        String SinkTopic = "test" ;        streamSource.addSink( getKafkaProducer ( "ip:9092" ,sinkTopic));
                
                

                


        
        


        //4.启动任务env.execute( "FlinkCDC" );     } //kafka 生产者public static FlinkKafkaProducer<String> getKafkaProducer(String brokers,String topic) { return new FlinkKafkaProducer<String>(brokers,topic, new SimpleStringSchema());     }}
        

    
    
        
                

Clase de serialización personalizada

importar com.alibaba.fastjson.JSONObject;
importar com.ververica.cdc.debezium.DebeziumDeserializationSchema;
importar io.debezium.data.Envelope;
importar org.apache.flink.api.common.typeinfo.BasicTypeInfo;
importar org.apache.flink.api.common.typeinfo.TypeInformation;
importar org.apache.flink.util.Collector;
importar org.apache.kafka.connect.data.Field;
importar org.apache.kafka.connect.data.Schema;
importar org.apache.kafka.connect.data.Struct;
importar org.apache.kafka.connect.source.SourceRecord;
importar java.util.ArrayList;
importar java.util.List;
public class CustomerDeserialization implements DebeziumDeserializationSchema<String> {
    @Override
     public void deserialize(SourceRecord sourceRecord, Collector<String> Collector) throws Exception {
         //1. Cree un objeto JSON para almacenar los datos finales JSONObject result = new JSONObject(); // 2. Obtenga el nombre de la biblioteca y el nombre de la tabla y colóquelos en la fuente String topic = sourceRecord.topic();        String[] campos = topic.split( " \\ ." );        String base de datos = campos[1];        String tableName = campos[2] ;        fuente JSONObject = nuevo
        
        
        



JSONObjeto();
        fuente.put( "base de datos" , base de datos);
        source.put( "tabla" , nombre de tabla);
        Valor de estructura = (Estructura) sourceRecord.value();
        //3.获取"antes"数据Estructura antes = value.getStruct( "antes" );         JSONObject beforeJson = nuevo JSONObject(); if (antes! = nulo ) {             Esquema antesEsquema = antes.esquema();             Lista<Campo> beforeFields = beforeSchema.fields(); for (Campo de campo: beforeFields) {                 Objeto beforeValue = before.get(field);
        

        


            

                beforeJson.put(field.name(), beforeValue);
            }
        }
        //4. Obtener datos "después" Struct after = value.getStruct( "después" );         JSONObject afterJson = new JSONObject(); if (después! = null ) {             Esquema afterSchema = after.schema();             Lista<Campo> afterFields = afterSchema.fields(); for (Campo de campo: afterFields) {                 Objeto afterValue = after.get(campo);                 afterJson.put(field.name() , afterValue);             }         } // 5. Obtenga el tipo de operación CREATE UPDATE DELETE para realizar letras que cumplan con Debezium-op
        

        


            




        
        Operación de sobre.Operación = Sobre. operaciónPara (sourceRecord);
        Tipo de cadena = operación.toString().toLowerCase();
        if ( "insertar" .equals(tipo)) {
            tipo = "c" ;
        }
        if ( "actualizar" .equals(tipo)) {
            tipo = "u" ;
        }
        if ( "eliminar" .equals(tipo)) {
            tipo = "d" ;
        }
        si ( "crear" .
            es igual(tipo)) { tipo = "c" ;
        }
        //6. Escribe los campos en el objeto JSON result.put( "source" , source);        result.put( "before" , beforeJson);        result.put( "after" , afterJson);        result.put( "op " , tipo); //7. Datos de salida recopilador.collect(result.toJSONString());    }@Override public TypeInformation<String> getProducedType() { return BasicTypeInfo. STRING_TYPE_INFO ;    }}
        



        
        

    
    
        

Activar el monitoreo de CDC

 Agregar un nuevo dato de personal en Mysql

 La consola captura datos incrementales.

 Los datos incrementales también se envían con éxito a Kafka.

En este punto, se ha completado el proceso de enviar datos incrementales desde la base de datos de monitoreo de Flink CDC a Kafka. Se puede ver que todo el proceso requiere algunas capacidades de codificación, lo cual es bastante doloroso de usar para el personal empresarial.

A continuación, presentaremos cómo el producto ETLCloud puede realizar rápidamente los escenarios anteriores mediante la configuración visual.

7. Pasos de instalación y uso de ETL CDC

Descargue el paquete de instalación

ETLCloud proporciona un paquete de implementación rápida con un solo clic. Solo necesita ejecutar el script de inicio para completar la instalación y la implementación del producto. Para descargar el paquete de implementación, puede iniciar sesión en el sitio web oficial de ETLCloud y descargarlo usted mismo.

Instalar

Descargue el paquete de implementación con un clic de Linux del sitio web oficial, coloque el paquete de implementación con un clic en un directorio, descomprímalo e ingrese al directorio.

Autorizar archivos de script

chmod +x restcloud_install.sh

Ejecutar script

./restcloud_install.sh

 Espere a que se inicie Tomcat. Cuando aparezca esta interfaz, restcloud demuestra que el inicio fue exitoso.

Configuración de fuente de datos

Se agregó información de la fuente de datos MySql.

Se agregó información de la fuente de datos de Kafka.

Fuente de datos de prueba

 Configuración del oyente

Agregar un nuevo oyente de base de datos

 Configuración del oyente

 Configuración del receptor (seleccione kafka como tipo de transmisión de datos)

 Configuración avanzada (parámetros predeterminados)

 Empieza a escuchar

 Monitoreo exitoso

 prueba

Abra la herramienta de visualización Navicat para agregar y modificar información del personal.

 Los datos de transmisión en tiempo real se pueden capturar dinámicamente en datos en tiempo real

 Ver nuevos datos en Kafka

 Ver datos modificados en Kafka

 8. Escribe al final

Arriba, hemos implementado la función de sincronizar datos en tiempo real con Kafka a través de dos herramientas CDC. Sin embargo, al comparar Flink CDC y ETLCloud CDC, podemos ver que ETLCloud CDC proporciona un método de configuración visual, lo que hace que el proceso de configuración sea más simple y rápido. y no requiere capacidad de codificación. Flink CDC requiere codificación, lo que puede tener un cierto costo de aprendizaje para el personal empresarial.

Independientemente de la herramienta que elija, puede integrar la tecnología CDC con Kafka para capturar cambios de datos incrementales en la base de datos en tiempo real, proporcionando un método de transmisión y sincronización de datos conveniente y eficiente.

Supongo que te gusta

Origin blog.csdn.net/kezi/article/details/131791191
Recomendado
Clasificación