AxonFramework简介

Axon是一个轻量级框架,能够帮助开发者通过在架构层面构建可扩展和可伸缩的应用。(注:以DDD面向领域驱动设计为基础的CQRS框架)

Axon Framework背景、发展简史

随着时间的发展,软件的需求也在不断增长。公司都希望自己的(web)应用程序和自身业务共同发展。这就意味着不仅仅是工程和代码变得更复杂,也意味着功能不断地新增、更改和移除。它令人沮丧的是,一个看似易于实现的功能,却要求开发团队改动整个应用程 序。此外,如今的web程序的目标是针对潜在的数十亿用户,这便使可伸缩性成了必要的条件。

虽然有很多的应用和框架围绕着可扩展性问题进行处理,例如GigaSpaces(类似Microsoft Azure) 和 Terracotta(分布式缓存线性扩展平台),它们都存在着一个根本的缺陷。他们通过要求开发人员在开发应用时,使用分层体系架构,来试图解决可扩展性问题。在某些情况下,他们甚至会阻止或严格限制使用一个真正的领域模型,强迫所有领域逻辑都放到服务中。虽然可以很快地构建一个应用程序,最终,这种做法将导致复杂性的增加和开发速度减慢。

命令查询职责分离(CQRS)模式解决了这些问题,大幅改变了应用程序的架构。CQRS不是将分离的逻辑分到不同的层 ,逻辑的分离是以改变应用程序的状态或查询为依据。这意味着,执行命令(行为有可能更改应用程序的状态)和查询应用程序数据是由不同的组件执行。这种分离事实上最重要的原因是,他们各自有不同的技术和非技术的要求。当命令执行后,查询组件利用事件同步或异步地进行更新。该更新机制通过事件来完成,正是这种架构如此的可扩展,可伸缩,最终会更易于维护。

注意
一个完整的CQRS解释不在本文的范围之内。如果你想了解更多关于CQRS的信息, 请访问 Axon Framework的网站: www.axonframework.org。它包含了背景知识的链接。

由于CQRS与主导当今软件局面的分层架构有着根本上的不同,开发人员试图找到自己实现这个架构的方式,但往往会掉入各种陷阱。这就是了Axon Framework 产生的原因:帮助开发人员实现CQRS,并让他们只专注于业务逻辑。

Axon是什么?

Axon Framework 通过支持开发者应用命令查询职责分离(CQRS)架构模式,来帮助构建可伸缩、可扩展和可维护的应用程序。它通过提供最重要的构建块的实现来实现,如:聚合、仓储以及事件总线(事件的调度机制)。此外,Axon提供了对注解(annotation)的支持,它允许你构建聚合和事件监听器而不用将你的代码捆绑到Axon特有的逻辑。这使你能够专注于业务逻辑, 而不是数据传输(the plumbing),并帮助你使代码更容易隔离测试。

Axon不会试图以任何方式隐藏CQRS架构或任何组件。因此,根据团队规模,明智的选择是,每 个团队中有一个或多个对CQRS有着透彻了解的开发人员。不管怎么样,Axon帮助保证把事件交付给正确的事件监听器,并按正确的顺序并发处理它们。这些多线程问题通常很难处理,导致难以跟踪Bug、应用程序完全失去响应。当你的时间紧迫,你可能甚至不想去关心这些问 题。Axon的代码是经过完全测试的,以防止这些类型错误的出现。

Axon Framework由多个模块(jar)组成,这些模块提供工具和组件来构建可伸缩的基础设施。Axon核心模块为不同的组件提供了基本的API,并为单JVM的应用程序解决方案提供了简单实现。其他模块提供专业的组件,来解决可伸缩性和高性能的问题。

何时使用Axon?

并不是每一个应用程序都会从Axon中获益。简单的CRUD (Create, Read, Update, Delete) 应用程序、没有横向扩展预期的应用程序,可能无法从CQRS或Axon中受益。

具有以下一个或多个特点的应用程序可能会从CQRS和Axon中受益:

  • 在相当长的一段时间内可能会扩展新的功能。例如,一个网上商店可能初期仅仅是一 个订单进度跟踪系统。后期,可能会扩展到对库存信息的管理,确保物品售出后及时的更新 库存。随后,财务人员可能需要销售的财务统计数据等等。虽然很难预测软件项目未来会如何发展,但是大多数类型的应用程序都清楚地呈现为这样。

  • 应用程序有一个比较高的读写比,这意味着数据只写几次,但却要读很多次。由于查 询的数据源与用于命令验证的数据源不同,因此才有可能对数据源的快速查询提供优 化。重复数据不再是一个问题,因为当数据改变时,事件也会被发布。

  • 应用程序需要不同格式的展示数据,许多应用程序目前不仅仅只停留在显示数据到网 页上。 某些应用程序,例如,每月邮件通知所发生的与用户有关的变化,搜索引擎也是一个例子。他们使用相同的应用程序数据,但在某种意义上这是优化的快速搜索。 报表工具随着时间的变化汇总信息,这同样是同一数据的不同格式。使用Axon,每个数据源都可以彼此独立地实时或定时更新。

  • 当应用程序面对不同的受众,清晰地隔离组件时,它也能从Axon中获益。例如网上商 店。员工会在网站上更新产品信息和可用性,同时客户可以下单和查询他们的订单状 态。通过Axon,这些组件可以部署在不同的服务器上,并使用不同的策略进行扩展。 通过事件机制,Axon将分发事件到部署在不同服务器上的订阅组件,使其保持最新的 数据状态。

  • 与其他应用程序集成可能是繁琐的工作。严格使用命令和事件定义应用程序的API, 会使它更容易与外部应用程序集成。任何应用程序都可以发送命令或监听应用程序生 成的事件。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,829评论 1 331
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,603评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,846评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,600评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,780评论 3 272
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,695评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,136评论 2 293
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,862评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,453评论 0 229
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,942评论 2 233
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,347评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,790评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,293评论 3 221
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,839评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,448评论 0 181
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,564评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,623评论 2 249

推荐阅读更多精彩内容