美文网首页
SpringCloud 幂等性分布式解决方案

SpringCloud 幂等性分布式解决方案

作者: 无事忙忙 | 来源:发表于2017-10-11 14:53 被阅读1684次

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

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

    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

    相关文章

      网友评论

          本文标题:SpringCloud 幂等性分布式解决方案

          本文链接:https://www.haomeiwen.com/subject/vjjwyxtx.html