开云体育官方注册网址Debezium博客

本教程最初由QuestDB,特邀撰稿人,Yitaek黄,向我们展示了如何通过Debezium和Kafka Connect使用变更数据捕获将数据流导入QuestDB。开云体育官方注册网址

在ScyllaDB,我们开发了高性能的NoSQL数据库开云体育电动老虎机“锡拉”, api兼容Apache Cassandra, Amazon DynamoDB和Redis。今年早些时候,我们引入了对变更数据捕获在锡拉4.3中。这个新特性似乎与Apache Kafka生态系统的集成完美匹配,所以我们开发了锡拉疾控中心源连接器使用Debezium开云体育官方注册网址框架。在这篇博文中,我们将介绍Scylla的CDC的基本结构,我们选择Debezium框架的原因以及我们所做的设计决策。开云体育官方注册网址

我很荣幸地宣布Debezium 1.7系列的第二版,开云体育官方注册网址1.7.0.Beta1

这次发布带来了NATS流支持Debezium服务开云体育官方注册网址器以及许多其他修复和增强。这个版本也是第一个使用Apache Kafka 2.8测试的版本。

创建新的主题/管道

当你在使用Kafka Connect分布式时,你可能已经意识到,一旦你开始使用Kafka Connect,就已经有一些内部的Kafka Connect相关主题为你创建:

$ kafka-topic .sh——bootstrap-server $HOSTNAME:9092——list connect_configs connect_offset connect_status

这是由Kafka Connect自动完成的,它有一个合理的、自定义的默认主题配置,可以满足这些内部主题的需求。

当你启动一个Debezium连接器开云体育官方注册网址时,被捕获事件的主题是由Kafka代理根据代理中的默认(可能是自定义的)配置创建的Auto.create.topics.enable = true在代理配置中启用:

Auto.create.topics.enable = true default.replication.factor = 1 num.partitions = 1压缩。Type = producer log.cleanup.policy = delete log.retention.ms = 604800000 ## 7天

但通常,当你在生产环境中使用Debezium和K开云体育官方注册网址afka时,你可能会选择禁用Kafka的主题自动创建功能Auto.create.topics.enable = false,或者希望连接器主题的配置与默认值不同。在这种情况下,您必须预先为Debezium捕获的数据源创建主题。开云体育官方注册网址
但也有好消息!从Kafka Connect 2.6.0版本开始,这可以自动完成kip - 158实现了Kafka Connect的自定义主题创建功能。

尽管Debeziu开云体育官方注册网址m可以很容易地捕获数据库更改并将其记录在Kafk开云体育电动老虎机a中,但您必须做出的一个更重要的决定是如何这些更改事件将在Kafka中序列化。Kafka中的每条消息都有一个键和一个值,对于Kafka来说,这些是不透明的字节数组。但是当你设置Kafka Connect时,你必须说明Debezium事件键和值应该如何序列化为二进制形式,你的消费者也开云体育官方注册网址必须将它们反序列化为可用的形式。

开云体育官方注册网址Debezium事件键和值都是结构化的,因此JSON当然是一个合理的选择——它灵活、无处不在、与语言无关,但另一方面它相当冗长。一种替代方案是Avro,它同样灵活且与语言无关,但速度更快,结果是较小的二进制表示。使用Avro需要更多的设置工作和一些额外的软件,但它的优势通常是值得的。

更新(2019年10月11日):在Kubernetes上运行Debezium(以及Apache Kafka和Kafka Connect)的另一种更简单的方法开云体育官方注册网址是使用K8s操作符,例如Strimzi.你可以在OpenShift上找到Debezium的设置说明开云体育官方注册网址在这里,类似的步骤适用于普通Kubernetes。

我们的开云体育官方注册网址Debezium教程通过安装、启动和连接在一台主机上运行的所有Docker容器,逐步引导您使用开云体育官方注册网址Debezium。当然,你可以使用Docker Compose或你自己的脚本来简化这一点,尽管这只是在一台机器上自动运行所有容器。您真正想要的是在一个机器集群上运行容器。在这篇博客中,我们将使用来自Red Hat和谷歌开云体育官方注册网址的容器集群管理器来运行DebeziumKubernetes

Kubernetes是容器(Docker/Rocket/Hyper.sh)集群管理工具。像许多其他流行的集群管理和计算资源调度平台一样,Kubernetes的根源是谷歌,它对大规模运行容器并不陌生。它们开始、停止和聚集每周20亿个集装箱他们为Linux内核基础做出了很多贡献,使容器成为可能。他们著名的论文之一讨论了一个名为Borg的内部集群管理器。有了Kubernetes,谷歌厌倦了每个人都用Java实现他们的论文,所以他们决定自己实现这个:)

Kubernetes是用Go-lang编写的,正在迅速成为大规模调度、管理和集群容器的事实上的API。这个博客并不是Kubernetes的入门,所以我们建议你去开始来了解更多关于Kubernetes的信息。

Baidu
map