你知道1月16号吗全国无物日?这是一年中没有庆祝、观察或纪念任何事情的一天。
嗯,通常是这样。因为我们忍不住要分享Debezium的消息开云体育官方注册网址1.1.0.Alpha1和你一起释放!它是Debezium 1.0之后的第一个版本,附带了一些非开云体育官方注册网址常有用的特性。让我们仔细看看。
夸克发件箱模式扩展
的发件箱模式是一种让服务更新自己的数据库(例如持久化一个新的购买订单)以及以可靠和一致的方式向其他服务发出相应事件的好开云体育电动老虎机方法。该模式避免了不安全的双写,但也不需要分布式事务。
开云体育官方注册网址Debezium已经通过它的发件箱事件路由器,它可以用于将事件从一个发件箱表流到Apache Kafka中的不同主题中。当我们看到越来越多的人采用这种路由器的模式和用法时,我们想要进一步发展,并提供一个组件来简化应用程序内部发件箱事件的创建。
为了这个目的,现在有一个全新的扩展为Quarkus,一个“为OpenJDK HotSpot和GraalVM量身定制的Kubernetes原生Java堆栈,从最好的Java库和标准中精心制作”。使用这个扩展,它变得像发射普通CDI事件来产生发件箱事件一样简单:
@ApplicationScoped公共类OrderService{@ inject事件< ExportedEvent < ?>>事件;@ transactional公共PurchaseOrder addOrder(PurchaseOrder order) {//处理并持久化订单…//创建相应的发件箱事件来通知其他服务event.fire (OrderCreatedEvent.of(顺序));返回秩序;}}
一旦事件被持久化到发件箱表中并且事务被提交,Debezium将捕获它并通过Kafka将其传播给下游消费者。开云体育官方注册网址
CloudEvents支持
CloudEvents是一个“以通用方式描述事件数据的规范”,旨在提供“跨服务、平台和系统的互操作性”。通过一个新的Kafka连接消息转换器(io.开云体育官方注册网址debezium.converters.CloudEventsConverter
), 开云体育官方注册网址Debezium现在可以了发出更改事件遵循CloudEvents规范:
{"id":"名称:test_server; lsn: 29274832; txId: 565","源":"/开云体育官方注册网址 debezium / postgresql / test_server","specversion":"1.0","类型":"io.开云体育官方注册网址debezium.postgresql.datachangeevent","时间":"2020 - 01 - 13 t13:55:39.738z","datacontenttype":"application / json","io开云体育官方注册网址debeziumop":"r","io开云体育官方注册网址debeziumversion":"1.1.0.Alpha1","io开云体育官方注册网址debeziumconnector":"postgresql","io开云体育官方注册网址debeziumname":"test_server","io开云体育官方注册网址debeziumtsms":"1578923739738","io开云体育官方注册网址debeziumsnapshot":"真正的","io开云体育官方注册网址debeziumdb":"postgres","io开云体育官方注册网址debeziumschema":"s1","io开云体育官方注册网址debeziumtable":"一个","io开云体育官方注册网址debeziumtxId":"565","io开云体育官方注册网址debeziumlsn":"29274832","io开云体育官方注册网址debeziumxmin":零,"数据": {"之前":零,"后": {"pk":1,"的名字":"鲍勃"}}}
对于CloudEvents,每个事件都包含一些已定义的属性,例如id
,源
而且类型
.实际的事件有效负载可以在数据
属性,在Debezium的情况下,它是受影响的数据库记录的新旧状开云体育官方注册网址态的结构。开云体育电动老虎机大多数其他Debezium更改事件属开云体育官方注册网址性(人事处
,时间戳,源元数据)映射到自定义属性io开云体育官方注册网址debezium
前缀。
的数据
属性以及整个事件可以使用JSON或Avro进行编码。最初,只支持CloudEvents的“结构化模式”,即所有属性都是事件结构的一部分,在本例中是Kafka记录值。在未来的版本中,我们还将添加对CloudEvents“二进制模式”的支持数据
属性是事件结构的一部分,而所有其他属性将映射到(Kafka)报头属性。
CloudEvents支持正在积极开发中,因此随着该特性的成熟,有关格式的细节可能会在未来的版本中发生变化。我们希望得到您的反馈,并从您的见解和CloudEvents的经验中学习。
进一步的改变
除了这两个较大的特性外,Debezium 1.1 Alpha1还做了一些小的改进和修复:开云体育官方注册网址
Postgres的列值屏蔽,允许用星号替换敏感的列值(dbz - 1685)
对与触发器定义相关的MySQL DDL解析器的几个修复(dbz - 1699)及
信号
关键字(dbz - 1691)两个bug修复的时间和精度(dbz - 1688,dbz - 1707)
总而言之,17个问题修复了此版本。
非常感谢安德里亚张家港基地,瓦西里•Ulianko,Vedit Firat Arig,Yongjun杜而且王刘宇超(音)感谢他们对这个版本的贡献!
展望未来,我们将继续每隔两到三周发布Debezium 1.1预览版。开云体育官方注册网址看一下路线图看看接下来会发生什么,或与我们联系,告诉我们您的具体功能需求!
关于Debe开云体育官方注册网址zium
开云体育官方注册网址Debezium是一个开源的分布式平台,它将现有数据库转换为事件流,因此应用程序几乎可以立即看到并响应数据库中提交的每一个行级更改。开云体育电动老虎机开云体育官方注册网址Debezium是建立在卡夫卡并提供卡夫卡连接监控特定数据库管理系统的兼容连接器。开云体育电动老虎机开云体育官方注册网址Debezium在Kafka日志中记录了数据更改的历史,所以你的应用程序可以在任何时候停止和重新启动,并且可以很容易地使用它没有运行时错过的所有事件,确保所有事件都被正确和完整地处理。开云体育官方注册网址Debezium是开源下Apache许可证,版本2.0.
参与
我们希望您觉得Debezium有趣开云体育官方注册网址且有用,并愿意尝试一下。在Twitter上关注我们@开云体育官方注册网址debezium,在Zulip上和我们聊天,或加入我们的邮件列表与社区对话。所有的代码都是开源的GitHub上,因此在本地构建代码并帮助我们改进现有连接器并添加更多连接器。如果您发现了问题或对我们如何改进Debezium有想法,请告诉我们开云体育官方注册网址记录问题.