硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

CQRS 和事件源框架 Axon 的基本概念和未来

  • 2018-09-29
  • 本文字数:1462 字

    阅读完需:约 5 分钟

Axon Framework 的应用正在迅速增加,最近达到了 100 万的下载量。在最近的阿姆斯特丹事件驱动微服务大会上, Allard Buijze 在演讲中介绍了 Axon 的基本概念、历史和未来。该框架面向以 DDD 事件源 CQRS 为基础的系统。

Buijze 一开始就指出,事件非常特殊;它们描述了发生过的事情,并且是系统历史的一部分。我们可以从过去中发现问题,我们可以设定对未来的期望。在 Buijze 看来,就是这点推动了事件源实践——使用事件作为应用程序的事实来源,而不仅仅是作为意外结果。

Buijze 还指出,重要的是,服务在消费自己的事件——这在事件源中非常重要。如果服务是基于内部数据而不是事件进行决策,那么你所做的就不是完全的事件源。你有一个事件驱动的架构,但是你不能保证事件是服务中发生的事情的真实表示。

根据 Buijze 的经验,有很多基于实体服务的微服务架构,他将这种设计技术称为“名词驱动设计(noun-driven design)”。其思想是在描述新系统的文档中找出所有的名词,它们将成为服务,而所有的动词将成为API 调用。这种技术很可能会导致分布式的大泥球,所有的服务都相互依赖。如果一个服务宕机,整个系统将无法使用。

Buijze 希望我们从单体而不是微服务入手。尽管更难扩展,但它们更容易部署和重构。他指出,我们不应该将好的单体与大泥球混为一谈。他建议的策略是从单体入手,但要确保内部结构明确定义。随着时间的推移,当过多的人不得不使用代码的相同部分时,就应该提取出一些组件,最好不要修改其他部分。随着时间的推移和需求的增加,会有越来越多的组件被提取出来。

为了帮助提取组件,位置透明性非常重要,Buijze 指出,Axon 的主要特性不是 CQRS,而是应用程序中组件之间的位置透明性。如果两个组件不知道它们各自的位置,那么你就可以修改那个位置。这还意味着,你不必知道某个操作在哪个服务中——你只需发送一条消息,它自己会找到它的目的地。

组件既不应该知道也不应该对与它交互的组件的位置做出任何假设。

事件很重要,但 Buijze 指出,组件发送的消息有三种类型,并强调,事件与消息不是一回事:

  • 事件就是已发生的事情。它们被分发给所有处理程序,不返回任何结果。

  • 命令是你希望系统执行的操作。它们会被路由到单个处理程序并返回一个结果。

  • 查询用于你想知道什么的时候。它们会返回一个结果。

为了兑现位置透明的承诺,并使用这些不同类型的消息, AxonHub 于 2017 年(在去年的大会上)发布。Buijze 将其描述为一个消息传递平台,它能够理解不同类型的消息,而不是内容,并能够将不同的类型路由到正确的目的地。他指出,“集线器(hub)”的概念与微服务的智能端点和哑管道概念类似,虽然在本例中管道知道消息类型。

展望未来,Buijze 相信,微服务将继续发展演化,他也相信,Axon 组件的工作和通信方式在无服务器环境中会非常有用。他们朝这个方向迈出的第一步将是提供 SaaS 解决方案,但他也指出,他们还有更多的东西需要学习,为了有效地使用无服务器环境,他们还有更多的工作要做。

今年早些时候,Axon 团队发布了 AxonDB ,这是一个专门设计的事件存储。AxonHub 使用该存储存储事件,为此,他们已经决定将这两个产品合并到此次大会期间宣布的 Axon Server 中。该服务器既有开源版本,也有企业版本。

Axon 的下一个版本 4 正在开发,第一个里程碑已于最近发布。产品发布预计在10 月18 日。

Axon Framework 是面向 JVM 平台的开源产品,由Allard Buijze 在2009 年创建。2017 年7 月,一家单独的公司 AxonIQ 成立,专门从事 Axon 产品开发。

查看英文原文: Basic Concepts and the Future of Axon, a CQRS and Event Sourcing Framework

2018-09-29 09:225501
用户头像

发布了 1008 篇内容, 共 436.6 次阅读, 收获喜欢 346 次。

关注

评论 1 条评论

发布
暂无评论
发现更多内容

电脑越用越慢,有什么好的解决方案?

上海锐起科技

GitHub Star 数量前 13 的自托管项目清单

NocoBase

GitHub 开源 自托管 self-hosted

性能测试 | JMeter 介绍与安装

测试人

软件测试

报名啦|PolarDB数据库创新设计赛(天池杯)等你来战

阿里云数据库开源

数据库大赛 国赛 阿里云PolarDB

《黑神话:悟空》下的科技众生相

脑极体

AI

Invicti v24.9.0 发布下载,新增功能概览

sysin

invicti

什么是APT攻击,如何处理

德迅云安全杨德俊

化“腐朽”为“神奇”:5 种 RAG 优化技术应对千奇百怪的 Query

Baihai IDP

程序员 AI rag Baihai IDP 企业 9 月 PK 榜

性能测试 | JMeter 介绍与安装

测吧(北京)科技有限公司

测试

IP纯净度对跨境电商有哪些影响

IPIDEA全球HTTP

Spring webflux注解:提供全面的JPA注解应用案例(必须收藏)

肖哥弹架构

spring spring webflux

数据飞轮转进快递行业 能够为企业带来哪些新想象

字节跳动数据平台

数字化转型 云服务 数据平台 火山引擎 数据飞轮

从数据洞察到智能决策:合合信息&infiniflow RAG技术的实战案例分享

汀丶人工智能

rag

直播预约丨《袋鼠云大数据实操指南》No.6:建设指标管理平台 解锁企业数据价值

袋鼠云数栈

大数据

Cisco Catalyst 9100 无线接入点 IOS XE 17.15.1 发布下载,新增功能概览

sysin

Cisco ap 思科 IOS XE 9100

支撑AI的算力芯片,未来何去何从?

博文视点Broadview

StarRocks 培训课程重磅上线!专家出品,助你升级打怪不走弯路!

StarRocks

健康产业怎么定义?需要用到堡垒机吗?

行云管家

网络安全 数据安全 堡垒机 健康产业

防城港等保测评机构有哪些?在哪里?

行云管家

等保 等级保护 防城港

Parallels Desktop 20 发布下载,macOS Sequoia 和 Windows 11 24H2 支持准备就绪

sysin

macos Parallels Desktop

Cisco Modeling Labs (CML) 2.7.2 发布下载,新增功能概览

sysin

Cisco CML

火山引擎携手招商银行共探智能体应用,加速数字金融创新

新消费日报

人事管理这些“坑”,你有没有踩过?

天津汇柏科技有限公司

人工智能 低代码开发 人事管理系统

公开课 | 金九银十,测试开发面试秘籍大公开!

测吧(北京)科技有限公司

测试

Qt使用kingbase数据库存储数据(完成考勤系统数据增删改查)

DS小龙哥

9月日更

CQRS和事件源框架Axon的基本概念和未来_语言 & 开发_Jan Stenberg_InfoQ精选文章