欢迎来到的第一版“开云体育官方注册网址Debezium社区故事…”,一个新的一系列采访Debezium和变化数据捕获社区的成员,如用户、贡献者或集成商。开云体育官方注册网址我们计划发布更多的本系列的部分在一个松散的节奏,如果你想成为它的一部分,请让我们知道。在今天的版本交谈是我的荣幸雷纳托Mefi,一个长期Debezium用开云体育官方注册网址户和贡献者。

雷纳托,你能介绍你自己吗?什么是你的工作,如果你不是导致Debezium吗?开云体育官方注册网址

你好,我是雷纳托和我第一次Debezium提交是在11月12日,201开云体育官方注册网址8年,这是一个漫长而有趣的骑到目前为止,我很高兴有这个机会与大家分享我的故事!

我是一个工程师调查猴子在阿姆斯特丹,荷兰,在残雪的平台团队(客户体验)套房,如果你好奇那是什么,你可以检查一下这里

在互联网上你会发现我谈论码头工人,Debezium、卡夫卡,Microservices和其他我喜欢的事情。开云体育官方注册网址尽管这些神奇的工程作品真正激发我,此刻我也真的热爱平台工程团队和如何操作在一个组织中,下面的故事我要告诉代表我的观点,关键的平台团队的角色可以当采用新技术和解决困难的问题,在这种情况下由Debezium !开云体育官方注册网址

你用例Debezium和美国疾控中心在你当前的项目吗?开云体育官方注册网址

这是一个漫长而愉快的故事(长期而言,互联网),我们一直使用Debezium自2018年第四季度以来,目前已经2年我写这些答案。开云体育官方注册网址

当我分类Debezium在我们的开云体育官方注册网址产品,我说它是一种体系结构组件,这背后的想法是将它定位为一个平台/基础设施问题,在某种程度上,它可以达到多个部分的堆栈和服务。我认为这种抽象的Debezium的关键成功因素之一在采用和发展开云体育官方注册网址在我们的平台,让我解释一下这个更好!

