出口CloudEvents

CloudEvents是以通用方式描述事件数据的规范。它的目标是提供跨服务、平台和系统的互操作性。开云体育官方注册网址Debezium允许您配置MongoDB、MySQL、PostgreSQL或SQL Server连接器,以发出符合CloudEvents规范的更改事件记录。

对CloudEvents的支持处于孵化状态。这意味着准确的语义、配置选项和其他细节可能会在未来的版本中根据反馈而改变。请让我们知道您的具体要求,或者如果您在使用此功能时遇到任何问题。

CloudEvents规范定义了:

  • 一组标准化的事件属性

  • 定义自定义属性的规则

  • 将事件格式映射到序列化表示(如JSON或Avro)的编码规则

  • 传输层的协议绑定,如Apache Kafka、HTTP或AMQP

为了配置Debezium连接器开云体育官方注册网址以发出符合CloudEvents规范的变更事件记录,Debezium提供了io.开云体育官方注册网址debezium.converters.CloudEventsConverter,这是一个Kafka连接消息转换器。

目前只支持结构化映射模式。CloudEvents更改事件信封可以是JSON或Avro,每种信封类型都支持JSON或Avro作为数据格式。预计未来的Debezium版本将支持二进制映射模式。开云体育官方注册网址

有关使用Avro的信息,请参见:

事件格式示例

下面的例子展示了一个由PostgreSQL连接器发出的CloudEvents更改事件记录的样子。在这个例子中,PostgreSQL连接器被配置为使用JSON作为CloudEvents格式信封和数据格式。

{"id": "name:test_server;lsn:29274832;txId:565",(1)"source": "/d开云体育官方注册网址ebezium/postgresql/test_server",(2)"specversion": "1.0",(3)"type": "io.d开云体育官方注册网址ebezium.postgresql.datachangeevent",(4)“时间”:“2020-01-13T13:55:39.738Z”,(5)"datacontenttype": "application/json",(6)"io开云体育官方注册网址debeziumop": "r",(7)"io开云体育官方注册网址debeziumversion": "2.1.2.Final",(8)"io开云体育官方注册网址debeziumconnector": "postgresql", "iodebeziumname": "test_server", "iodebeziumtsms": "1578923739738", "iodebeziumsnapshot": "true", "iodebeziumdb": "postgres", "iodebeziumschema": "s1", "iodebeziumtable": "a", "iodebeziumtxId": "565", "iodebeziumlsn": "29274832", "iodebeziumxmin": null, "iodebeziumtxId": "565", "iodebeziumtxId": "565",(9)"io开云体育官方注册网址debeziumtxtotalorder": "1", "iodebeziumtxdatacollectionorder": "1", "data": {(10)“之前”:空,“后”:{“pk”:1、“名称”:“Bob”}}}
1 连接器根据变更事件的内容为变更事件生成的唯一ID。
2 事件的源,它是数据库的逻辑名,由开云体育电动老虎机topic.prefix属性。
3. CloudEvents规范版本。
4 生成变更事件的连接器类型。该字段的格式为io.开云体育官方注册网址debezium。CONNECTOR_TYPE.datachangeevent.的价值CONNECTOR_TYPEmongodbmysqlpostgresql,或sqlserver
5 源数据库中更改的时间。开云体育电动老虎机
6 控件的内容类型数据属性,在本例中为JSON。唯一的选择是阿芙罗。
7 操作标识符。可能的值为r对于阅读,c为创建、u如需更新,或d删除。
8 所有属性被映射到CloudEvents扩展属性,这些属性来自Deb开云体育官方注册网址ezium更改事件io开云体育官方注册网址debezium属性名的前缀。
9 当在连接器中启用时,每个事务属性映射到一个CloudEvents扩展属性开云体育官方注册网址io开云体育官方注册网址debeziumtx属性名的前缀。
10 实际数据本身就会改变。根据操作和连接器的不同,数据可能包含之前和/或补丁字段。

下面的示例还展示了由PostgreSQL连接器发出的CloudEvents更改事件记录的样子。在本例中,PostgreSQL连接器再次配置为使用JSON作为CloudEvents格式信封,但这一次连接器配置为使用Avro用于数据格式。

{"id": "name:test_server;lsn:33227720;txId:578", "source": "/deb开云体育官方注册网址ezium/postgresql/test_server", "specversion": "1.0", "type": "io.debezium.postgresql.datachangeevent", "time": "2020-01-13T14:04:18.597Z", "datacontenttype": "application/avro",(1)"dataschema": "http://my-registry/schemas/ids/1",(2)" i开云体育官方注册网址odebeziummop ": "r", "iodebeziumversion": "2.1.2. "Final", "io开云体育官方注册网址debeziumconnector": "postgresql", "iodebeziumname": "test_server", "iodebeziumtsms": "1578924258597", "iodebeziumsnapshot": "true", "iodebeziumdb": "postgres", "iodebeziumschema": "s1", "iodebeziumtable": "a", "iodebeziumtxId": "578", "iodebeziumlsn": "33227720", "iodebeziumxmin": null, "iodebeziumtxId": "578", "iodebeziumtxtotalorder": "1", "iodebeziumtxdatacollectionorder": "1", "data": "AAAAAAEAAgICAg=="(3)
1 指示数据属性包含Avro二进制数据。
2 Avro数据所遵循的模式的URI。
3. 数据属性包含base64编码的Avro二进制数据。

它也可以使用Avro信封以及数据属性。

示例配置

配置io.开云体育官方注册网址debezium.converters.CloudEventsConverter在Debeziu开云体育官方注册网址m连接器配置中。下面的示例展示了如何配置clouddevents转换器以发出具有以下特征的更改事件记录:

  • 使用JSON作为信封。

  • 使用的模式注册表http://my-registry/schemas/ids/1要序列化数据属性为二进制Avro数据。

...“价值。converter": "io.debezium.converters.CloudEventsConverter", "value.converter.serializer.type" : "json",(1)“value.converter.data.serializer。输入":"avro", "value.converter.avro.schema.registry. "Url ": "http://my-registry/schemas/ids/1"…
1 指定serializer.type可选的,因为json是默认值。

CloudEvents转换器转换Kafka记录值。在相同的连接器配置中,您可以指定key.converter如果你想操作记录键。例如,您可以指定StringConverterLongConverterJsonConverter,或AvroConverter

配置选项

在配置Debezium连接器以使用Clou开云体育官方注册网址dEvent转换器时,可以指定以下选项。

表1。clouddevents转换器配置选项的描述

选项

默认的

描述

json

用于CloudEvents信封结构的编码类型。取值为jsonavro

json

类使用的编码类型数据属性。取值为jsonavro

N/A

使用JSON时传递给底层转换器的任何配置选项。的json。删除前缀。

N/A

使用Avro时传递给底层转换器的任何配置选项。的avro。删除前缀。例如,Avro数据,则指定avro.schema.registry.url选择。

没有一个

指定应如何调整模式名称以与连接器使用的消息转换器兼容。取值为没有一个avro