幼儿饰品瑜伽美体用品微软
投稿投诉
微软创意
爱情通信
用品婚姻
爱好看病
美体软件
影音星座
瑜伽周边
星座办公
饰品塑形
搞笑减肥
幼儿两性
智家潮品

接口的幂等性的多重考虑,你会了吗?

  前言
  今天的主题:接口幂等性的解决方案。本来是想把对象的存储过程和内存布局肝出来的,但是临时产生了变化,哈哈,这部分内容我们留在下一期吧,有句话说的好,好事多磨,对吧。
  在实际项目开发中接口是我们在开发中经常接触到的,而且是经常经常要写,每一个项目可能都会伴随着大量的接口开发,在涂鸦的这几个月,基本上就是在与接口作斗争了,新需求除了业务相关就是设计表和接口编写了。
  当然,在接口设计中我们要考虑很多问题,安全性,格式,设计等等,今天我们先来聊聊,在高并发环境下,接口幂等性的解决方案有哪些。正文
  1接口幂等性
  就是说在多次相同的操作下保证最终的结果是一致的。
  其实这个概念还是比较简单的,很容易理解,那我们思考一个问题,如果不保证接口幂等性会有什么问题?1。1案例
  我们简单的举个例子,现在有一个接口,提供了转账的功能,a要给b转账1000元,正常情况下我们接口一次性就调用成功了,但是却因为网络抖动等其它原因没有成功,于是就开始不停的重试,突然网络好了,但是这时却连续发出去了三个请求,但是这个接口没有保证幂等性,于是从结果上来看就是a给b转了3000元,这显然是程序业务逻辑上不能接受的。2解决方案2。1token机制
  token机制其实是比较简单的,我们先来简单的说一下流程。首先客户端先请求服务端,服务端生成token,每次请求生成的都是一个新的token(这个token一定要设置超时时间),将token存入redis当中,然后将token返回给客户端。客户端携带刚刚返回的token请求服务端做业务请求。服务端收到请求,做判断。如果token在redis中,则直接删除该token,然后继续做业务请求。如果token不在redis中,代表已经执行过当前业务了,则不执行业务。
  图示如下:
  token机制实现方式还是比较简单的,但是其实对于我们某些响应速度要求很高的业务不太友好,缺点就是需要多一次请求获取token的过程。
  正常来说是每次请都会生成一个新的token,如果有极限情况下,有两个请求都带着相同的token进来,会存在都走入判断是否存在的过程,可能都会同时查到存在,这样也会有问题,针对这种情况,我们可以在删除前判断下是否存在,存在就删除,为了保证原子性,这部分逻辑建议使用lua脚本完成。2。2去重表
  去重表的机制是根据mysql唯一索引的特性来的,我们先来说下它的流程:首先客户端先请求服务端,服务端先将这次的请求信息存入一张mysql的去重表中,这张表要根据这次请求的其中某个特殊字段建立唯一索引,或者主键索引。判断是否插入成功如果插入成功,则继续做后续业务请求。如果插入失败,则代表已经执行过当前请求。
  图示如下:
  去重表机制的问题有两点:1。mysql容错性,也就是mysql本身如果不是高可用的那么业务可能会受到影响:2。既然是唯一索引,自然在写表的时候就没有办法用到changbuffer,每次都要从磁盘查出来判断再写入,对于一个高并发的接口来说,这些都是需要考虑的因素。2。3redis的SETNX键值
  过程如下:首先客户端先请求服务端,服务端将能代表这次请求业务的唯一字段以SETNX的方式存入redis,并设置超时时间,超时时间可以根据业务权衡。判断是否插入成功如果插入成功,则继续做后续业务请求。如果插入失败,则代表已经执行过当前请求。
  这里我们是利用了redissetnx的特性来完成的。
  setnx:只在键key不存在的情况下,将键key的值设置为value。若键key已经存在,则SETNX命令不做任何动作。命令在设置成功时返回1,设置失败时返回0。
  图示如下:
  这种方案可以说是针对上一个方案改进的,效率也会提高很多。2。4状态机幂
  这种机制适用于有不同状态的业务,我的上一家公司就是这样做的。
  我们的订单系统,一条订单会有多个状态,如:待付款,锁定,已付款等状态,而这些状态都是有流程和逻辑的,我们可以根据这个状态判断是否执行后续业务操作。2。5乐观锁(更新操作)
  就是数据库中增加版本号字段,每次更新根据版本号来判断
  过程如下:首先客户端先请求服务端,先查询出当前的version版本。selectversionfrom。。where。。根据version版本来做sql操作UPDATE。。SET。。。version(version1)WHERE。。ANDversionversion;
  这个图示我就不再画了,还是比较简单的2。6悲观锁(更新操作)
  假设每一次拿数据,都有认为会被修改,所以给数据库的行上锁,也是基于数据库特性来完成。
  当数据库执行selectforupdate时会获取被select中的数据行的行锁,因此其他并发执行的selectforupdate如果试图选中同一行则会发生排斥(需要等待行锁被释放),因此达到锁的效果。STARTTRANSACTION;开启事务SELETEFROMTABLEWHERE。。FORUPDATE;UPDATETABLESET。。。WHERE。。;COMMIT;提交事务结语
  关于接口幂等性这部分内容,解决方案其实大同小异,很多方式的原理都是一样的,更多的其实都是在业务链路中去过滤,也会有很多是有消息中间件去解决的,默认在中间件这一层就直接过滤掉了,当然每种方式都有各自的优点和缺点,需要结合当前的业务去选择,今天的文章内容,你get到了吗?

