推荐使用:事件驱动的Todo List微服务示例应用

推荐使用:事件驱动的Todo List微服务示例应用

本文将向您介绍一个基于Spring Boot、JPA、Apache Kafka和ElasticSearch的Todo List应用,它利用了Eventuate Tram框架的强大功能,实现了数据库事务与消息发布的原子性,确保现代微服务应用程序的可靠性和一致性。

项目简介

这个开源项目是一个名为"Todo List"的示例应用,它的目标是展示如何使用Eventuate Tram框架开发微服务。在传统的更新数据和发布消息的方式(如2PC/JTA)不再适应现代应用需求的情况下,Eventuate Tram提供了一种新的机制。通过在ACID事务中插入事件到数据库表,随后由CDC(变更数据捕获)进程异步推送到消息中间件,如Apache Kafka。

技术解析

该应用的核心在于Eventuate Tram框架,它支持:

  1. 数据库事务中的事件发布:当更新(例如创建或修改域模型聚合根)时,框架会把事件插入到EVENTSMESSAGES表。
  2. 事件驱动的CQRS视图:应用订阅并处理这些事件,以更新存储在ElasticSearch中的CQRS视图。

该应用采用的技术栈包括:

  • Java
  • JPA
  • Eventuate Tram框架
  • Spring Boot
  • MySQL
  • ElasticSearch
  • Apache Kafka

应用场景

Todo List应用的架构可以用于以下情况:

  • 业务流程同步:在多服务协作场景下,每个服务都可以通过发布事件来通知其他服务数据的改变。
  • 实时查询:通过CQRS视图,可以提供实时的数据查询接口,无需访问原始数据库。
  • 数据一致性保证:即使在分布式环境中,也能保证数据的一致性和最终一致性。

项目特点

  1. 事务性事件发布:事件的插入与数据库操作一起在同一个事务内完成,确保数据更新与消息发布的原子性。
  2. 灵活的扩展性:应用分为单独的服务模块,易于扩展和维护。
  3. 无侵入性设计:Eventuate Tram框架提供了无侵入的API,使得集成到现有Spring Boot应用中变得简单。
  4. CQRS与ES结合:利用ElasticSearch构建高效读取性能的查询视图,优化了查询效率。

要深入了解并体验这款应用,请尝试构建并运行项目,通过Swagger UI交互,亲身体验其强大功能。

./gradlew assemble
export DOCKER_HOST_IP=...
docker-compose -f docker-compose-eventuate-mysql.yml build
docker-compose -f docker-compose-eventuate-mysql.yml up -d

如果您有任何问题,欢迎加入邮件列表,或在Slack频道交流,也可以直接联系我们

现在,让我们一起探索事件驱动微服务的世界,开启您的技术之旅吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廉欣盼Industrious

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值