Introducción: Para las empresas, el principal desafío de la recopilación de datos nunca ha sido simplemente la "sincronización", sino cómo asegurar la exactitud, integridad y actualidad de los datos en un entorno a gran escala, heterogéneo y complejo. Este artículo profundiza en la práctica de SUPCON de construir un marco de recopilación de datos a nivel empresarial basado en Apache SeaTunnel, centrándose en compartir conocimientos específicos y soluciones en aspectos como la configuración de alta disponibilidad de clusters, la optimización del rendimiento, los mecanismos de tolerancia a fallos y el seguimiento de la calidad de los datos. Introducción: Para las empresas, el principal desafío de la recopilación de datos nunca ha sido simplemente la "sincronización", sino cómo asegurar la exactitud, integridad y actualidad de los datos en un entorno a gran escala, heterogéneo y complejo. Este artículo profundiza en la práctica de SUPCON de construir un marco de recopilación de datos a nivel empresarial basado en Apache SeaTunnel, centrándose en compartir conocimientos específicos y soluciones en aspectos como la configuración de alta disponibilidad de clusters, la optimización del rendimiento, los mecanismos de tolerancia a fallos y el seguimiento de la calidad de los datos. Dilema: Arquitectura de la colección Siloed y altos costes de operación y mantenimiento Como una empresa de plataforma de IA industrial profundamente empoderando la industria de procesos, el negocio global de SUPCON ha estado continuamente desarrollando. Actualmente, cuenta con casi 40 subsidiarias globales y sirve a más de 35.000 clientes globales. La expansión continua del negocio ha planteado mayores requisitos para el trabajo de datos: los datos no solo necesitan ser "calculados rápidamente" sino también "aterrizados con precisión". A este fin, hemos construido una plataforma de datos grandes separada por flujo para hacer frente a escenarios complejos. Sin embargo, la complejidad de la propia plataforma ha aumentado inversamente la dificultad de recopilación de datos, desarrollo y operación & mantenimiento, especialmente en el enlace de fuente de recopilación de datos, donde nos enfrentamos a serios desafíos: : En el pasado, durante mucho tiempo nos basamos en soluciones compuestas de múltiples herramientas (como el uso de Sqoop para la sincronización de datos de lotes con HDFS, y Maxwell/StreamSets para procesar los registros incrementales de la base de datos y escribirlos a Kafka/Kudu). (1) Complex Architecture with Silos La falta de un mecanismo unificado de monitoreo y alerta significa que cualquier anormalidad (como retrasos en la sincronización, agotamiento de recursos) requiere una gran cantidad de mano de obra para la resolución de problemas y la "combate contra incendios", lo que dificulta garantizar la estabilidad. (2) O&M Black Hole, Constantly Firefighting : Cuando se enfrentan a nuevas fuentes de datos (como las bases de datos domésticas y SAP HANA), necesitamos encontrar soluciones de adaptación en diferentes herramientas o desarrollar plug-ins de forma independiente, lo que hace imposible responder rápidamente a las necesidades de negocio. (3) Segmented Capabilities, Difficult to Expand La figura anterior muestra claramente el ecosistema de recopilación previamente descentralizado. Nos dimos cuenta de que este modelo "desorganizado" se ha convertido en el enlace más vulnerable en el procesamiento de datos. No sólo no se ajusta a la velocidad de desarrollo futura de la empresa, sino que también plantea amenazas potenciales para la calidad y la actualidad de los datos. Romper el dilema: pensamientos sobre un marco de colección unificado y la selección de tecnologías Después de analizar y reflexionar en profundidad, hemos aclarado los cinco criterios básicos de selección para las nuevas tecnologías: Debe cubrir plenamente todos los tipos de fuentes de datos actuales y futuras de la empresa (de MySQL, Oracle, HANA a Kafka, StarRocks, etc.) y soportar tanto los modos de recopilación offline como en tiempo real, solucionando fundamentalmente el problema de las pilas de tecnología unificadas. (1) Comprehensive Connectivity : El marco en sí debe ser un clúster distribuido altamente disponible con una fuerte tolerancia a los errores. Incluso si un nodo único falla, todo el servicio no debe ser interrumpido y puede recuperarse automáticamente, asegurando el funcionamiento continuo del tubo de recopilación de datos. (2) Cluster Stability and High Availability En el nivel de ejecución de tareas, debe proporcionar semántica de procesamiento Exactamente una vez o Al menos una vez para garantizar que las tareas puedan recuperarse automáticamente de los puntos de interrupción después de interrupciones anormales, eliminando la duplicación o pérdida de datos, que es la piedra angular de la calidad de los datos. (3) Reliable Data Consistency Guarantee Su arquitectura debe apoyar la expansión horizontal, y el rendimiento de sincronización se puede mejorar linealmente añadiendo nodos para satisfacer las necesidades de crecimiento de datos traídas por el rápido desarrollo del negocio. (4) Strong Throughput Performance Debe proporcionar un mecanismo completo de monitoreo y alerta, que puede rastrear indicadores clave como anomalías, retrasos y rendimiento durante la sincronización de datos en tiempo real, y notificar al personal de operación y mantenimiento de forma oportuna, transformando la "combate de incendios" pasiva en una "alerta temprana" activa. (5) Observable O&M Experience Sobre la base de estos cinco criterios, llevamos a cabo investigaciones en profundidad y pruebas comparativas sobre soluciones mainstream en la industria. Finalmente, Apache SeaTunnel se desempeñó excelentemente en todas las dimensiones y se convirtió en nuestra solución óptima para romper el dilema. Our Core Requirements Apache SeaTunnel's Solutions Comprehensive Connectivity It has an extremely rich Connector ecosystem, officially supporting the reading and writing of hundreds of source/destination databases, fully covering all our data types. A single framework can unify offline and real-time collection. Cluster Stability and High Availability The separated architecture of SeaTunnel Engine ensures that even if a single Master or Worker node is abnormal, it will not affect the continuity of collection tasks. Reliable Data Consistency Guarantee It provides a powerful fault tolerance mechanism, supports Exactly-Once semantics, and can realize automatic breakpoint resumption after task abnormalities through the Checkpoint mechanism, ensuring no data loss or duplication. Strong Throughput Performance It has excellent distributed data processing capabilities. Parallelism can be adjusted through simple configuration, easily realizing horizontal expansion. Observable O&M Experience It provides rich monitoring indicators and can be seamlessly integrated with mainstream monitoring and alerting systems such as Prometheus, Grafana, and AlertManager, allowing us to have a clear understanding of the data collection process. Conectividad integral Tiene un ecosistema Connector extremadamente rico, soportando oficialmente la lectura y escritura de cientos de bases de datos de fuente / destino, cubriendo completamente todos nuestros tipos de datos. Estabilidad del clúster y alta disponibilidad La arquitectura separada de SeaTunnel Engine asegura que incluso si un solo nodo Master o Worker es anormal, no afectará a la continuidad de las tareas de recogida. Garantía de datos fiables Proporciona un poderoso mecanismo de tolerancia de fallos, soporta la semántica Exactly-Once, y puede realizar la reanudación automática del punto de ruptura después de las anomalías de la tarea a través del mecanismo Checkpoint, asegurando que no se pierdan ni se dupliquen los datos. Fuerte rendimiento a través Tiene excelentes capacidades de procesamiento de datos distribuidos.El paralelismo se puede ajustar a través de la configuración simple, realizando fácilmente la expansión horizontal. Experiencia de O&M Proporciona ricos indicadores de seguimiento y se puede integrar sin problemas con sistemas de seguimiento y alerta mainstream como Prometheus, Grafana y AlertManager, lo que nos permite tener una comprensión clara del proceso de recopilación de datos. Práctica: Planes específicos de ejecución y detalles Nuestra práctica con Apache SeaTunnel es también el camino de crecimiento del proyecto.En las primeras etapas, construimos sobre la base de Apache SeaTunnel v2.3.5.En ese momento, para satisfacer algunas necesidades específicas (como el manejo de problemas de sensibilidad de casos de diferentes nombres de tablas de bases de datos o nombres de campos), realizamos algún trabajo de desarrollo secundario. Sin embargo, con el rápido desarrollo de la comunidad SeaTunnel, las funciones y los convertidores de la nueva versión se han vuelto cada vez más completos.Cuando actualizamos con éxito el clúster a Apache SeaTunnel v2.3.11, nos sorprendió agradablemente descubrir que las necesidades que anteriormente requerían desarrollo personalizado ahora son soportadas nativamente en la nueva versión. Actualmente, todas nuestras tareas de sincronización de datos se implementan en base a la versión oficial, logrando cero modificaciones, lo que reduce considerablemente nuestros costes de mantenimiento a largo plazo y nos permite disfrutar sin problemas de las últimas funciones y mejoras de rendimiento aportadas por la comunidad. Los siguientes son nuestros planes de implementación básicos basados en la versión v2.3.11, que han sido verificados por el volumen de datos de nivel TB en el entorno de producción y han puesto una base sólida para el excelente rendimiento de 0 fallas desde que se construyó el clúster. 1) Planificación del clúster Para garantizar la alta disponibilidad del clúster, se recomienda priorizar la implementación de un clúster de modo separado. Node CPU Memory Disk JVM Heap Master-01 8C 32G 200G 30G Master-02 8C 32G 200G 30G Worker-01 16C 64G 500G 62G Worker-02 16C 64G 500G 62G Worker-03 16C 64G 500G 62G Maestro 01 8C 32G 200g 30g Maestro 02 8C 32G 200g 30g Trabajadores 01 16C 64G 500g 62G Trabajadores 02 16C 64G 500g 62G Trabajadores 03 16C 64G 500g 62G (2) Archivos de configuración de clusters clave This configuration file is mainly used to define the execution behavior, fault tolerance mechanism, and operation and maintenance monitoring settings of jobs. It optimizes performance by enabling class loading caching and dynamic resource allocation, and ensures job fault tolerance and data consistency by configuring S3-based Checkpoints. In addition, it can enable indicator collection, log management, and settings, thereby providing comprehensive support for the stable operation, monitoring, and daily management of jobs. seatunnel.yaml seatunnel: engine: # Class loader cache mode: After enabling, it can significantly improve performance when jobs are frequently started and stopped, reducing class loading overhead. It is recommended to enable it in the production environment. classloader-cache-mode: true # Expiration time of historical job data (unit: minutes): 3 days. Historical information of completed jobs exceeding this time will be automatically cleaned up. history-job-expire-minutes: 4320 # Number of data backups backup-count: 1 # Queue type: Blocking queue queue-type: blockingqueue # Execution information printing interval (seconds): Print job execution information in the log every 60 seconds. print-execution-info-interval: 60 # Job metric information printing interval (seconds): Print detailed metric information in the log every 60 seconds. print-job-metrics-info-interval: 60 slot-service: # Dynamic Slot management: After enabling, the engine will dynamically allocate computing slots based on node resource conditions, improving resource utilization. dynamic-slot: true # Checkpoint configuration. checkpoint: interval: 60000 # Time interval between two Checkpoints, in milliseconds (ms). Here it is 1 minute. timeout: 600000 # Timeout for Checkpoint execution, in milliseconds (ms). Here it is 10 minutes. storage: type: hdfs # The storage type is declared as HDFS here, and the actual storage is in the S3 below. max-retained: 3 # Maximum number of Checkpoint histories to retain. Old Checkpoints will be automatically deleted to save space. plugin-config: storage.type: s3 # The actual configured storage type is S3 (or object storage compatible with S3 protocol such as MinIO) fs.s3a.access.key: xxxxxxx # Access Key of S3-compatible storage fs.s3a.secret.key: xxxxxxx # Secret Key of S3-compatible storage fs.s3a.endpoint: http://xxxxxxxx:8060 # Service endpoint (Endpoint) address of S3-compatible storage s3.bucket: s3a://seatunel-pro-bucket # Name of the bucket used to store Checkpoint data fs.s3a.aws.credentials.provider: org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider # Authentication credential provider # Observability configuration telemetry: metric: enabled: true # Enable metric collection logs: # Enable scheduled log deletion: Enable the automatic cleaning function of log files to prevent logs from filling up the disk. scheduled-deletion-enable: true # Web UI and REST API configuration http: enable-http: true # Enable Web UI and HTTP REST API services port: 8080 # Port number bound by the Web service enable-dynamic-port: false # Disable dynamic ports. Whether to enable other ports if 8080 is occupied. # The following is the Web UI basic authentication configuration enable-basic-auth: true # Enable basic identity authentication basic-auth-username: admin # Login username basic-auth-password: xxxxxxx # Login password This JVM parameter configuration file is mainly used to ensure the stability and performance of the SeaTunnel engine during large-scale data processing. It provides basic memory guarantee by setting the heap memory and metaspace capacity, and conducts a series of optimizations specifically for the G1 garbage collector to effectively manage memory garbage, control garbage collection pause time, and improve operating efficiency. jvm_master_options # JVM heap memory -Xms30g -Xmx30g # Memory overflow diagnosis: Automatically generate a Heap Dump file when OOM occurs, and save it to the specified path for subsequent analysis. -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/seatunnel/dump/zeta-server # Metaspace: Limit the maximum capacity to 5GB to prevent metadata from expanding infinitely and occupying too much local memory. -XX:MaxMetaspaceSize=5g # G1 garbage collector related configuration -XX:+UseG1GC # Enable G1 garbage collector -XX:+PrintGCDetails # Print detailed GC information in the log -Xloggc:/path/to/gc.log # Output GC logs to the specified file -XX:+PrintGCDateStamps # Print timestamps in GC logs -XX:MaxGCPauseMillis=5000 # The target maximum GC pause time is 5000 milliseconds (5 seconds) -XX:InitiatingHeapOccupancyPercent=50 # Start concurrent GC cycle when heap memory usage reaches 50% -XX:+UseStringDeduplication # Enable string deduplication to save memory space -XX:GCTimeRatio=4 # Set the target ratio of GC time to application time -XX:G1ReservePercent=15 # Reserve 15% of heap memory -XX:ConcGCThreads=6 # Set the number of threads used in the concurrent GC phase to 6 -XX:G1HeapRegionSize=32m # Set the G1 region size to 32MB This configuration file defines the underlying distributed architecture and collaboration mechanism of the SeaTunnel engine cluster. It is mainly used to establish and manage network communication between cluster nodes. The configuration also includes a high-precision failure detection heartbeat mechanism to ensure that node failure problems can be quickly detected and handled, ensuring the high availability of the cluster. At the same time, it enables distributed data persistence based on S3-compatible storage, reliably saving key state information to object storage. hazelcast-master.yaml (iMap stored in self-built object storage) hazelcast: cluster-name: seatunnel # Cluster name, which must be consistent across all nodes network: rest-api: enabled: true # Enable REST API endpoint-groups: CLUSTER_WRITE: enabled: true DATA: enabled: true join: tcp-ip: enabled: true # Use TCP/IP discovery mechanism member-list: # Cluster node list - 10.xx.xx.xxx:5801 - 10.xx.xx.xxx:5801 - 10.xx.xx.xxx:5802 - 10.xx.xx.xxx:5802 - 10.xx.xx.xxx:5802 port: auto-increment: false # Disable port auto-increment port: 5801 # Fixed port 5801 properties: hazelcast.invocation.max.retry.count: 20 # Maximum number of invocation retries hazelcast.tcp.join.port.try.count: 30 # Number of TCP connection port attempts hazelcast.logging.type: log4j2 # Use log4j2 logging framework hazelcast.operation.generic.thread.count: 50 # Number of generic operation threads hazelcast.heartbeat.failuredetector.type: phi-accrual # Use Phi-accrual failure detector hazelcast.heartbeat.interval.seconds: 2 # Heartbeat interval (seconds) hazelcast.max.no.heartbeat.seconds: 180 # No heartbeat timeout (seconds) hazelcast.heartbeat.phiaccrual.failuredetector.threshold: 10 # Failure detection threshold hazelcast.heartbeat.phiaccrual.failuredetector.sample.size: 200 # Detection sample size hazelcast.heartbeat.phiaccrual.failuredetector.min.std.dev.millis: 100 # Minimum standard deviation (milliseconds) hazelcast.operation.call.timeout.millis: 150000 # Operation call timeout (milliseconds) map: engine*: map-store: enabled: true # Enable Map storage persistence initial-mode: EAGER # Load all data immediately at startup factory-class-name: org.apache.seatunnel.engine.server.persistence.FileMapStoreFactory # Persistence factory class properties: type: hdfs # Storage type namespace: /seatunnel/imap # Namespace path clusterName: seatunnel-cluster # Cluster name storage.type: s3 # Actually use S3-compatible storage fs.s3a.access.key: xxxxxxxxxxxxxxxx # S3 access key fs.s3a.secret.key: xxxxxxxxxxxxxxxx # S3 secret key fs.s3a.endpoint: http://xxxxxxx:8060 # S3 endpoint address s3.bucket: s3a://seatunel-pro-bucket # S3 storage bucket name fs.s3a.aws.credentials.provider: org.apache.hadoop.fs.s3a.SimpleAWSCredentialsProvider # Authentication provider (3) Ejemplos de tareas de recopilación ① MySQL-CDC to StarRocks Para recopilar datos MySQL-CDC, es necesario asegurarse de que la base de datos fuente haya habilitado Binlog con el formato de ROW, el usuario tiene los permisos pertinentes, y el paquete correspondiente MySQL Jar se coloca en el Para más detalles, por favor, visite el sitio web oficial: . ${SEATUNNEL_HOME}/lib https://seatunnel.apache.org/docs/2.3.11/connector-v2/source/MySQL-CDC A continuación se muestra una configuración de muestra para nuestra colección de MySQL-CDC. env { parallelism = 1 # Parallelism is set to 1; only 1 is allowed for streaming collection job.mode = "STREAMING" # Streaming job mode job.name = cdh2sr # Job name identifier job.retry.times = 3 # Number of retries if the job fails job.retry.interval.seconds=180 # Retry interval (in seconds) } source { MySQL-CDC { base-url = "jdbc:mysql://xxxxxxx:3306/databasename" # MySQL connection address username = "xxxxxxr" # Database username password = "xxxxxx" # Database password table-names = ["databasename.table1","databasename_pro.table2"] # List of tables to sync (format: database.table name) startup.mode = "latest" # Start syncing from the latest position exactly_once = true # Enable Exactly-Once semantics debezium { include.schema.changes = "false" # Exclude schema changes snapshot.mode = when_needed # Take snapshots on demand } } } transform { TableRename { plugin_input = "cdc" # Input plugin identifier plugin_output = "rs" # Output plugin identifier convert_case = "LOWER" # Convert table names to lowercase prefix = "ods_cdh_databasename_" # Add prefix to table names } } sink { StarRocks { plugin_input = "rs" # Input plugin identifier (consistent with transform output) nodeUrls = ["xxxxxxx:8030","xxxxxxx:8030","xxxxxxx:8030"] # StarRocks FE node addresses base-url = "jdbc:mysql://xxxxxxx:3307" # StarRocks MySQL protocol address username = "xxxx" # StarRocks username password ="xxxxxxx" # StarRocks password database = "ods" # Target database enable_upsert_delete = true # Enable update/delete functionality max_retries = 3 # Number of retries if write fails http_socket_timeout_ms = 360000 # HTTP timeout (in milliseconds) retry_backoff_multiplier_ms = 2000 # Retry backoff multiplier max_retry_backoff_ms = 20000 # Maximum retry backoff time batch_max_rows = 2048 # Maximum number of rows per batch batch_max_bytes = 50000000 # Maximum bytes per batch } } ② Oracle-CDC to StarRocks Para recopilar datos de Oracle-CDC, asegúrese de que la base de datos fuente tenga Logminer habilitado, el usuario tenga los permisos pertinentes, y coloque los paquetes correspondientes OJDBC.Jar y Orai18n.jar en el Para más información, consulte la página oficial: . ${SEATUNNEL_HOME}/lib https://seatunnel.apache.org/docs/2.3.11/connector-v2/source/Oracle-CDC En particular, en lo que respecta a los problemas de latencia que se encuentran durante la recogida de Oracle-CDC, se recomienda primero pedir al DBA que compruebe la frecuencia con la que se cambian los registros de Logminer. La recomendación oficial es mantenerlo alrededor de 10 veces por hora —conversión demasiado frecuente puede causar una latencia prolongada. Si la frecuencia es demasiado alta, aumente el tamaño de los archivos de registro individuales. -- Query log switch frequency SELECT GROUP#, THREAD#, BYTES/1024/1024 || 'MB' "SIZE", ARCHIVED, STATUS FROM V$LOG; SELECT TO_CHAR(first_time, 'YYYY-MM-DD HH24') AS hour, COUNT(*) AS switch_count FROM v$log_history WHERE first_time >= TRUNC(SYSDATE) - 1 -- Data from the past day GROUP BY TO_CHAR(first_time, 'YYYY-MM-DD HH24') ORDER BY hour; -- Query log file size SELECT F.MEMBER, L.GROUP#, L.THREAD#, L.SEQUENCE#, L.BYTES/1024/1024 AS SIZE_MB, L.ARCHIVED, L.STATUS, L.FIRST_CHANGE#, L.NEXT_CHANGE# FROM V$LOG L, V$LOGFILE F WHERE F.GROUP# = L.GROUP# ORDER BY L.GROUP#; A continuación se muestra una configuración de muestra para nuestra colección Oracle-CDC. env { parallelism = 1 # Parallelism is 1; only 1 is allowed for streaming collection job.mode = "STREAMING" # Streaming job mode job.name = bpm2sr # Job name identifier job.retry.times = 3 # Number of retries if the job fails job.retry.interval.seconds=180 # Retry interval (in seconds) } source { Oracle-CDC { plugin_output = "cdc" # Output plugin identifier base-url = "jdbc:oracle:thin:@xxxxxx:1521:DB" # Oracle connection address username = "xxxxxx" # Database username password = "xxxxxx" # Database password table-names = ["DB.SC.TABLE1","DB.SC.TABLE2"] # Tables to sync (format: database.schema.table name) startup.mode = "latest" # Start syncing from the latest position database-names = ["DB"] # Database name schema-names = ["SC"] # Schema name skip_analyze = true # Skip table analysis use_select_count = true # Use statistics exactly_once = true # Enable Exactly-Once semantics connection.pool.size = 20 # Connection pool size debezium { log.mining.strategy = "online_catalog" # Log mining strategy log.mining.continuous.mine = true # Continuously mine logs lob.enabled = false # Disable LOB support internal.log.mining.dml.parser ="legacy" # Use legacy DML parser } } } transform { TableRename { plugin_input = "cdc" # Input plugin identifier plugin_output = "rs" # Output plugin identifier convert_case = "LOWER" # Convert table names to lowercase prefix = "ods_crm_db_" # Add prefix to table names } } sink { StarRocks { plugin_input = "rs" # Input plugin identifier nodeUrls = ["xxxxxxx:8030","xxxxxxx:8030","xxxxxxx:8030"] # StarRocks FE nodes base-url = "jdbc:mysql://xxxxxxx:3307" # JDBC connection address username = "xxxx" # Username password ="xxxxxxx" # Password database = "ods" # Target database enable_upsert_delete = true # Enable update/delete max_retries = 3 # Maximum number of retries http_socket_timeout_ms = 360000 # HTTP timeout retry_backoff_multiplier_ms = 2000 # Retry backoff multiplier max_retry_backoff_ms = 20000 # Maximum retry backoff time batch_max_rows = 2048 # Maximum rows per batch batch_max_bytes = 50000000 # Maximum bytes per batch } } 4) Observación observable Gracias a las potentes métricas de seguimiento proporcionadas por la nueva versión de SeaTunnel y el sistema de seguimiento integral que hemos construido, podemos comprender plenamente el estado de la plataforma de recopilación de datos desde la perspectiva de todo el clúster y el nivel de tareas. ① Cluster Monitoring Estado del nodo: monitoreo en tiempo real del número de nodos del clúster y su estado de supervivencia para garantizar que los nodos de Worker no están fuera de línea anormales y garantizar las capacidades de procesamiento del clúster. Permeabilidad del clúster: monitorear el total de SourceReceivedQPS y SinkWriteQPS del clúster para captar las tasas globales de ingreso y salida de datos, y evaluar la carga del clúster. Estado de los recursos: monitorear la CPU y la memoria de los nodos de clúster para proporcionar una base para la expansión o optimización de los recursos. Salud de la red: Asegúrese de buenas condiciones de la red de clúster al monitorear el ritmo cardíaco interno y la latencia de la comunicación. ② Task Monitoring El estado de funcionamiento de las tareas: la verificación en tiempo real del estado de funcionamiento (Executado / Fracasado / Finalizado) de todas las tareas es el requisito más básico de monitorización. Volumen de sincronización de datos: monitorear el SourceReceivedCount y SinkWriteCount de cada tarea para captar el rendimiento de cada tubería de datos en tiempo real. Tiempo de latencia: Este es uno de los indicadores más críticos para las tareas del CDC. Las alertas se envían cuando se produce una latencia continua en el final de la recopilación. Resultados: Beneficios cuantificables Después de un período de operación estable, el marco de recopilación de datos de nueva generación basado en Apache SeaTunnel nos ha traído beneficios significativos y cuantificables, principalmente reflejados en los siguientes aspectos: (1) Estabilidad: De "Fuego constante" a "Paz de mente" : Under the old solution, 1-3 synchronization abnormalities needed to be handled per month. Since the new cluster was launched, core data synchronization tasks have maintained 0 failures, with no data service interruptions caused by the framework itself. Task failure rate reduced by over 99% : Relying on Apache SeaTunnel's Exactly-Once semantics and powerful Checkpoint mechanism, end-to-end Exactly-Once processing is achieved, completely solving the problem of potential trace data duplication or loss and fundamentally ensuring data quality. 100% data consistency : The high-availability design of the cluster ensures 99.99% service availability. Any single-point failure can be automatically recovered within minutes, with no impact on business operations. Significantly improved availability (2) Eficiencia: desarrollo duplicado y eficiencia de O&M : From writing and maintaining multiple sets of scripts in the past to unified configuration-based development. The time to connect new data sources has been reduced from 1-2 person-days to within 1 minute, showing a significant efficiency improvement. 50% improvement in development efficiency : Now, the overall status can be monitored through the Grafana dashboard, with daily active O&M investment of less than 0.5 person-hours. 70% reduction in O&M costs : End-to-end data latency has been optimized from minutes to seconds, providing a solid foundation for real-time data analysis and decision-making. Optimized data timeliness Arquitectura: optimización de recursos y marco unificado : Successfully integrated multiple technology stacks such as Sqoop and StreamSets into Apache SeaTunnel, greatly reducing technical complexity and long-term maintenance costs. Unified technology stack Perspectivas: planes futuros : We will actively explore the native deployment and scheduling capabilities of Apache SeaTunnel on Kubernetes, leveraging its elastic scaling features to achieve on-demand allocation of computing resources, further optimizing costs and efficiency, and better embracing hybrid cloud and multi-cloud strategies. (1) Full cloud native adoption : Build AIOps capabilities based on the rich Metrics data collected, realizing intelligent prediction of task performance, automatic root cause analysis of faults, and intelligent parameter tuning. (2) Intelligent O&M 6 Reconocimientos Aquí, agradecemos sinceramente a la comunidad de código abierto de Apache SeaTunnel.Al mismo tiempo, también agradecemos a todos los miembros del equipo de proyecto interno de la compañía -su trabajo duro y el coraje para explorar son las claves para la implementación exitosa de esta actualización de arquitectura. SUPCON desmontó las herramientas de datos de silo para Apache SeaTunnel —ahora las tareas de sincronización de núcleo ejecutan 0 fallas! 99% menos fallas, 100% de consistencia, 70% menos costo de O&M. ¡Gracias a @ApacheSeaTunnel! #DataEngineering #OpenSource