作家
登录

怎样将微服务和无服务器相结合?用新型事件驱动型架构CQRS!

作者: 来源: 2018-03-28 14:02:25 阅读 我要评论

敕令触发操作,操作触发范畴事宜。范畴事宜保存在事宜存储中,也就是“一个将数据库与消息代劳相浇忧⒛体系。”最合适入门应用的事宜存储是Eventuate,是由Chris Richardson创建的项目,旨在赞助将CQRS和Event Sourcing应用到微办事。

范畴事宜存储为按时光次序分列的一系列事宜,附加在日记上。因为每个敕令都生成一个事宜,我们可以或许根据收集的事宜汗青记录从新构建当前体系的总体状况。

事宜处理器

我们要商量的下一?组件是事宜处理器。这个CQRS组件采取Worker应用的情势,负责摄取范畴事宜。事宜处理器是无状况的,并侦听来自事宜存储的消息,对传入的事宜消息采取操作。

事宜处理器可经由过程很多有效的方法对新的范畴事宜作出响应。一个范畴事宜可以生成多个事宜,这些事宜可以发送到其他微办事。这就是为什么大年夜多半微办事开辟人员都被CQRS吸引,因为经由过程这种办法可以宣布和订阅来自限界情况之外的应用的范畴事宜。

这种办法为我们供给了一种机制,可确保范畴数据的引用完全性。来自其他微办事的消息可用来处理范畴事宜,大年夜而让我们可以或许保护分布式体系中与其他记录的范畴数据相干的末路人的外键关系。

萌芽端

事宜处理器重要负责应用可改变范畴整合状况的范畴事宜。每个范畴事宜都可用来更新数据库记录,形成描述整合的增量实体化视图。反过来,萌芽端将供给一个REST API,许可HTTP客户端攫取大年夜已处理事宜生成的实体化视图。

萌芽端组件中的限制是范畴数据是只读的。此体系中的所有状况更改都邑大年夜敕令端流入,然后形成可在萌芽端攫取的实体化视图。

是分布式一体化照样微办事?

如今,大年夜多半人想到单个微办事时,他们想到的是一个自力的办事组件。在大年夜多半情况下,微办事被构建为应用,专注于处理好一件工作。最重要的是,这种办事可以自力于其他办事进行进级和安排。

如今,如不雅说到传统的CQRS实施,如不雅因为组件互相分别就称之为微办事,似乎有些不当。是以我们得问一句:可以将CQRS应用视为微办事吗?或者换种说法,可以像某些开辟人员那样,开端称之为分布式一体化吗?对于这个问题,不合的人会有不合的谜底。微办事主如果让小型自力团队有才能持续交付功能,作为其他微办事构成的更大年夜生态体系的一部分。

如不雅与大年夜多半微办事安排比拟,CQRS安排是十分复杂的。对于微办事团队来说,可以或许持续将功能交付至临盆是目标。因为CQRS平分别的组件仍可以自力安排,我们可以说每个安排单位仍可知足自力将功能交付至临盆的最低请求。微办事的一个功能应当始终须要且最多一个可安排单位。当交付一项功能时须要同时调和安排多个零丁组件,就会产生所谓的分布式一体化。

微办事和无办事器

无办事器也称为FaaS(功能即办事),可让内涵不须要设置或治理应用办事器或容器的情况下,将代码安排为功能。无办事器是一种新型架构风格,在构建和运行云原生应用方面越来越受到存眷。应用无办事器功能的一个明显优势是,事宜概念被优先处理。

有很多人认为,微办事和无办事器不兼容,彼此的架构风格完全不合。然则回想一下前面提到的CQRS你就会明白,这种设法主意是缺点的。让我们来看一个场景,你认为在此场景中微办事的界线在哪里?

一种办法是认为微办事的界线就是团队的界线。只要一个团队可以自力、持续地将特点安排为功能,那么微办事的界线就只是负责为团队拥有的特点供给支撑的功能子集。

衡量

速度

对于微办事来说,速度就是目标。我们可以经由过程存眷以下两个问题来衡量速度,平均时光越低,团队交付功能的速度就越快。:

开辟人员改变一行代码并将其安然地安排到临盆中的速度有多快?

新开辟人员快速上手并安然地更改代码库的速度有多快?

无办事器功能也易于进级或安排,但可能会让懂得整系一切加倍复杂。将数百个无办事器功能作为一个整体来治理,这听起来就有点头大年夜。

复杂性

软件中的复杂性无可避免,跟着代码库逐渐老化,复杂性也随时光增长。当复杂性增长,或者当框架或说话过时的时刻,一体化应用就变得粗笨、难以改变。微办事器将这种复杂性分化到分布式体系中,个中的每个可安排单位都易于懂得,易于由一小部分敏捷开辟人员进行更改。

云原生CQRS参考应用

这里有一个将云原生CQRS应用,构建为事宜驱动型微办事和无办事器功能相浇忧⒛参考应用。

敕令端

【编辑推荐】

  1. 号称“生成一对”的容器+微办事,能躲开微办事的悖论陷阱吗?
  2. 什么是无办事器计算?没有办事器谁去计算?
  3. 无办事器架构正在蚕食基本举措措施
  4. 一文懂得什么是无办事器架构及其4大年夜重要弊病?

      推荐阅读

      十个问答助你了解 Redis 高可用架构及 Redis 运维

    沙龙晃荡 | 3月31日 京东、微博、华为拭魅战专家与你合营商量容器技巧实践! Redis 是一个开源的应用 ANSI C 说>>>详细阅读


    本文标题:怎样将微服务和无服务器相结合?用新型事件驱动型架构CQRS!

    地址:http://www.17bianji.com/lsqh/40981.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)