禾木2800米云霄峰云海之下,是否是张嘉佳笔下的云边镇曾读过张嘉佳的《云边有个小卖部》书里有一个美得几乎虚幻的童话小镇云边镇张嘉佳把对故乡所有的情愫寄托在了这个小镇当中我曾想,这个如梦似幻的地方……继HampampampM后,GAP多门店将关闭,国际快时尚凉谢艺观中国新闻网GAP闭店清仓,速去捡漏、GAP撤柜清货,价格相当‘白菜’近日,不少网友发布了GAP门店闭店清仓的信息。截图自某社交电商平台。进入中国市场12……马赛法最古老的城市欧洲文化之都马赛(Marseille)位于法国东南部,是普罗旺斯阿尔卑斯蓝色海岸大区的省会,同时也是法国第二大城市,仅次于首都巴黎。马赛市区三面环山、一面靠地中海,城市自老港向内陆区……披哥上线一周,3人获节目组加戏有望爆红,2人咖位高1人性格好在《乘风破浪的姐姐3》收官两周后,预热已久《披荆斩棘的哥哥2》强势回归,首播便大获好评,点击量和口碑齐飞。苏有朋、任贤齐、潘玮柏、郑钧、吴克群等32位哥哥更是火速接手姐姐们的热……喝水对孩子到底多重要?这三个时间段需要主动饮水对于我们来说,水是仅次于氧气的重要物质。在成人体内,60的重量是水;儿童体内水的比重更大,可达近80。如果一个人不吃饭,依靠自己体内贮存的营养物质或消耗自体组织,可以活上一个月……美媒体奇葩交易建议,勇士两笔交易送走2核心1内线,放弃争冠?NBA休赛期进入倒计时,各支球队也都为新赛季做着准备,大家关注的焦点从篮网杜兰特欧文转移到湖人以及爵士,主要是要看威少以及米切尔将会被送到哪支球队,毕竟这两笔交易还是会对新赛季……等我老了也学她这样穿,不穿老气颜色多穿基础款,优雅大方嗨,各位小仙女们,大家好呀!或许,在很多人的思想观念里,都觉得这女人一旦上了年纪,老了之后,就应该乖乖选择大妈装来穿,哪怕是在选择颜色上,也应该多入手深色为主。如果……以数字技术赋能经济高质量发展数字经济事关国家发展大局。当前,我国面临世界百年的技术与产业创新之变、大国竞争格局之变、国际经济治理之变,抢抓数字经济新机遇、培育创新发展新动能,是立足新发展阶段、贯彻新发展理……中国男排今晚决赛战日本难度大?CCTV5不打算直播,球迷不太8月14日晚上19点,男排亚洲杯将要进行巅峰对决!决赛将要上演,中国男排大战日本男排,宿敌之战让人紧张。因为昨日晚上的半决赛,中国男排面对韩国,竟然苦战5局且濒临出局,在12的……最喜欢的文案1。hr有人问是不是越成熟就越难爱上一个人其实不是只是越成熟越能看清那不是爱2。hr我一直觉得,伴侣的好决不在于他在普世价值中表现出来的那些。让女生走马……警察荣誉宋局长的权力有多大?难怪他不愿意帮曹建军在《警察荣誉》里面,八里河派出所的曹建军,这个作死小能手,在明知道自己醉驾的情况下,居然,还给交警掏警官证,后来,更是直接开着车就跑路了,原本或许还可以捞一下,至少不至于下场那……一个人将要有钱的迹象海明威在《老人与海》中这么写道:每天都是一个崭新的日子。走运固然不错,不过我宁可保持精确。那样,机会来临时,你已经做好了准备。意思是说,命运固然重要,但有所准备胜过漫长的……
真蛤蟆仙人!通灵王普通攻击自来也使用体术平推目标发动攻击,之后使用白发将对手甩动,最后配合蛤蟆忠来个泰山压顶攻击对手技能效果请以最终上线版本为准一技能:蛤蟆蛙变之术自来也……柳传快我国芯片落后被卡脖子的真实原因(八)目前,我国被卡脖子的行业或者领域难道只有芯片一个方面吗?不是的!。当然,我国的真实情况和实际情况,并不是完全只有芯片一个方面落后!。可是,其他方面其他领域落后被卡脖……整整48小时!詹姆斯伤病再出新消息,3年前的隐患终究来了虽然湖人最近的战绩依旧排在西部第五的位置,不算是非常糟糕,但他们球队核心大将詹姆斯的伤病却让管理层犯了难。尤其是有关詹姆斯伤病最新的消息,看起来将会让湖人非常的麻烦。他们需要在……条件不好生二胎,会不会后悔?这个34岁女人说了心里话01hr前段时间和一个长辈聊天,她跟我说了这样的一句话:年轻时候不觉得,老了以后才知道,人生过得就是后辈人,有人才有希望,有人才有依靠,这叫生生不息,绵延不断。上面……奇妙的朋友引力的六个事实(下)4,引力的量子行为除引力以外的其它三种自然基本力在最小的微观尺度上得到了量子理论的解释,然而,人们特别是在标准模型的概念上还不能建构有效的量子引力理论,科学家正在煞费苦心……2022治愈自己心情不好的句子1、每个人心里,都有个过不去的人。不管你有多爱,都应知道,TA在你的生命里只有两种结局,要么是终点,要么是路人,再无别的选择。2、没有人真的很忙,谁的一天都是24小时,所……杜锋把中国男篮打造成一流的团队,没有一流的人格魅力怎么行?中国男篮两战日本男篮全胜凯旋而归,无论是主教练和球员,还是我们球迷都好久没有这么开心过了。而此次中国男篮取得佳绩,主教练杜锋绝对是功不可没。我们可以这样说,杜锋已经把中国男篮打……卫视春晚,关晓彤穿维密风礼服,唐嫣连换4套baby婚纱裙比高每年春节,除了央视春晚之外,其他地方台也会举办春晚,一般都是以录制的形式播出。没有上央视春晚的明星们基本都会亮相卫视春晚,为观众带来节目,这一期我们就来看看那些上卫视春晚的女明……世乒赛男双失金是延续战略性放松在北京时间今天上午结束的第56界乒乓球单项世界锦标赛上,中国队完美收官,总共获得了5块金牌中的4块。唯一丢掉的冠军是男双项目,瑞典组合法尔克卡尔松以3:1战胜韩国组合张禹珍林钟……赛博朋克2077发售一周年纪念日CDPR当年都画过哪些饼?文haKuRyu一年前的今天,2020年12月10日,《赛博朋克2077》正式发售了。这款万众瞩目的游戏很快就引发了电子游戏史上最大规模的发行灾难:在短短的一周内,……警惕,再警惕防护,再防护!文:飘在异乡的追梦人没有时钟,却能在冬日温暖的阳光里,听到时间前行的脚步与节奏,感受到时间从身旁走过的肃穆与静默。站在冬日暖阳下,望着窗外树梢泛着太阳光芒的几片红叶……北京冬奥会今天,他们在天安门广场宣誓出征1月25日清晨来自北京冬奥会中国体育代表团的100多名运动员和教练员代表来到天安门广场观看升国旗仪式并宣誓出征为了祖国冲冲冲不负人民拼拼拼……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网