写点什么

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:224995
用户头像

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

关注

评论 1 条评论

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

白话大数据 | 从买菜这件小事来聊聊数据仓库

星环科技

与容器服务 ACK 发行版的深度对话第二弹:如何借助 hybridnet 构建混合云统一网络平面

阿里巴巴云原生

阿里云 云原生 ACK Distro

基于XuperChain的区块链项目从0到N

刘旭东

区块链 XuperChain

火山引擎、阿里云、腾讯云联合发布"超低延时"直播技术标准

字节跳动视频云技术团队

音视频

华为,在行星的十字路口

脑极体

【BBC learningenglish】with Tango

IT蜗壳-Tango

IT蜗壳教学 3月月更 Tango English

Serverless常见的应用设计模式

亚马逊云科技 (Amazon Web Services)

Serverless 架构

cdr2022序列号CorelDRAW2022绿色密钥

茶色酒

CorelDRAW 2022

2021 “科创中国”开源创新榜单公布,优麒麟荣登两榜!

优麒麟

Linux 开源 开源社区 优麒麟

【技术分享】历经16年猪八戒网如何成功实现双活流量架构

八戒技术团队

架构

一文带你认识 SOFARegistry 之基础架构篇

SOFAStack

开源 架构 注册中心 SOFA

开讲了!龙蜥社区走进北大课堂

OpenAnolis小助手

开源 操作系统 龙蜥社区 北京大学 走进高校

ToB月报丨二月融资总金额超152亿元;「东数西算」国家工程全面启动

ToB行业头条

在线Excel文件解析转换成JSON格式

入门小站

工具

HertzBeat赫兹跳动v1.0.beta.4 发布, 易用友好的高性能监控告警系统

TanCloud探云

开源 APM 监控 监控系统 监控告警

Serverless 底座的持续创新

亚马逊云科技 (Amazon Web Services)

Serverless 架构

Rainbond 5.6 版本发布,增加多种安装方式,优化拓扑图操作体验

北京好雨科技有限公司

澜起科技加入,龙蜥社区再迎领先的芯片设计厂商

OpenAnolis小助手

Linux 开源 操作系统 生态 龙蜥社区

系统学习 TypeScript(五)——联合类型

编程三昧

typescript 前端 3月月更 联合类型

前端架构三大巨头之一Angular | 深度讲解

云智慧AIOps社区

开源 前端 Web angular 数据源

【C语言】数据类型存储、原码,反码,补码

謓泽

C语言 补码 原码 反码 3月月更

直播带练 | 30 分钟用阿里云容器服务和容器网络文件系统搭建 WordPress 网站

阿里巴巴云原生

阿里云 云原生 课程 容器服务 直播回放

2023届校园招聘正式开启!OceanBase 想和你在这个春天约一场面试

OceanBase 数据库

招聘 校园招聘 oceanbase

揭秘视频千倍压缩背后的技术原理之环路滤波

拍乐云Pano

音视频 RTC 视频编码 音视频开发 视频压缩

创建公司内部文档的入门指南

小炮

工作效率 企业管理 企业管理软件

网络安全kali渗透学习 web渗透入门 使用msf渗透攻击Win7主机并远程执行命令

学神来啦

网络安全 Web 渗透 kali kali Linux

招聘宣讲会|Rust 如何为量化行业加速赋能?

非凸科技

融合通信常见问题2月刊 | 云信小课堂

网易云信

音视频 融合通信

Linux之crontab命令

入门小站

Linux

OceanBase 社区版 OCP 功能解读

OceanBase 数据库

分布式 OceanBase 社区版 工具家族

对信用卡欺诈 Say No!百行代码实现简化版实时欺诈检测

沃趣科技

数据库表

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