使用Spring Cloud Data Flow + CDC Debezium源实时实现变更数据捕获 - SpringIO


在本文中,我们将研究Debezium CDC源,该使我们能够从MySQL,PostgreSQL,MongoDB,Oracle,DB2和SQL Server等数据库捕获数据库更改,并通过各种消息绑定器实时处理这些更改,例如RabbitMQ,Apache Kafka,Azure事件中心,Google PubSub和Solace PubSub +等。演示使用Spring Cloud Data Flow(SCDF)部署流实时响应数据库更新,将变更事件转换为分析指标并将其发布到Prometheus进行分析和可视化的流水线管道有多么容易。格拉法纳(Grafana)。
 
更改数据捕获(CDC)是一种用于观察写入数据库的所有数据更改并将其发布为可以以流方式处理的事件的技术。由于您的应用程序数据库总是在变化,因此CDC允许您对这些更改做出反应,并让您的应用程序按照提交给数据库的顺序来传输每个行级更改。
CDC支持多种用例,例如:缓存无效,内存中的数据视图,更新搜索索引,通过使不同数据源保持同步来复制数据,实时欺诈检测,存储审计跟踪,数据出处等等。
Spring Cloud Data Flow CDC Source应用程序围绕Debezium构建,Debezium是一种流行的,开源的,基于日志的CDC实现,支持各种数据库。
CDC source实现嵌入了Debezium引擎,它不依赖于Apache Kafka或ZooKeeper!您可以将CDC source连同任何受支持的消息绑定器一起使用!
这是用于连接到MySQL数据库的示例配置:

# DB type
cdc.connector=mysql

# DB access
cdc.config.database.user=debezium
cdc.config.database.password=dbz
cdc.config.database.hostname=localhost
cdc.config.database.port=3306

# DB source metadata
cdc.name=my-sql-connector
cdc.config.database.server.id=85744
cdc.config.database.server.name=my-app-connector

在cdc.name, cdc.config.database.server.id和cdc.config.database.server.name属性用于识别和调度传入的事件。
所有开箱即用的Spring Cloud Stream源应用程序已经自动配置了多个开箱即用的通用处理器。您可以将这些处理器激活为CDC源的一部分。下面这是一个示例,我们在其中运行CDC源并接收数据,然后转换消耗的数据,然后再将其发送到中间件上的目标。
java -jar cdc-debezium-source.jar
 --cdc.connector=mysql --cdc.name=my-sql-connector
 --cdc.config.database.server.name=my-app-connector
 --cdc.config.database.user=debezium --cdc.config.database.password=dbz
 --cdc.config.database.hostname=localhost --cdc.config.database.port=3306
 --cdc.schema=true
 --cdc.flattening.enabled=true
 --spring.cloud.function.definition=cdcSupplier|spelFunction
 --spel.function.expression=payload.toUpperCase()

更多参考原文,吐槽:Spring.io的文档非常差,难以理解,这些人有逻辑能力吗?是搞程序的吗?