苏眠月|写一个通用的幂等组件,我觉得很有必要( 三 )
我目前做了一个自动生成唯一标识的功能 , 简单来说就是根据请求的信息进行 MD5 , 如果 MD5 值没有变化就认为是同一次请求 。
需要进行 MD5 的内容有请求 URL 参数 , 请求体 , 请求头信息 。 请求头的信息在没有指定用户相关 Key 的场景下会进行全部拼接 , 如果配置了请求头 userId 为用户的标识 , 那么只会用 userId 。
会在请求的入口处进行幂等 Key 的自动生成 , 如果在使用幂等注解的时候没有指定 spelKey, 就会使用自动生成的 Key 。
存储结构Redis: 使用 String 类型存储 , Key 是幂等 Key, Value 默认为 1 。
Mysql: 需要创建一张记录表 。 (过期的数据需要定时清理 , 也可以永久存储)
CREATE TABLE `idempotent_record` (`id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',`key` varchar(50) NULL DEFAULT '',`value` varchar(50) NOT NULL DEFAULT '',`expireTime` timestamp NOT NULL COMMENT '过期时间',`addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='幂等记录';Mongo: 字段跟 Mysql 一样 , 转换成 Json 格式即可 。 Mongo 会自动创建集合 。
码字不易 , 可以的话来个三连击 , 感谢!
关于作者:尹吉欢 , 简单的技术爱好者 , 《Spring Cloud 微服务-全栈技术与案例解析》, 《Spring Cloud 微服务 入门 实战与进阶》作者, 公众号猿天地发起人 。
微信搜索 猿天地 回复 kitty 获取源码
推荐阅读
- 知识百科|都错了! 福州大学2020年分数线出炉, 福大完胜,欠福师大一个211?
- 电视剧|原创陪伴我们童年的莫小贝,居然快三十岁了,这么多年只差一个机会
- 京东|2.9元一个电水壶,“羊毛党”一天狂刷20万单,京东店家面临破产
- 早知道|一个小哥们儿新婚,美啊如胶似漆!,新婚爆笑笑话
- 陈山|“外星人”陈山,24岁身价5亿,被封杀2年后,他想再找一个女友
- 蜘蛛|它用4.5亿年时间证明:只要成为一个废物,就没人能利用自己
- 莫妮卡·贝鲁奇|一个看似普通的实验,却得到不可能的答案,甚至让人怀疑宇宙
- 男子|47岁大妈与十几个男子发展关系,一个变化让男友们慌了
- 封面新闻|PEL2020 S3常规赛结束:DKG豪取最后一个周冠军 TC闷声发大财
- 英国|英国传来一好消息,美国谎言彻底瞒不下去,还了中国一个公道
