| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> 幂等性消息详细设计 -> 正文阅读 |
|
[Java知识库]幂等性消息详细设计 |
目录 1、术语定义重复提交:?用户通过界面向应用服务器重复提交同一个请求。例如:用户在提交订单页面,将相同的商品明细提交给应用服务器多次,在后台就会产生完全相同的多个订单,除了订单号不一样,其他的数据全部一样,这样就产生的重复提交的问题。 重复调用:?重复调用常见于微服务之前的RPC调用,在调用一个RPC接口的时候,客户端会有意、无意的进行重复调用。例如: 幂等性:?幂等(Idempotence)是一个数学和计算科学概念,简单的来说就是一个操作多次执行产生的结果与一次执行产生的结果一致。要求实现幂等的场景: 1、订单的支付接口提供者。如果支付接口不实现幂等,则可能会出现同一笔订单多次支付,导致账上混乱。 2、回调接口实现者。因为回调接口可能会被底层组件回调多次,也有可能通过界面,人工触发,从而导致多次被回调,如果是一些重要的业务,当被回调多次时,会产生脏数据。 消息重试:可以针对一次请求,将请求输入参数,返回结果,处理状态等上下文信息持久化。当需要对请求进行重放时,需要加载当时的输入参数,请求请求后台服务,此时,称之为消息重试,系统需要将消息重试信息同样的进行持久化。 2、功能性需求及任务2.1 需求概述?有一些场景是要实现接口的幂等性的,需要提供一个通用的幂等性问题解决方案,像Spring事务一样,即要提供注解声明式的API、也要提供侵入式代码式的API;其次,需要在 管理界面查询幂等性消息日志,并可以对失败的幂等性消息进行手动重试。 ?图1 幂等性消息管理 图2 幂等消息详情 ?图3 幂等消息重试明细 2.2 任务分解1.幂等性切面实现 2.幂等性消息管理功能,包含界面与后台接口 3、非功能性需求3.1 可用性作为flsc-cps应用的一个内部模块,对高可用无特别要求。 3.2 扩展性??????1、幂等消息要考虑对全链路的追踪,与链路追踪中的traceId进行集成; 2、幂等消息要考虑对全链路的追踪,与链路追踪中的spanId进行集成; 3、对处理状态为处理成功的幂等消息也要支持重试,在一些特殊场景下,是 要支持对一条消息可重复处理的情况。 4、需要支持对幂等消息统一elapsedTime功能,开始处理时间,结束处理时间。 3.3?性能1、增加了幂等切面逻辑,要求对接口的响应时间,基本无影响。 2、幂等日志随着时间的推移,日志量将越来越大,要考虑单表数据量大的问题。 4、?体系结构4.1功能模块划分4.1.1幂等性切面实现?????实现对幂等消息的通用切面功能,实现RequireIdempotence注解的切面功能。 4.1.2幂等性消息管理功能?????需要实现幂等消息列表管理功能,实现对幂等消息列表查询、详情、重试明细、重试功能。 4.2与前端的交互?进入福利商城>订单管理>幂等消息管理
?2.幂等消息重试明细 在某一条具体的消息行上,点击“已经重试次数/最大重试次数”列超链接,弹窗显示消息重试明细。 3.幂等消息详情 在某一条具体的消息行上,点击操作列中“详情”按钮,弹窗显示消息详情。 4.幂等消息重试 在某一条具体的消息行上,点击操作列中“重试”按钮,可以对处理失败的消息进行重试。 4、 关键技术点4.1?消息重试要支持不同的微服务不的业务处理逻辑进行重试,要消息管理界面,重试功能,要适合所有的业务场景的消息重试。 4.2?消息大表查询?消息日志表在未来数据量会急剧增加,要考虑单表数据库过百万而导致查询慢的问题。 5、面向对象设计5.1 类图?5.2?幂等消息状态转换图? 6、数据库设计? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 9:45:52- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |