SpringCloud 幂等性分布式解决方案

幂等函数,或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数

研究了很久的幂等性解决方案。终于实现了一个模型。抛砖引玉,希望各路大神指正

1、主要是基于Spring MVC的HandlerInterceptorAdapter + ResponseBodyAdvice + redis的分布式锁。 

2、幂等的请求。需要在请求中加入header参数X-REQ-IDEM-ID,并赋值UUID,用于标记同一次请求

3、如果同一请求发生竞争。通过redis的nx来竞争锁。竞争失败的请求返回状态码499

4、如果请求时,当前UUID状态正在处理中,那么返回499

5、客户端收到reponse code 为 499。则需要通过重试策略来获得执行结束后的值

6、对于有内部转发的请求的幂等处理方式。因为在servlet规范中,forawrd在一个jvm里面会是由同一个线程处理。而且Spring MVC的不管内部出现几次forward(有人为forward,也有controller  层向上抛异常的error也会有forward到默认的/error),会在内部跳转的结束后,调用ResponseBodyAdvice。所以只需要关心ResponseBodyAdvice的内部实现即可

The Container Provider should ensure that the dispatch of the request to a target servlet occurs in the same thread of the same JVM as the original request.

7、代码和使用手册参考:https://github.com/amu007/springcloud-idempotent-starter

最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 137,282评论 19赞 139
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,420评论 6赞 342
  • 从三月份找实习到现在,面了一些公司,挂了不少,但最终还是拿到小米、百度、阿里、京东、新浪、CVTE、乐视家的研发岗...
    时芥蓝阅读 43,057评论 11赞 349
  • 海上月是天上月 心上人是眼前人 你说带我去丽江 见识艳俗的艳遇之城 拧着你的耳朵的手 后来钻进你的口袋里走过零下五...
    东言立阅读 395评论 6赞 4
  • “我叫杨盼”今年28岁出生在农村,生长在一个重男轻女的家庭里。 自幼患病,两岁时曾确诊先天性肌肉萎缩,经过多年病情...
    盼盼蜗牛漫步阅读 1,606评论 19赞 12

友情链接更多精彩内容