我们的第一个用例可能是最常见的一种的疾控中心,扼杀者模式,这对我们之前Debezium;开云体育官方注册网址首先让我告诉这个故事的一部分:当我加入Usabilla(后来被SurveyMoney收购),已经为了我们的平台移动到一个新的架构和扼杀者模式已经存在。当第一夫妇的服务开始成长,他们的主要途径的遗留数据轮询数据库,不用说,这可以很错!开云体育电动老虎机我们的遗留数据库是一个开云体育电动老虎机MongoDB集群,因为我总想着轮询的方法,我开始深入的可能性。我希望找到这样一个流API,但是我最终遇到的是数据库的更新日志(开云体育电动老虎机写前日志记录,“oplog”叫做Mongo !

它马上来到我的脑海:“哦,我可以写的东西从oplog查询数据并将其发送给卡夫卡”。所以我检查我们的内部行为和MongoDB高级专家吉斯Kunze他认为这可能是一个好主意;作为下一步,我跟我的同事去了拉斐尔Dohms,我们决定做一些额外的搜索,这样,我们发现Debezium !开云体育官方注册网址这是完美地匹配我们的需求,比我们可以自己写的什么!

回到我们的用例,它架构组件对我们来说,基本上是这个方法,我们称为抽象和封装Debezium项目遗留数据同步(摩门教的对我们来说,因为从未变老)的缩写。开云体育官方注册网址尽管它看起来简单的旋转卡夫卡与Debezium,运行生产就绪,监控数据库中的多个集合,暴露指标,做转换,不是一个容易的任务。开云体育官方注册网址开云体育电动老虎机那么它是如何工作的呢?每次一个工程团队需要捕获数据从我们的遗留系统,开始扼杀一个特性,他们只需要做两件事,打开一个拉请求像字面上添加一行,并创建他们的卡夫卡消费者!

图1所示。在摩门教的配置文件;开发人员将打开一个公关添加一个新行,其余的会照顾。

合并后的公关,我们的项目将提供整个配置卡夫卡连接,它确保执行快照,指标等;我们做同样的事情的发件箱模式和我谈谈更多关于它推线

自己做的团队是一个伟大的方式为采用消除阻力,没有Jira门票是必要的,没有先进的运维知识或其他使其运行。我考虑的其他因素造成了Debezium成功的在我们的平台是其可靠性和直接的价值感知,在这两年中我们从来没开云体育官方注册网址有重大故障或任何形式的关键问题!

你提到了发件箱模式;你能告诉更多关于你为什么以及如何使用这个吗?

绝对的!一个更多的时间,这太疯狂了疾控中心和Debezium如何简化一些最关键的建筑开云体育官方注册网址部分大平台!使用一年后Debezium的核心架构迁移,开云体育官方注册网址我们有另一个问题在我们的手:如何可靠地写入数据到我们的新真理的源数据库和消息传播到卡夫卡在同一时间。开云体育电动老虎机虽然它似乎是简单的回答和找到一个解决方案,每个人都有一个主要缺点。

该解决方案呢?

  • 采用峰值拥抱最终一致性事件的采购,通过编写第一个卡夫卡和阅读自己写;这里的缺点是额外的复杂性和加剧了最终一致性

  • 双写实际上这不是一个选择,因为你知道,“朋友”不让朋友做双写!

  • 不同方法的分布式事务2 pc和传奇;这是性能和工程成本的努力,现在每个服务我们也必须成为一个事务协调员或回滚功能,级联效应也害怕我们不少!

嗯,还剩下什么?我们发现发件箱是正确的答案,但是在我们到达那里之前,让我进入成本x收益方程,我们的决策!

虽然有些选项是相当有吸引力的技术,例如采购,工程努力和成长是巨大的。也不是的,这是准备使用,和有很多的发现,在这个过程中,所以是和欲望的约束:

  • 可靠性;我们希望至少一次语义,一旦是没有必要的,我们可以唯一地标识每个消息/事件;

  • 最终一致性只有服务之间内,而不是服务本身。能够与服务交互是真理的来源的模型,并得到一个直接的答案不仅是方便,但令人难以置信的强大的(这就是为什么巨石也如此有吸引力);

  • 避免分布式事务我们可以,太可怕了,我们也应该害怕它!

  • 可管理的努力;我们如何“轻易”得到30 +工程师采取解决这个问题?同时,你怎么能确保实现保证每个服务和团队?

我们意识到发件箱模式会帮助我们满足这些需求:应用程序将通过一个发件箱表发布事件,写入到数据库中作为商业交易的一部分。开云体育电动老虎机

与扼杀者模式一样,我们想要采取一个架构组件,团队能自助服务。起初,我们探索本土解决方案从而寻找发件箱表中每一个服务并发布消息。这种方法的问题是轮询数据库问题,尽管在这种情况下这是更少的有害的我们不需要寻找更新或删除。开云体育电动老虎机

幸运的是,那时我在Debezium密切关注所做的工作和我读了篇开云体育官方注册网址microservices使用发件箱之间可靠的数据交换模式,我的答案!嗯,我的意思是,部分答案,我们仍然需要实现它,这是一个故事的下一个问题!

快进一两个月,我们有一个可靠的服务之间交换消息的方式,与我们想要的所有担保,并通过应用一些平台DevOps味道,我们还通过自助服务和容易代入每一个服务!

用户可以指定哪个数据库服务,表名,以及使用哪个列事件路开云体育电动老虎机由器,你能找到更多的细节在官方开云体育官方注册网址Debezium发件箱事件路由器文档

图2。配置文件配置发件箱连接器

你不仅使用Debezium但你也为项目做出了开云体育官方注册网址贡献。这样做你的经验如何?你在做其他开源工作吗?

当我被宠坏的一开始,使用和贡献Debezium白刃战的走去。开云体育官方注册网址在这两个用例的Debezium调查猴子,我有很好的机会为Debezi开云体育官方注册网址um和卡夫卡(bug修复,但是我很高兴!)。

起初,我是修复bug Debezium MongoDB连接器;开云体育官方注册网址当我们真正扩展到所有的团队,很多边界情况开始出现,主要集中在变换将原始数据库事务日志和转换成可读卡夫卡连接结构。开云体育电动老虎机也由于我们的架构选择,我们把原始日志和转换数据分割成两个不同的步骤,走在不同的主题和配置作为单独的卡夫卡连接连接器。

快速避开:这个决定背后的基本原理是能够生存的转换错误;MongoDB有复制窗口,如果你失去了它,就意味着你将不得不做出一个新的完整的快照收集在这个过程中,你可能会失去删除事件。因为我们选择了一种更安全的方法,这是分裂的逻辑转换从原始日志:这一步我们电话人事处(代表操作),Debezium MongoDB源连接器和输出的开云体育官方注册网址原始数据没有任何改变或转换话题,尽量减少错误的机会。第二步叫疾病预防控制中心,是一个Salesforce Mirus源连接器,它读取的人事处输出的话题,变换使用的消息开云体育官方注册网址压扁SMT Debezium文档和输出最终的主题,可以消费的服务。通过这种方法,我们现在有两个主要能力:抵制错误和崩溃的本地/自定义转换过程如上面提到的,和我们有机会改变转换我们的欲望,而无需再次从数据库读取,给我们更大的灵活性。开云体育电动老虎机这也带来了一些额外的特性和挑战融入Debezium本身!开云体育官方注册网址我不停地贡献我注意到一些事情,可以改善,开始修复他们,包括一个几乎完全重构的构建过程Debezium集装箱的图片,它的脚本,和其他小事情!开云体育官方注册网址

让我们圆回到发件箱;当关于这个的帖子出现在Debezium博客,主要是一个想法和概念。开云体育官方注册网址但是我们真的希望在生产运行,在这种情况下,为什么不合作呢?

我想借此机会在这里提到帮助Debezium社区是如何让我开始做贡献。开云体育官方注册网址我显示,意图在这个工作,他们是超级欢迎和我们有一个电话,所以我很快就觉得生产代码库。

几乎立即谈话后我开始技术草案(你可以看到在这里),不久之后,第一个实现了。我可以肯定的说我们是第一批运行事务由Debezium发件箱模式。开云体育官方注册网址我是在我们的平台上运行自定义构建,最后成为了官方发件箱活动路由器今天你看到Debezium文档开云体育官方注册网址。我很幸运在正确的时间和正确的人,所以再次感谢Debezium团队对我的帮助在整个过程中起草并让它发生!开云体育官方注册网址

我会做更多的开源吗?是的,但是我必须说我的大多数开源活动是“自私”,发展解决问题的我面对在工作但是我很高兴花额外的步骤,让他们OSS的世界里,但这也使季节性。的优点之一,是一个项目,如果我做的事情我一定会让它生产,可能可以找到更多的问题!

有什么你失踪Debezium或者你希望看到在未来改善吗?开云体育官方注册网址

当我想到卡夫卡和Debezium生态系统,下一步我认为重要的开云体育官方注册网址是这将使它更容易。虽然网上有很多内容和例子,读那些仍然存在很大的差距,一个已经实现的产品。

我的意思是将各个部分抽象出来,给他们更多的意义。发件箱模式是一个很好的例子,它并不是自然的人们认为疾病预防控制中心和知道它是这样一个很好的比赛,有很多更多的用例探讨在这个生态系统。

如果你能拥有一切开箱即用的什么?发件箱实现在你最喜爱的框架,它知道如何整合与ORM,处理事务的一部分,那么,如何塑造消息和事件吗?如何采用的模式以及如何进化的它的样子。之后,接近消费者实现,幂等如何处理消息,尊重语义,重试,和项目数据库如果需要吗?开云体育电动老虎机已经有像这样的举措,例如,Quarkus发件箱扩展负责框架和数据库集成。开云体育电动老虎机未来对我来说这些东西,为多个框架和技术堆栈,将更广泛和帮助你设计好的事件(甚至由AsyncAPI),给每个人一个启动!

这些都是非常复杂的事情要做在越来越多的体系结构中,将重复的模式,希望社区能够来设计和实现的共识,这就是我认为下一步是,一个好的架构的复杂性的地方不再生活在电线和插头,使它更容易!

奖金的问题:软件工程的下一件大事是什么?

我想我处理许多地区的线索的我以前的答案!

为我下一个大事件是一个方法;我经常说DevOps的进化是自助服务,它可以在许多层的堆栈。我给的例子对我们Debezium之间实现我所说的自助服务平台开云体育官方注册网址/操作和产品开发团队,但它可以应用在很多,很多地方!

这个想法是为了便于实现复杂的结构,端到端、照顾好实践指标,警报,和多样化的其他保证语义的用例!我们可以看到有一个融合走向这条道路,例如Kubernetes运营商是一个伟大的例子,你可以抽象用例将翻译对许多人来说,如果不是几十个内部资源的基础设施。

我相信我们已经有了基础技术,所有的基础设施代码、容器、框架、可观察性系统,我们必须赋予它们的意义!

框架在哪里我在哪里可以:处理用户请求,验证,编写真理的来源,产生一个消息我的经纪人,消耗在另一端我唯一担心的是负载本身?所有的语义应该照顾,幂等性,重试,串并收发器问题,死信队列,应对最终一致性,指标、警报、SLOs, sla,等等!

这就是我把我的能量在日常工作时,给予所有工程团队更多的乐趣和安全的方式开发软件,也为平台工程总结我的激情!

雷纳托,非常感谢你的时间,很高兴在这里有你!

如果你想保持联系和雷纳托Mefi与他讨论,请发表评论或遵循劝劝他在推特上

贡纳Morling

贡纳可解码是一个软件工程师和一个开源爱好者的心。他一直Debezium多年的项目领导。开云体育官方注册网址贡纳创造了开源项目像kcctl、JfrUnit MapStruct,规范领导Bean验证2.0 (JSR 380)。他是总部位于德国汉堡。


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

开云体育官方注册网址Debezium是一个开源的分布式平台,把你现有的数据库事件流,这样应用程序就可以看到,几乎立刻回应每个提交的行级的变化数据库。开云体育电动老虎机开云体育官方注册网址Debezium之上卡夫卡并提供卡夫卡连接兼容的连接器监控特定的数据库管理系统。开云体育电动老虎机开云体育官方注册网址Debezium卡夫卡日志记录的历史数据变化,所以可以在任何时候停止并重新启动您的应用程序,可以很容易地使用它错过了所有的事件而不运行,确保所有事件处理完全正确。开云体育官方注册网址Debezium是开源Apache许可,2.0版本

参与

我们希望你发现Debezium有趣开云体育官方注册网址的和有用的,想试一试。在Twitter上关注我们@开云体育官方注册网址debezium,与我们Zulip聊天,或者加入我们的邮件列表跟社区。所有的代码是开源的GitHub上,所以在本地构建代码,帮助我们改进我们现有的连接器和添加更多的连接器。如果你发现问题或有想法如何提高Debezium,请让我们知道开云体育官方注册网址日志一个问题

Baidu
map