奈何将微处事和无处事器相团结?用新型变乱驱动型架构CQRS!
副问题[/!--empirenews.page--]
本文是将先容如安在微处事中实验CQRS模式,并深入切磋为什么无处事器和这种范例的体系无比契合。在最后,将先容一个行使Spring Cloud Stream实验CQRS的参考应用。 什么是变乱驱动型架构? 变乱驱动型架构会优先处理赏罚规模变乱,但这种架构已经逐渐被裁减。 我们一般行使的一个示例是前端应用。在现在行使的Web赏识器中,变乱的处理赏罚要领是捕捉用户表单的输入数据,而毗连到页面元素的变乱将由一个显式映射函数来处理赏罚,在触发时在用户界面应用对状态的变动。 最近,跟着微处事的普及遍及,人们对如安在漫衍式后端体系中操作变乱驱动技能从头发生了乐趣。 CQRS 现在,变乱驱动型架构中最热点的实践之一叫做CQRS,全称是呼吁查询责任疏散。CQRS是一种架构气魄沤背同能让您行使差异模子来更新和读取规模数据。 CQRS的根基理念是,您用来更新和读取数据的模子要彼此疏散是很天然的工作。上图描写了这种根基头脑。 CQRS之以是在变乱驱动型架构中云云受接待,是由于作为输入的规模变乱与其所属的规模模子在布局上有所差别。以下面这个代表一个帐户的规模模子工具为例。 示例1.帐户整合
当某个处事想查询帐户时,就会行使该模子。那么,假如我们要将状态更新为ACCOUNT_SUSPENDED,该怎么办?凡是,只需简朴更新规模工具的状态字段即可。此刻,假如我们想行使规模变乱来更新状态,该怎么办?因为规模工具在布局上与变乱差异,我们必要一个可将差异模子作为呼吁接管的API。 以下代码段是将帐户状态从ACCOUNT_ACTIVE转换为ACCOUNT_SUSPENDED的规模变乱。 示例2.帐户变乱
要处理赏罚此规模变乱并将更新应用到查询模子,我们必需有接管呼吁的API。该呼吁将包括规模变乱的模子,并行使模子来处理赏罚对帐户查询模子的更新。 将呼吁模子与查询模子相疏散是对CQRS最简朴的表明。我们现在常见的伟大性更多地与实验范例有关,将模式应用到微处事时尤为云云。 CQRS和微处事 假如CQRS与微处事相团结,绝不浮夸地说,环境就变得有点伟大了。我们来看看行使Spring Boot实验CQRS的“简朴”微处事是什么样。 上图是CQRS模式实验的大略图示。图中,我们将一个微处事分为呼吁端、查询端和变乱处理赏罚器,这三个部门可以彼此独立地陈设。 呼吁端 本示例中的呼吁端提供了REST API,可接管通过HTTP发送的哀求。哀求采纳呼吁的情势,可以驱动对微处事所拥有的规模数据的状态变动。简朴来说,对规模数据的任何写入都将以呼吁情势从API哀求流出,处理赏罚导致数据库产生变动的操纵。 呼吁触发操纵,操纵触发规模变乱。规模变乱生涯在变乱存储中,也就是“一个将数据库与动静署理相团结的体系。”最吻合入门行使的变乱存储是Eventuate,是由Chris Richardson建设的项目,旨在辅佐将CQRS和Event Sourcing应用到微处事。 规模变乱存储为定时刻次序分列的一系列变乱,附加在日记上。因为每个呼吁都天生一个变乱,我们可以或许按照网络的变乱汗青记录从头构建当前体系的总体状态。 变乱处理赏罚器 我们要切磋的下一个组件是变乱处理赏罚器。这个CQRS组件回收Worker应用的情势,认真摄取规模变乱。变乱处理赏罚器是无状态的,并侦听来自变乱存储的动静,对传入的变乱动静采纳操纵。 变乱处理赏罚器可通过许多有效的方法对新的规模变乱作出相应。一个规模变乱可以天生多个变乱,这些变乱可以发送到其他微处事。这就是为什么大大都微处事开拓职员都被CQRS吸引,由于通过这种要领可以宣布和订阅来自限界情形之外的应用的规模变乱。 这种要领为我们提供了一种机制,可确保规模数据的引用完备性。来自其他微处事的动静可用来处理赏罚规模变乱,从而让我们可以或许维护漫衍式体系中与其他记录的规模数据相干的恼人的外键相关。 查询端 变乱处理赏罚器主要认真应用可改变规模整合状态的规模变乱。每个规模变乱都可用来更新数据库记录,形成描写整合的增量实体化视图。反过来,查询端将提供一个REST API,应承HTTP客户端读取从已处理赏罚变乱天生的实体化视图。 查询端组件中的限定是规模数据是只读的。此体系中的全部状态变动城市从呼吁端流入,然后形成可在查询端读取的实体化视图。 是漫衍式一体化照旧微处事? 现在,大大都人想到单个微处事时,他们想到的是一个独立的处事组件。在大大都环境下,微处事被构建为应用,专注于处理赏罚好一件工作。最重要的是,这种处事可以独立于其他处事举办进级和陈设。 (编辑:河北网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |