更新(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的信息。

开始

首先,我们需要访问Kubernetes集群。开始一个是相当容易的:只要遵循开始导游。我们最喜欢的是OpenShift都在一个虚拟机上或者是红帽容器开发工具包它提供了一个坚固的、生产就绪的Kubernetes分发。安装并登录后,应该就可以运行了库贝特尔拿到吊舱获取您可能正在运行的Kubernetes pod的列表。你不需要在Kubernetes内部运行任何其他东西来启动。

要获取和构建Kubernetes清单文件(yaml描述符),请克隆开云体育官方注册网址Debezium Kubernetes执行如下命令:

$ MVN clean $ MVN install

这个项目使用了awesomeFabric8 Maven插件自动生成Kubernetes清单文件。这里有一个生成内容的例子PROJECT_ROOT / zk-standalone /目标/类/ kubernetes.yml美元

apiVersion: "v1" items:—apiVersion: "v1" kind: "Service" metadata:注解:{}labels: project: "zookeeper" provider: "debezium" vers开云体育官方注册网址ion: "0.1-SNAPSHOT" group: "io.debezium" name: "zookeeper" spec: deprecedpublicicips: [] externalIPs: [] ports: - port: 2181 protocol: "TCP" targetPort: 2181 selector: project: "zookeeper" provider: "debezium" group: "io.debezium" - apiVersion: "v1" type: "ReplicationController" metadata:注解:" fabric8. "Io /git-branch: "master" fabric8。io/git-commit: "004e222462749fbaf12c3ee33edca9b077ee9003" labels: project: "zookeeper" provider: "开云体育官方注册网址debezium" version: "0.1-SNAPSHOT" group: "io.debezium" name: "zk-standalone" spec: replicas: 1 selector: project: "zookeeper" provider: "debezium" version: "0.1-SNAPSHOT" group: "io.debezium" template: metadata:注解:{}labels: project: "zookeeper" provider: "debezium" version: "0.1-SNAPSHOT" group: "io.debezium" spec: containers: - args: [] command: [] env: - name:"KUBERNETES_NAMESPACE" valueFrom: fieldRef: fieldPath: "metadata.namespace" image: "docker.io/开云体育官方注册网址debezium/zookeeper:0.1" imagePullPolicy: "IfNotPresent" name: "zk-standalone" ports: - containerPort: 3888 name: "election" - containerPort: 2888 name: "peer" - containerPort: 2181 name: "client" securityContext: {} volumeMounts: [] imagePullSecrets: [] nodeSelector: {} volumes: [] kind: "List"

在Kubernetes上启动Zookeeper和Kafka

开始Apache管理员Apache卡夫卡在Kubernetes内部,你有两个选择。如果你有kubectl命令行(或oc你可以在你的机器上应用任何新生成的Kubernetes清单文件,如下所示:

$ kubectl create -f 

或者你可以使用Fabric8 Maven插件和它的fabric8:目标是应用清单文件。注意,要使这两个选项中的任何一个工作,您必须当前登录到Kubernetes集群。(OpenShift也是Oc login 这非常简单使用kubectl登录Kubernetes集群以获取更多信息。)

首先,让我们将Zookeeper部署到Kubernetes集群。我们需要进去$ PROJECT_ROOT / zk-standalone目录,然后我们将应用Kubernetes配置。首先,让我们看看如何使用kubectl命令:

$ kubectl创建目标/类/kubernetesYml服务“zookeeper”已创建,replicationcontroller“zk-standalone”已创建

你可以用Maven和fabric8 Maven插件做同样的事情:

$ cd zk-standalone $ mvn fabric8:应用Java HotSpot(TM) 64位服务器虚拟机警告:忽略选项MaxPermSize=1512m;支持在8.0中被移除[INFO][信息][信息 ] ------------------------------------------------------------------------ [ 信息构建zk-standalone 0.1快照(信息 ] ------------------------------------------------------------------------ [ 信息][信息]——fabric8-maven-plugin: 2.2.115:应用(default-cli) @ zk-standalone——[信息]使用kubernetes: https://172.28.128.4:8443名称空间中票[信息]kubernetes JSON: /用户/ ceposta / dev / idea-workspace / dbz / debezium-kubernetes / zk-standalone /目标/类/ kubernetes。开云体育官方注册网址使用命名空间:ticket [INFO]正在查看目录/Users/ceposta/dev/idea-workspace/dbz/ debezu -kubernetes/的repo。开云体育官方注册网址git [INFO]从kubernetes中创建服务。jsonnamespace ticket name zookeeper [INFO] Created Service: zk-standalone/target/fabric8/applyJson/ticket/service-zookeeper.json [INFO] Creating a ReplicationController from kubernetes.json namespace ticket name zk-standalone [INFO] Created ReplicationController: zk-standalone/target/fabric8/applyJson/ticket/replicationcontroller-zk-standalone.json [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.661 s [INFO] Finished at: 2016-05-19T15:59:26-07:00 [INFO] Final Memory: 26M/260M [INFO] ------------------------------------------------------------------------

Zookeeper已经部署,所以让我们继续部署Kafka。导航到$ PROJECT_ROOT /卡夫卡,然后应用Kafka部署配置:

$ CD ../kafka $ kubectl create -f target/classes/kubernetesYml服务“kafka”已创建replicationcontroller“kafka”已创建

或者使用fabric8 maven插件:

$ CD ../kafka $ mvn fabric8:apply Java HotSpot(TM) 64位服务器虚拟机警告:忽略选项MaxPermSize=1512m;支持在8.0中被移除[INFO][信息][信息 ] ------------------------------------------------------------------------ [ 0.1信息]建筑卡夫卡快照(信息 ] ------------------------------------------------------------------------ [ 信息][信息]——fabric8-maven-plugin: 2.2.115:应用(default-cli) @卡夫卡——[信息]使用kubernetes: https://172.28.128.4:8443名称空间中票[信息]kubernetes JSON: /用户/ ceposta / dev / idea-workspace / dbz / debezium-kubernetes /卡夫卡/目标/类/ kubernetes。开云体育官方注册网址使用命名空间:ticket [INFO]正在查看目录/Users/ceposta/dev/idea-workspace/dbz/ debezu -kubernetes/的repo。开云体育官方注册网址git [INFO]从kubernetes中创建服务。jsonnamespace ticket name kafka [INFO] Created Service: kafka/target/fabric8/applyJson/ticket/service-kafka.json [INFO] Creating a ReplicationController from kubernetes.json namespace ticket name kafka [INFO] Created ReplicationController: kafka/target/fabric8/applyJson/ticket/replicationcontroller-kafka.json [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.563 s [INFO] Finished at: 2016-05-19T16:03:25-07:00 [INFO] Final Memory: 26M/259M [INFO] ------------------------------------------------------------------------

使用库贝特尔拿到吊舱命令查看正在运行的内容:

$ kubectl get pod NAME READY STATUS重启AGE kafka-mqmxt 1/1 Running 0 46s zk-standalone-4mo02 1/1 Running 0 4m . sh

您是否注意到,在启动容器时,我们没有手动“链接”它们?Kubernetes有一个集群服务发现特性叫做Kubernetes服务负载平衡,让我们使用内部DNS(或集群ip)来发现pod。例如,在kubernetes.ymlKafka的部署配置,你会看到如下:

...containers:—args: [] command: [] env:—name: "KAFKA_ADVERTISED_PORT" value: "9092" - name: "KAFKA_ADVERTISED_HOST_NAME" value: "kafka" - name: " kafka_zookeper_connect " value: "zookeeper:2181" - name: "KAFKA_PORT" value: "9092" - name: "KUBERNETES_NAMESPACE" valueFrom: fieldRef: fieldPath: "metadata.namespace" image: "docker.io/deb开云体育官方注册网址ezium/kafka:0.1" imagePullPolicy: "IfNotPresent" name: "kafka"…

我们指定的值KAFKA_ZOOKEEPER_CONNECTDocker镜像使用的环境变量,从而使Kafka能够发现Zookeeper pod,无论它们在哪里运行。虽然我们可以使用任何主机名,但为了简单起见,我们只使用动物园管理员为DNS名称。所以,如果你要登录到其中一个舱,并试图连接到名为动物园管理员, Kubernetes会透明地将请求解析到其中一个Zookeeper pod(如果有多个)。光滑的!此发现机制也用于其余组件。(注意,DNS解析到的集群IP从来没有改变Kubernetes服务的生命周期,而不管一个给定的服务有多少个pod。这意味着您可以依赖此服务发现,而不会遇到其他可能遇到的DNS缓存问题。)

下一步是创建一个模式变化Debezium的My开云体育官方注册网址SQL连接器将使用的主题。让我们使用Kafka工具来创建这个:

$KAFKA_POD_NAME =$(kubectl get pod | grep -i running | grep kafka | awk '{print $1}') $ kubectl exec $KAFKA_POD_NAME——/kafka/bin/kafka-topic .sh——create——zookeeper zookeeper:2181——replication-factor 1——partitions 1——topic schema-change .inventory

在Kubernetes上启动MyS开云体育电动老虎机QL数据库

启动MySQL数据库的步骤与安装Zoo开云体育电动老虎机keeper或Kafka的步骤相同。我们将导航到$ PROJECT_ROOT / mysql56目录,我们将使用MySQL 5.6 OpenShift Docker镜像这样它就可以在普通的Kubernetes和OpenShift v3.x上运行。这是kubectl命令启动MySQL实例:

$ CD ../mysql56 $ kubectl create -f target/classes/kubernetesYml服务“mysql”已创建replicationcontroller“mysql56”已创建

或者等价的Maven命令:

$ CD mysql56 $ MVN fabric8:apply

现在,当我们跑步的时候库贝特尔拿到吊舱我们应该看到MySQL数据库也在运行:开云体育电动老虎机

NAME READY STATUS重启AGE kafka-mqmxt 1/1 Running 0 17m mysql56-b4f36 1/1 Running 0 9m zk-standalone-4mo02 1/1 Running 0 21m

让我们运行一个命令来获得客户机对数据库的访问权。开云体育电动老虎机首先,设置一些环境变量为pod的名称和IP地址:

$MYSQL_POD_NAME =$(kubectl get pod | grep Running | grep ^mysql | awk '{print $1}') $ MYSQL_POD_IP=$(kubectl describe pod $MYSQL_POD_NAME | grep IP | awk '{print $2}')

然后,登录到运行MySQL数据库的Kubernetes pod,启动MySQL命令客户端:开云体育电动老虎机

$ kubectl exec -it $MYSQL_POD_NAME——/opt/rh/rh-mysql56/root/usr/bin/mysql -h$MYSQL_POD_IP -P3306 -uroot -padmin警告:在命令行界面使用密码是不安全的。欢迎来到MySQL监视器。命令以;或\ g。MySQL社区服务器(GPL)版权(c) 2000,2015, Oracle和/或其附属公司。版权所有。Oracle是Oracle公司和/或其关联公司的注册商标。其他名称可能是其各自所有者的商标。输入'help;'或'\h'以获得帮助。输入'\c'清除当前输入语句。 mysql>

这表明kubectl命令行可以让我们轻松地访问pod或Docker容器,而不管它在集群中的哪个位置运行。

接下来,退出mysql shell(键入退出),然后执行以下命令下载SQL脚本填充一个库存示例数据库:开云体育电动老虎机

$ kubectl exec -it $MYSQL_POD_NAME - bash -c "curl -s -L https://gist.github.com/christian-posta/e20ddb5c945845b4b9f6eba94a98af09/raw | /opt/rh/rh-mysql56/root/usr/bin/mysql -h$MYSQL_POD_IP -P3306 -uroot -padmin"

现在,如果我们回到MySQL pod,我们可以显示数据库和表:开云体育电动老虎机

$ kubectl exec -it $MYSQL_POD_NAME——/opt/rh/rh-mysql56/root/usr/bin/mysql -h$MYSQL_POD_IP -P3306 -uroot -padmin -e '使用库存;显示表 ;' +---------------------+ | Tables_in_inventory  | +---------------------+ | 产品订单客户| | | | | | products_on_hand  | +---------------------+ 4行集(0.00秒)

启动Kafka Connect和Debezium开云体育官方注册网址

导航到目录$ PROJECT_ROOT / connect-mysql目录中。在这里,我们将启动一个运行Kafka Connect的Kubernetes pod,该pod已经安装了Debezium MySQL连接器开云体育官方注册网址。Debe开云体育官方注册网址zium MySQL连接器连接到MySQL数据库,读取binlog,并开云体育电动老虎机将这些行事件写入Kafka。在Kubernetes上使用Debezium启动Kafk开云体育官方注册网址a Connect,类似于前面的组件:

$ CD ../connect-mysql $ kubectl create -f target/classes/kubernetesYml服务"connect-mysql"已创建replicationcontroller "connect-mysql"已创建

或者使用fabric8 maven插件:

$ CD ../connect-mysql $ mvn fabric8:apply Java HotSpot(TM) 64位服务器虚拟机警告:忽略选项MaxPermSize=1512m;支持在8.0中被移除[INFO][信息][信息 ] ------------------------------------------------------------------------ [ 信息构建connect-mysql 0.1快照(信息 ] ------------------------------------------------------------------------ [ 信息][信息]——fabric8-maven-plugin: 2.2.115:应用(default-cli) @ connect-mysql——[信息]使用kubernetes: https://172.28.128.4:8443名称空间中票[信息]kubernetes JSON: /用户/ ceposta / dev / idea-workspace / dbz / debezium-kubernetes / connect-mysql /目标/类/ kubernetes。开云体育官方注册网址使用命名空间:ticket [INFO]正在查看目录/Users/ceposta/dev/idea-workspace/dbz/ debezu -kubernetes/的repo。开云体育官方注册网址git [INFO]从kubernetes中创建服务。jsonnamespace ticket name connect-mysql [INFO] Created Service: connect-mysql/target/fabric8/applyJson/ticket/service-connect-mysql.json [INFO] Creating a ReplicationController from kubernetes.json namespace ticket name connect-mysql [INFO] Created ReplicationController: connect-mysql/target/fabric8/applyJson/ticket/replicationcontroller-connect-mysql.json [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 2.255 s [INFO] Finished at: 2016-05-25T09:21:04-07:00 [INFO] Final Memory: 27M/313M [INFO] ------------------------------------------------------------------------

就像在Debezium的Docker教程中一样,我们现在想要发送一个JSO开云体育官方注册网址N对象到Kafka Connect API来启动我们的Debezium连接器。首先,我们需要为Kafka Connect集群公开API。你可以这样做,但你想:在Kubernetes (导入定义NodePort服务等)或在OpenShift上使用OpenShift路线.对于这个简单的示例,我们将使用简单的Pod端口转发来转发connect-mysql舱的8083移植到我们的本地机器(同样,不管Pod实际在哪里运行集群。(这是Kubernetes的一个令人难以置信的功能,使得开发分布式服务变得如此容易!)

让我们确定pod名称,然后使用端口转发到我们的本地机器:

$CONNECT_POD_NAME =$(kubectl get pod | grep -i running | grep ^connect | awk '{print $1}') $ kubectl port-forward $CONNECT_POD_NAME 8083:8083 I0525 09:30:08.390491 6651 port-forward。go:213]从127.0.0.1:8083 -> 8083 I0525 09:30:08.390631 6651端口转发。go:213]转发从[::1]:8083 -> 8083

我们正在传送吊舱的端口8083到我们本地的机器8083.现在如果我们点击http://localhost:8083它将被定向到运行我们的Kafka Connect和Debezium服务的pod。开云体育官方注册网址

因为查看pod的输出可能有用,看看是否有任何异常,启动另一个终端并输入以下内容来跟踪Kafka Connect输出:

$CONNECT_POD_NAME =$(kubectl get pod | grep -i running | grep ^connect | awk '{print $1}') $ kubectl logs -f $CONNECT_POD_NAME

现在,让我们使用一个HTTP客户端将Debezium连接器/任务发布到我们刚刚在本地开云体育官方注册网址暴露的端点:

curl -i -X POST -H "Accept:application/json" -H "Content-Type:application/json" http://localhost:8083/connectors/ -d '{"name": "inventory-connector", "config": {"connector.class": "io. d开云体育官方注册网址ebezui .connector.mysql. mysqlconnector ", "任务。Max ": "1", 开云体育电动老虎机"数据库。主机名:“mysql”,“数据库”。开云体育电动老虎机端口:“3306”,“数据库”。开云体育电动老虎机用户":"复制器","数据库。开云体育电动老虎机密码":"replpass", "databas开云体育电动老虎机e.server. "Id ": "184054", 开云体育电动老虎机"database.server.name": "mysql-server-1", "database. name"。binlog mysql-bin“:”。000001”、“数开云体育电动老虎机据库。白名单":"inventory", "databas开云体育电动老虎机e.history.kafka.bootstrap. "“kafka:9092”,“database.hi开云体育电动老虎机story.kafka.”主题:“模式变化。库存"}}'

如果我们观察log输出connect-mysql波德,我们会看到它最终看起来像这样:

2016-05-27 18:50:14,580 - WARN [kafka-producer-network-thread | producer-1:NetworkClient$DefaultMetadataUpdater@582] -获取关联id为2的元数据时出错:{mysql-server-1.inventory。product =LEADER_NOT_AVAILABLE} 2016-05-27 18:50:14,690 - WARN [kafka-producer-network-thread | producer-1:NetworkClient$DefaultMetadataUpdater@582] -获取关联id为3的元数据时出错:{mysql-server-1.inventory。product =LEADER_NOT_AVAILABLE} 2016-05-27 18:50:14911 - WARN [kafka-producer-network-thread | producer-1:NetworkClient$DefaultMetadataUpdater@582] -获取关联id为7的元数据时出错:{mysql-server-1.inventory. log . log。products_on_hand=LEADER_NOT_AVAILABLE} 2016-05-27 18:50:15,136 - WARN [kafka-producer-network-thread | producer-1:NetworkClient$DefaultMetadataUpdater@582] -在获取关联id为10的元数据时出错:{mysql-server-1.inventory. log . log . log . log . log . log . log . log . log . log . log . log . log . log . log . log . log . log . log . log . log . log . log . log . log。2016-05-27 18:50:15,362 - WARN [kafka-producer-network-thread | producer-1:NetworkClient$DefaultMetadataUpdater@582] -获取关联id为13的元数据时出错:{mysql-server-1.库存.orders=LEADER_NOT_AVAILABLE}

这些错误只是卡夫卡告诉我们主题并不存在,而是被创建出来的方式。

如果我们现在在Kafka中列出我们的主题,我们应该在mysql中的每个表中看到一个Kafka主题库存开云体育电动老虎机数据库:

$ kubectl exec $KAFKA_POD_NAME——/kafka/bin/kafka-topic .sh——list——zookeeper zookeeper:2181 __consumer_offset my-connect-configs my-connect-offset mysql-server-1.inventorymysql客户-服务器- 1. -库存。订单mysql -服务器- 1. -库存。mysql服务器- 1.产品库存。products_on_hand schema-changes.inventory

让我们来看看其中一个主题:

$ kubectl exec $KAFKA_POD_NAME——/kafka/bin/kafka-console-consumer.sh——bootstrap-server localhost:9092——new-consumer——topic mysql-server-1.inventory客户——从头开始——属性打印。关键= true{"模式":{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”}],“可选”:假的,“名字”:“库存。客户/ pk”},“有效载荷”:{" id ": 1001}}{"模式":{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”},{“类型”:“弦”、“可选”:假的,“场”:“first_name”},{“类型”:“弦”、“可选”:假的,“场”:“last_name”},{“类型”:“弦”、“可选”:假的,“场”:“电子邮件”}],“可选”:假的,“名字”:“inventory.customers”},“有效载荷”:{" id ": 1001年,“first_name”:“莎莉”,“last_name”:“托马斯”、“电子邮件”:" sally.thomas@acme.com "}}{"模式":{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”}],“可选”:假的,“名字”:“库存。客户/ pk”},“有效载荷”:{" id ": 1002}}{"模式":{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”},{“类型”:“弦”、“可选”:假的,“场”:“first_name”},{“类型”:“弦”、“可选”:假的,“场”:“last_name”},{“类型”:“弦”、“可选”:假的,“场”:“电子邮件”}],“可选”:假的,“名字”:“inventory.customers”},“有效载荷”:{" id ": 1002年,“first_name”:“乔治”、“last_name”:“贝利”、“电子邮件”:“gbailey@foobar.com”}}{"模式":{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”}],“可选”:假的,“名字”:“库存。客户/ pk”},“有效载荷”:{" id ": 1003}}{"模式":{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”},{“类型”:“弦”、“可选”:假的,“场”:“first_name”},{“类型”:“弦”、“可选”:假的,“场”:“last_name”},{“类型”:“弦”、“可选”:假的,“场”:“电子邮件”}],“可选”:假的,“名字”:“inventory.customers”},“有效载荷”:{" id ": 1003年,“first_name”:“爱德华”、“last_name”:“沃克”、“电子邮件”:“ed@walker.com”}}{"模式":{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”}],“可选”:假的,“名字”:“库存。客户/ pk”},“有效载荷”:{" id ": 1004}}{"模式":{“类型”:“结构”、“字段”:[{“类型”:“int32”、“可选”:假的,“场”:“id”},{“类型”:“弦”、“可选”:假的,“场”:“first_name”},{“类型”:“弦”、“可选”:假的,“场”:“last_name”},{“类型”:“弦”、“可选”:假的,“场”:“电子邮件”}],“可选”:假的,“名字”:“inventory.customers”},“有效载荷”:{" id ": 1004年,“first_name”:“安妮”,“last_name”:“Kretchmar”、“电子邮件”:“annek@noanswer.org”}}

