AXON简介

最近公司项目要调整架构,要上AXON。

Axon是一个轻量级的框架,帮助开发者在架构层面建立可伸缩的和可扩展的应用程序。本参考指南解释了什么是Axon,以及如何使用它。


简介

随着时间的推移,软件项目的需求将会迅速增加。公司已经无法接受,通过过于简单的说明性网页来介绍和提升他们的业务,他们希望自己的(网络)应用程序与业务一起发展。这意味着,不仅是项目和代码变得更加复杂,同时功能也在不断增加、变化和移除。但令人沮丧的是,一个看似容易实现的功能,却导致开发团队对整个应用程序进行大范围的调整和修改。

此外,今天的web应用往往要面对潜在的数十亿用户的考验,因此需要满足很强的可伸缩性和可扩展性要求。 虽然有很多应用和框架围绕着可扩展性问题进行了很多有益的探索,如GigaSpaces的和Terracotta,但它们都存在着一个共同的根本缺陷。即他们通过要求开发人员在开发应用时,使用分层体系结构,来试图解决可扩展性问题。导致开发人员无法使用真正意义上的领域模型,强迫将所有领域逻辑放到了各个服务中。虽然初期可以更快地构建一个应用程序,但最终这种做法将导致复杂性增加,发展逐渐的放缓。

命令职责和查询职责分离( CQRS )模式,则通过彻底改变应用程序的架构的方式来解决这些问题。不是将分离的逻辑分到不同的层,而是按照改变应用程序的状态逻辑和查询逻辑来区分。这意味着,执行命令(有可能更改应用程序的状态行为)和查询应用程序数据是由不同的组件执行。这种分离的最重要的原因是,两者各自有不同的技术和非技术的要求。

当通过命令组件执行逻辑时,查询组件使用事件来异步或同步更新。通过基于事件的更新机制,使这个体系结构是可伸缩,可扩展的,最终更易于维护。scalable VS. extensibleIcon calable 并不重点指出可扩展,而是重点在于规模可变化,所以恰当的翻译是可伸缩的,可改变的至于extensible,只是可扩展CQRSIcon CQRS的完整说明不在本文档的讨论范围之内。

如果您想了解 CQRS 的更多背景信息,请访问:http://www.jdon.com/cqrs.html 由于CQRS 与当下主流的软件体系结构,根本是不同的分层体系结构,因此很难把握。许多开发人员试图在这个架构上,找到自己的方式,结果走入了很多误区,这是不正常的。这就是为什么产生了Axon框架这一构想:即帮助开发人员在专注于业务逻辑的实现,开发CQRS应用。


什么是AXON

Axon框架通过命令查询责任分离( CQRS )架构模式,来构建可伸缩,可扩展和可维护的应用程序。它提供了如聚合根,仓储和事件总线(事件调度机制),这些最重要的构件实现来实现应用。

此外,Axon提供了注解的支持,它允许你无需通过编码来实现Axon中,如建立聚合和事件侦听器等特定的逻辑。这使您能够专注在业务逻辑上,而不是数据传输上,并使你的代码更容易进行隔离测试。Axon不以任何方式,试图隐藏CQRS架构或任何组件。因此,根据团队的规模,最好每个团队有一个或更多的开发人员对CQRS有透彻的了解。

无论如何,Axon可以确保事件传送到正确的事件侦听器,并按照正确的顺序,实时处理它们。你一定曾经遇到到过这样的多线程问题,他们时不时的导致应用程序异常或宕机,且难以跟踪到错误。而你又有一个严格的最后期限,导致你甚至不想去关心这些问题。Axon的代码是经过完整严格的测试,以防止这种类型的错误出现在你的应用中。

Axon框架中包含了提供各类工具和组件的若干模块(Jar),用以构建一个可伸缩的基础架构。

Axon核心模块为不同的构件提供了基本的API,并为单JVM的应用解决方案提供了简单实现。同时,其他模块进一步提供了更为专业化的构件,来解决可伸缩性和高性能的问题。


何时采用AXON

Axon适用于所有的应用吗?非常不幸,答案是:不。简单的CRUD(创建,读取,更新,删除),及那些未来不会被大规模访问的应用,可能不会从CQRS或Axon受益。

幸运的是,还是会有各种各样的应用程序将受益于Axon。最有可能从CQRS和Axon受益的应用程序,应具有以下一个或多个特点:

• 在相当长的一段时间,可能会扩展新的功能。例如,一个在线商店可能初期仅仅是一个订单进度跟踪系统。随后可能会扩展到库存信息的管理,确保物品售出后及时的更新库存。再后来,会计可能要求销售统计记录等。显然大多数应用都是很难预测,它未来会怎么演变。

• 该应用程序具有较高的读-写比率。这意味着数据只写了几次,读的次数却是写的数倍。而数据的查询是不需要像写入数据时所必需的数据验证,因此可以为数据快速查询提供相应的优化。重复数据也不再是个问题,因为当数据发生变化,事件也随之发布。

• 应用程序中的数据需要多种不同格式的呈现。许多应用程序目前不仅仅是在网页上呈现数据。例如,一些应用程序发送电子邮件通知,每月将发生的变化通知给相关的用户。再例如,搜索引擎。它在使用你应用中相同的数据,但在面向搜索上作了进一步优化,提升检索的速度。报表工具依照时间变化汇总信息,呈现数据报告。这也是相同数据的不同数据格式呈现。利用Axon,每个数据源可以彼此独立地,实时或定期更新。

• 当应用程序做到面向不同的受众,清晰的分隔成不同的组件时,它也可以从Axon中受益。例如:在线商店。员工将更新网站上有关产品信息和可用性,同时客户可以下单或查询他们的订单状态。通过Axon,这些组件可以部署在不同的服务器上,并依据应用的实际性能需求,使用不同的策略进行伸缩。通过事件机制,Axon就会分发给所有部署在不同服务器上的订阅这一事件的组件,使其保持最新的数据状态。

• 与其它应用系统的集成往往是个很繁琐的工作。使用的命令和事件方式,经过严格定义的应用程序的API,会使它变得更容易与外部应用程序集成。任何应用程序可以发送命令或侦听应用程序发布的事件信息。

评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值