ACID过时?用 Sagas搞定数据一致性(4)

简介: ACID过时?用 Sagas搞定数据一致性(4)

image.png


image.png


Sagas complicate API design (Sagas 使 API 设计 复杂化


Synchronous API vs Asynchronous Saga
Request initiates the saga. When to send back the response?


Option #1: Send response when saga completes:

+ Response specifies the outcome - Reduced availability

选择一:saga完成的时候发送响应


Option #2: Send response immediately after creating the saga

(recommended)

选择二:创建saga之后马上发送响应(推荐)

+ Improved availability(提高可用性

- Response does not specify the outcome. Client must poll or be notified

(响应没有指定结果。必须轮询或通知Client端)


image.png


image.png


使用Sagas,可能影响用户体验。

UI界面向用户隐藏异步API

如果需要更长的时间, 用户界面显示“处理中”弹出窗口

服务器可以将通知推送到UI



image.png


image.png


image.png

相关文章
|
10月前
|
人工智能 前端开发 Java
AI大模型进阶系列(02)基于Spring AI实现AI chatbot助理|一句话让deepseek实现
本文介绍了通过DeepSeek生成一个基于Spring AI的在线AI聊天助手项目的全过程。项目采用JDK17+Spring AI+Thymeleaf+Spring Web技术栈,实现了一个简单的聊天界面,用户可输入内容并获得DeepSeek返回的结果。文章详细描述了从需求明确、项目结构设计到配置参数启动的步骤,并展示了核心代码片段如pom.xml、application.properties及主要Java类文件。尽管功能简单,但体现了AI在编程领域的高效应用,未来有望进一步优化上下文记忆等功能,提升开发体验与效率。
|
关系型数据库 MySQL 开发工具
MySQL双主复制
MySQL双主复制
431 0
|
存储 关系型数据库 MySQL
深入浅出MySQL事务管理与锁机制
MySQL事务确保数据一致性,ACID特性包括原子性、一致性、隔离性和持久性。InnoDB引擎支持行锁、间隙锁和临键锁,提供四种隔离级别。通过示例展示了如何开启事务、设置隔离级别以及避免死锁。理解这些机制对优化并发性能和避免数据异常至关重要。【6月更文挑战第22天】
982 3
|
存储 数据可视化 NoSQL
Qt Creator的CDB调试器--使用技巧与解决调试很慢的心得,重点是Symbols Path设置
Qt Creator的CDB调试器--使用技巧与解决调试很慢的心得,重点是Symbols Path设置
3825 0
Qt Creator的CDB调试器--使用技巧与解决调试很慢的心得,重点是Symbols Path设置
|
设计模式 算法 编译器
【C++ 泛型编程 高级篇】 C++ 17 解析std::apply 的多种应用场景(三)
【C++ 泛型编程 高级篇】 C++ 17 解析std::apply 的多种应用场景
403 0
|
负载均衡 架构师 前端开发
小满Linux(第四章介绍Nginx)
高并发,大流量:需要面对高并发用户,大流量访问。举个例子,去往迪拜的飞机有200张票,但是有100w人都挤进系统买票,如何让这100w人能够看到票务的实时更新,以及顺利的买到一张票,都是一个网站架构师应该考虑的问题。这也许对于淘宝的“双十一”1000w的一分钟独立访问用户量来说,是个微不足道的数字,但是对于用户的体验以及网站的口碑来说,都是一项不小的挑战
213 0
小满Linux(第四章介绍Nginx)
|
存储 小程序 API
【 uniapp - 黑马优购 | 购物车页面(2)】如何实现收货地址区域功能、常见问题解决方案
【 uniapp - 黑马优购 | 购物车页面(2)】如何实现收货地址区域功能、常见问题解决方案
621 0
|
SQL 关系型数据库 MySQL
【MySQL】 MySQL的增删改查(进阶)--贰(二)
【MySQL】 MySQL的增删改查(进阶)--贰(二)
|
SQL XML Java
MyBatis入门介绍(一)
MyBatis是一个优秀的持久层框架,它对jdbc的操作数据库的过程进行封装,使开发者只需要关注 SQL 本身,而不需要花费精力去处理例如注册驱动、创建connection、创建statement、手动设置参数、结果集检索等jdbc繁杂的过程代码。
241 0
MyBatis入门介绍(一)