Debezium 介绍及其使用场景

简介:

What is Debezium?
Debezium is a set of distributed services that capture row-level changes in your databases so that 
your applications can see and respond to those changes. Debezium records in a transaction log all row-level 
changes committed to each database table. Each application simply reads the transaction logs their 
interested in, and they see all of the events in the same order in which they occurred.
什么是Debezium:
Debezium是JBOSS主导开发的一款分布式的支持数据库CDC捕获行级别的数据变更的工具。是由java开发的,代码开源。


Where did the name "Debezium" come from?
The name is a combination of "DBs", as in the abbreviation for multiple databases, and the "-ium" suffix 
used in the names of many elements of the periodic table. Say it fast: "DBs-ium". If it helps, we say 
it like "dee-BEE-zee-uhm".
Debezium名称来源:
Debezium是DBs的组合。

What databases can Debezium monitor?
The latest version of Debezium includes support for monitoring MySQL database servers, MongoDB replica sets 
or sharded clusters, and PostgreSQL servers. In addition there are work-in-progress Debezium connectors 
for Oracle servers (based on XStream) and SQL Server databases which are released as preview versions 
as of Debezium 0.8/0.9.

Note that monitoring PostgreSQL requires installing an extension ("logical decoding plugin") into 
the PostgreSQL server. Debezium works with Decoderbufs (maintained by the Debezium community) and wal2json.



What are some uses of Debezium?
The primary use of Debezium is to enable applications to respond almost immediately whenever data 
in databases change. Applications can do anything with the insert, update, and delete events. 
They might use the events to know when to remove entries from a cache. They might update search indexes 
with the data. They might update a derived data store with the same information or with information 
computed from the changing data, such as with Command Query Responsibility Separation (CQRS). 
They might send a push notification to one or more mobile devices. They might aggregate the changes 
and produce a stream of patches for entities.


适用场景:
可以帮助我们解决好多数据实时变更处理、数据分析、微服务的数据通信 
缓存独立(Cache invalidation)
简化单体应用(Simplifying monolithic applications)
数据库切片(Sharing databases)
数据集成(Data integration)
命令查询职责分离(Command Query Responsibility Separation)

源码编译需要的环境信息:
Git 2.2.1 or later
JDK 8 or OpenJDK 8
Maven 3.2.1 or later
Docker Engine 1.9 or later
可通过下列命令查询:
$ git --version
$ javac -version
$ mvn -version
$ docker --version

点击下载文件:
有编译好的jar包:
下载文件:
https://repo1.maven.org/maven2/io/debezium/
源码包:
https://github.com/debezium/debezium

支持的版本:
支持MySQL、mongodb、SQL server、oracle、postgresql将变更的数据发送到kafka.
MySQL发送的数据格式支持JSON和avro,其他数据库支持JSON格式的数据。

支持的拓扑:
MySQL:

MongoBD:

SQL server:

Oracle:

Postgresql:

Debezium的监控方案:

Debezium+kafka connect+prometheus+kafka+jmx_exporter

可借鉴的方案:
MySQL-->Debezium-->kafka-->ElasticSearch




参考:
官网: https://debezium.io/
Github: https://github.com/debezium/debezium
https://debezium.io/docs/roadmap/
https://debezium.io/docs/faq/

https://github.com/prometheus/jmx_exporter

 

你可能感兴趣的:(Kafka)