DDD领域事件

     

Spring Modulith增加事件外部化的支持

374 2K

SpringBoot应用程序的事务绑定发件箱模式 实现,专门基于Kafka、AMQP和JMS的代理。应用程序模块之间交换的一些事件可能对外部系统感兴趣。Spring Modulith 允许将选定的事件.

EDA中事件内容的设计权衡

387

用例:下订单。成功下订单后(付款成功并且向餐厅成功下订单后),订单服务会发布一个事件:食品配送合作伙伴服务,用于安排送货人员到达餐厅、挑选食物并将订单配送到用户的地址将积分记入用户帐户的忠诚度服务通知.

使用Holder类实现通用值对象

437 1 2K

假设我们有一个简单的Holder类,它包装了T类型的值。我们可以这样定义它:public class Holder<T> {    public T value;    public Holder(T.

Saga模式实现事件驱动系统集成

405 5K

在当今快节奏、互联的世界中,企业和开发人员不断寻求创新方法来构建高效且可扩展的应用程序。事件驱动架构 (EDA) 是最引人注目且势头强劲的架构范例之一。事件驱动的应用程序旨在响应实时事件,并已成为构建.

纳秒时间戳不适合做唯一标识符

361

在现代系统中,纳秒时间戳碰撞的频率有多高?答案是:非常频繁,比如在同时读取所有 4 个物理内核的时钟时,有 5%的样本会发生碰撞。因此,采用原始纳秒时间戳作为唯一标识符是不安全的。 test prog.

实现事件驱动架构EDA面临的缺点

360

以下是对构建 EDA 应用程序时应考虑的挑战性问题:1.缺乏幂等处理消费者可能会对事件进行多次处理(或者您可能需要重放事件、故障等)。使用幂等性 可以帮助您构建没有副作用的解决方案。2.误将命令与事件.

Spring Modulith:模块内领域事件发给外部Kafka的示例

424 2K

使用spring modulith轻松地将选定的域事件外部化到消息代理:添加例如,Kafka集成模块选择要外部化的域类型(例如,通过使用(At)外部化)点击标题见案例,展示如何自动将域事件外部化到 K.

从代码逆向生成UML序列图的工具插件

518

序列图在可视化和理解运行时行为方面非常强大。其固有的结构:对象在页面上方展开,时间则由上而下依次序发生,这很直观易学。序列图是开发人员和非开发人员(如工程经理和产品经理)在讨论代码设计时使用的最佳工具.

UML中只有时序图给软件开发带来好处

682 1 4K
当你记录一个系统的不同部分以及这些部分之间相互作用的各种方式时,时序图/序列图( sequence diagram)才会真正发挥其作用。时序图/序列图描述了系统内的操作,并映射出消息的发送内容和时间。.

什么是业务规则? - Ronald

764 3K

规则是行为或行动的指南。它为判断或评价该行为或行动提供标准。每条规则都倾向于取消某种程度的自由。规则是你如何在一个群体或社区内从无序中创造秩序并确保一致的经验。每当你希望能够解释结果的 "原因 "时,.

为什么要使用eventSourcing?

657 2K

eventSourcing将事件建立为系统中唯一的事实来源。通过采用动态一致性边界DCB,eventSourcing提供了高度灵活的事件使用,允许随着时间的推移出现最佳的设计。事件流系统事件流系统通常.

黑石贝莱德如何实现基于领域驱动的资产管理?

567 1 4K

Alan Moore (Aladdin 首席架构师、技术研究员和董事总经理)描述了贝莱德在资产管理中使用领域驱动设计DDD,以及我们如何使用它来定制、扩展和调整 Aladdin 以满足客户的需求。Al.

使用事件建模实现软件协作和业务设计

518

讲故事使人类能够将知识传给下一代,并依赖于我们存储记忆的方式。我们可以通过举例说明,一个系统从开始到结束应该做什么,在时间轴上,而且没有分支。要做到这一点,我们需要用特定的时间线画一条线,代表状态在不.

fraktalio/fmodel-spring-demo:Spring + kotlin DDD示例源码

826 1 2K

这个项目正在使用Fmodel - Kotlin,多平台库。特点: 使用 Kotlin 编程语言启用函数式、代数和反应域建模。 受到 DDD、EventSourcing 和函数式编程社区的启发,但在惯用.

我们是以名词为中心的思维方式 - Carlos E. Perez

942 2K
我对复杂性的第一次遭遇是在软件开发过程中。你不会在大学遇到这种情况,而是在现实世界中遇到。应对这种复杂性需要一种截然不同的思维方式(参见:敏捷方法)。敏捷方法是由来自建筑学的 Christopher .

使用事务发件箱进行可靠的事件调度

933 3K
在系统中使用事件很棒,但是您如何确定您是否可靠地调度了事件?事件的传输需要可靠地完成,同时保持整个系统的一致性,无论是最终的还是立即的。在典型的设置中,数据库用于存储信息,队列用于在进程和系统之间发送.

事件风暴是一种理解复杂项目的技术 - Lucas

1109 2K
事件风暴是由 Alberto Brandolini 创建的技术,有助于通过应用程序生成的事件更清楚地了解应用程序的领域。它通常以研讨会的形式进行。它是一个涉及领域专家和技术领域的群体动态。事件映射橙色.

事件模式:使用幂等消费者(收件箱)检测重复消息

1195 3K
检测重复消息的唯一方法是在生产者端为事件生成一个唯一标识符。只有使用这些标识符,消费者才可能知道它第二次处理同一条消息,而不是具有相同属性的不同消息。为了防止两次处理同一条消息,常用的方法是将它们存储.

领域事件和集成事件有什么区别? - DevCezz

1019 2K

在事件驱动架构的世界中,我们处理发送许多事件。然而,正如我们所知,尽管名称相同,但一件事并不总是等于另一件事。因此,为了区分这些事件,引入了两种名义类型的划分:领域事件和集成事件。什么是领域事件?按照.

什么是函数式数据工程?

1208 1 6K

数据建模一直是Data LinkedIn的热门话题之一。Hadoop 提出了schema-on-read策略,导致了我们之前所知的数据建模技术的中断。我们经历了一个完整的周期,即“读取模式”导致了数据.

换个角度:采用时间建模来捕捉时间的流逝 - Mario

1571 1 3K
建模是软件或系统开发的一个重要部分,然而在试图捕捉系统的行为时,并不常见到时间被使用。当我们这样做时,我们倾向于提取这个概念,并以计划任务的形式将其放在领域之外。在这篇文章中,我将提倡把时间作为建模的.

一张图解释DDD领域驱动设计的战术概念

2251 4
​Eric Evans的经典著作《领域驱动设计:在软件的核心处理复杂性》解释了一种方法来建模一个复杂的业务。三种领域对象: 实体:具有ID和生命周期的域对象。 值对象:没有ID域对象 聚合:由聚合根(.

Postgres事件溯源的存储表设计 - DEV

1911 1 9K

任何基础设施的关键部分之一是存储。与传统的关系模型相比,将事件存储在日志中非常简单。但是,当您体验到成功产品的好运时,即使是日志式存储也必须不断发展才能跟上。幼稚的实现当我开始使用事件溯源时,我想尽可.

使用Redis实现简单的事件驱动架构 [DDD、事件溯源和一致性哈希] - core27

1745 2 14K

用 Redis 模拟 Kafka实现事件驱动架构,Apache Kafka 已成为大多数技术栈中的主流组件。使用 Kafka 的好处包括确保事件中的因果顺序,同时保持并行性,通过在服务器之间快速复制分.

如何掌握DDD聚合设计? - SSENSE

2297 4 16K
在本文中,将深入研究领域驱动设计(DDD) 以及许多困惑和讨论的主题:聚合设计。首先简要概述什么是聚合,然后继续揭开业务不变量的神秘面纱,并在您必须打破聚合时提供实际考虑因素。什么是聚合?DDD 中提.

使用事件驱动架构实现Hashnode博客系统

1171 5K
Hashnode 有许多事件驱动的用例,在这篇文章中使用的一个用例是发布一篇文章。如果用户发布帖子,则会启动多个服务: 将此帖子转换为音频帖子 将此帖子备份到用户的 GitHub 向所有订阅者发送时事.

以事件源方式构建事件驱动系统 - Jayanth

1274 9K

首先了解业务逻辑可以建模为事件驱动的状态机: 状态机——状态机是一种数学抽象,用于设计基于行为模型的算法。状态机读取一组输入并根据这些输入更改为不同的状态。 状态— 状态是对等待执行转换的系统状态的描.

在微服务中使用事件溯源的六大原因 - Herath

3729 1 2K
从单体应用程序迁移时,微服务起着至关重要的作用。它们有助于提高应用程序的可扩展性、可管理性、敏捷性或交付速度。但是,使用微服务存在一些挑战,例如状态处理。作为开发人员,我们必须知道如何克服这些问题以最.

如何有效地组合您的业务逻辑 - Event-Driven.io

1284 1 18K
假设我们要实现购物车。我们有以下要求:客户只能在打开购物车后将产品添加到购物车中。在选择产品并将其添加到购物篮时,客户需要提供选择的数量。系统根据当前价目表计算产品价格。客户可以从购物车中移除具有给定.

oskardudycz/EventSourcing.JVM:JVM语言中事件溯源的示例和教程

862

事件溯源是一种设计模式,其中业务操作的结果存储为一系列事件。这是持久化数据的另一种方式。与仅保留最新版本的实体状态的面向状态的持久性相比,事件溯源将每个状态更改存储为单独的事件。谢谢你,没有业务数据丢.