当前位置: 首页 > news >正文

分布式高并发系统如何保证对外接口的幂等性?

详细请参考知乎上面的回答:http://www.zhihu.com/question/27744795

我觉得回答的比较好的,原文如下:

重复消息是SOA服务实现中非常常见的问题,你永远不要指望调用方每次请求消息不一样,对于读操作,重复消息可能无害,可对于写操作很可能就是灾难。
可以通过幂等(Idempotent)模式处理重复的消息,基本处理思路是:
1、调用者给消息一个唯一请求ID标识。ID标识一个工作单元,这个工作单元只应执行一次,工作单元ID可以是Schema的一部分,也可以是一个定制的SOAP Header,服务的Contract 可以说明这个唯一请求ID标识是必须的;
2、接收者在执行一个工作单元必须先检验该工作单元是否已经执行过。检查是否执行的逻辑通常是根据唯一请求ID ,在服务端查询请求是否有记录,是否有对应的响应信息,如果有,直接把响应信息查询后返回;如果没有,那么就当做新请求去处理。


作者:jeff wong
链接:http://www.zhihu.com/question/27744795/answer/51791592
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

相关文章:

  • CentOS6 图形界面(gnome)安装
  • 钉钉客户端JS-API权限签名算法.NET版
  • Linux 卸载mysql-libs包出现错误
  • .net中的Queue和Stack
  • CSS中div覆盖另一个div
  • ARRAY_SIZE宏
  • 每日记录 2016-4-29 HTML5本地存储
  • Mina.Net实现的UDP多路广播
  • 向fedora添加rpmfusion源
  • Provisioning Services 7.8 入门系列教程之二 基础环境安装
  • iOS开发UI篇—UITableviewcell的性能优化和缓存机制
  • GlobalSign 增强型(EV) SSL 证书
  • 执行搜索 《第三篇》
  • Grovvy Step byStep Examples
  • oracle通过DBlink连接mysql(MariaDB)
  • java多线程
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • Mysql优化
  • Objective-C 中关联引用的概念
  • React-Native - 收藏集 - 掘金
  • sessionStorage和localStorage
  • SwizzleMethod 黑魔法
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 不用申请服务号就可以开发微信支付/支付宝/QQ钱包支付!附:直接可用的代码+demo...
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 如何借助 NoSQL 提高 JPA 应用性能
  • 如何用Ubuntu和Xen来设置Kubernetes?
  • 如何在GitHub上创建个人博客
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 什么软件可以剪辑音乐?
  • 问:在指定的JSON数据中(最外层是数组)根据指定条件拿到匹配到的结果
  • Java数据解析之JSON
  • puppet连载22:define用法
  • 函数计算新功能-----支持C#函数
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • #pragma data_seg 共享数据区(转)
  • (1)(1.13) SiK无线电高级配置(六)
  • (4) PIVOT 和 UPIVOT 的使用
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (附表设计)不是我吹!超级全面的权限系统设计方案面世了
  • (附源码)spring boot公选课在线选课系统 毕业设计 142011
  • (一)python发送HTTP 请求的两种方式(get和post )
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .net core 控制台应用程序读取配置文件app.config
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .Net 知识杂记
  • .NET 中 GetProcess 相关方法的性能
  • .NET 自定义中间件 判断是否存在 AllowAnonymousAttribute 特性 来判断是否需要身份验证
  • @media screen 针对不同移动设备
  • @RequestParam详解
  • @vue/cli脚手架
  • [Asp.net MVC]Bundle合并,压缩js、css文件
  • [bzoj2957]楼房重建
  • [CLR via C#]11. 事件