发生了什么事?当我们启动Debezium的My开云体育官方注册网址SQL连接器时,它开始从MySQL服务器读取二进制复制日志,并重新播放所有历史记录,并为每个INSERT、UPDATE和DELETE操作生成一个事件(尽管在我们的示例中)库存开云体育电动老虎机数据库我们只有insert)。如果我们或一些客户端应用程序要向数据库提交其他更改,Debezium将立即看到这些更改并将其写入正确的主题。开云体育官方注册网址开云体育电动老虎机换句话说,Debezium将对M开云体育官方注册网址ySQL数据库的所有更改记录为Kafka主题中的事件!开云体育电动老虎机从那里,任何工具、连接器或服务都可以独立地从Kafka中消费这些事件流并处理它们,或者将它们放入不同的数据库中,例如Hadoop、elasticsearch、数据网格等。开云体育电动老虎机

清理

如果你想删除连接器,只需发出一个REST请求来删除它:

curl -i -X DELETE -H "Accept:application/json" http://localhost:8083/connectors/inventory-connector

基督教Posta

Christian是Red Hat的首席中间件架构师,也是开源软件、Apache、Cloud、Integration、Kubernetes、Docker、OpenShift和Fabric8的狂热爱好者。


关于Debe开云体育官方注册网址zium

开云体育官方注册网址Debezium是一个开源的分布式平台,它将现有数据库转换为事件流,因此应用程序几乎可以立即看到并响应数据库中提交的每一个行级更改。开云体育电动老虎机开云体育官方注册网址Debezium是建立在卡夫卡并提供卡夫卡连接监控特定数据库管理系统的兼容连接器。开云体育电动老虎机开云体育官方注册网址Debezium在Kafka日志中记录了数据更改的历史,所以你的应用程序可以在任何时候停止和重新启动,并且可以很容易地使用它没有运行时错过的所有事件,确保所有事件都被正确和完整地处理。开云体育官方注册网址Debezium是开源Apache许可证,版本2.0

参与

我们希望您觉得Debezium有趣开云体育官方注册网址且有用,并愿意尝试一下。在Twitter上关注我们@开云体育官方注册网址debezium在Zulip上和我们聊天,或加入我们的邮件列表与社区对话。所有的代码都是开源的GitHub上,因此在本地构建代码并帮助我们改进现有连接器并添加更多连接器。如果您发现了问题或对我们如何改进Debezium有想法,请告诉我们开云体育官方注册网址记录问题

Baidu
map