Java中的事件溯源简介:包含学习进度的练习工具包

22-07-11 banq

事件溯源被认为是一种复杂的模式。事实上,事件源是一个相当实用和直接的概念。它有助于建立更贴近业务的可预测的应用程序。如今,存储很便宜,而信息是无价的。在事件源中,没有数据会丢失。

本工具包目的是为参与者建立关于一般概念及其相关模式的知识。获得的知识将允许有意识地设计架构解决方案和分析相关风险。

重点将放在对架构的务实理解上,并在实践中使用Marten和EventStoreDB来应用它。
  • 事件驱动架构的介绍。与经典方法的区别是基础和术语(事件、事件流、命令、查询)。
  • 什么是事件源,它与事件流有什么不同。优点和缺点。
  • 写入模型,来自Marten和EventStoreDB的例子的数据一致性保证。
  • 处理业务逻辑的各种方法。聚合、命令处理程序、功能方法。
  • 在Marten和EventStoreDB的例子中,从事件中建立读取模型的预测、最佳实践和关注点。
  • 事件源和EDA中的挑战:可交付性保证、事件处理的顺序、空闲性等。
  • Saga, Choreography, Process Manager, 分布式进程的实践。
  • 应用架构中的事件源,与其他方法(CQRS、微服务、消息传递等)的整合。
  • 事件建模中的好的和坏的做法。
  • 生产中的事件源,演变,事件的模式版本等。


练习01、事件建模
具有以下购物车流程:

  1. 客户只有在打开产品后才能将产品添加到购物车中。
  2. 在选择产品并将其添加到购物篮时,客户需要提供选择的数量。产品价格由系统根据当前价目表计算得出。
  3. 客户可以从购物车中移除具有给定价格的产品。
  4. 客户可以确认购物车并开始订单履行流程。
  5. 客户也可以取消购物车并拒绝所有选择的产品。
  6. 购物车确认或取消后,该产品将无法再从购物车中添加或移除。

对在此过程中发生的事件和表示购物车当前状态的实体进行建模。用代码编写这些事件。创建代表特定购物车的示例事件。您可以在EventsDefinitionTests测试文件中执行此操作。

练习 02 - 从事件中获取当前实体状态
具有定义的事件结构和表示上一个练习中的购物车的实体,填充一个getShoppingCart将从事件重建当前状态的函数。
如果需要,您可以修改事件或实体结构。
有两种变体:


选择您的首选方法(或两者)来解决此用例。
提醒:在事件溯源中,我们通过按出现顺序应用事件数据来重建当前状态

信息登记表

猜你喜欢