关系经济人类预测化学自然
自然科学
知识物理
化学生物
地理解释
预测理解
本质社会
人类现象
行为研究
经济政治
心理结构
关系指导
人文遗产

面试题接口幂等性是什么?如何设计?

6月26日 醉殇别投稿
  接口幂等幂等性接口的幂等性分布式幂等性如何保证幂等幂等性实现方案去重表下单幂等支付幂等扣还库存幂等
  什么是接口幂等?
  在计算机中编程中,一个幂等操作的特点是其任意多次执行所产生的影响均与第一次执行的影响相同。
  接口的幂等性实际上就是接口可重复调用,在调用方多次调用的情况下,接口最终得到的结果是一致的。有些接口可以天然的实现幂等性,比如查询接口,对于查询来说,你查询一次和两次,对于系统来说,没有任何影响,查出的结果也是一样。
  为什么接口需要幂等性设计
  该问题等同于为什么会重复调用?前端重复提交表单
  在填写一些表格时候,用户填写完成提交,很多时候会因网络波动没有及时对用户做出提交成功响应,致使用户认为没有成功提交,然后一直点提交按钮,这时就会发生重复提交表单请求。黑客恶意攻击
  例如在实现用户投票这种功能时,如果黑客针对一个用户进行重复提交投票,这样会导致接口接收到用户重复提交的投票信息,这样会使投票结果与事实严重不符。接口超时重复提交
  大部分RPC框架〔比如Dubbo〕,为了防止网络波动超时等造成的请求失败,都会添加重试机制,导致一个请求提交多次。消息重复消费
  当使用MQ消息中间件时候,如果Consumer消费超时或者producer发送了消息但由于网络原因未收到ACK导致消息重发,都会导致重复消费。
  哪些接口需要幂等?
  幂等性的实现与判断需要消耗一定的资源,因此不应该给每个接口都增加幂等性判断,要根据实际的业务情况和操作类型来进行区分。例如,我们在进行查询操作和删除操作时就无须进行幂等性判断。
  查询操作查一次和查多次的结果都是一致的,因此我们无须进行幂等性判断。删除操作也是一样,删除一次和删除多次都是把相关的数据进行删除(这里的删除指的是条件删除而不是删除所有数据),因此也无须进行幂等性判断。
  所以到底哪些接口需要幂等?关于这个问题需要从具体业务出发,但是也有规律可循如下表:
  如何实现幂等前端拦截
  前端拦截是指通过Web站点的页面进行请求拦截,比如在用户点击完提交按钮后,我们可以把按钮设置为不可用或者隐藏状态,避免用户重复点击。
  该方法可以解决用户误操作提交两次表单所产生的重复提交问题。但前端拦截有一个致命的问题,如果是懂行的程序员或者黑客可以直接绕过页面的JS执行,直接模拟请求后端的接口,这样的话,我们前端的这些拦截就不能生效了。因此除了前端拦截一部分正常的误操作之外,后端的验证必不可少。数据库唯一索引实现
  数据库唯一索引实现方案一般只能适用于执行插入操作的过程。
  具体流程步骤:建立一张去重表,其中某个字段需要建立唯一索引客户端去请求服务端,服务端会将这次请求的一些信息插入这张去重表中因为表中某个字段带有唯一索引,如果插入成功,证明表中没有这次请求的信息,则执行后续的业务逻辑如果插入失败,则代表已经执行过当前请求,直接返回数据库乐观锁实现
  数据库乐观锁方案一般只能适用于执行更新操作的过程,我们可以提前在对应的数据表中多添加一个字段,充当当前数据的版本标识。
  这样每次对该数据库该表的这条数据执行更新时,都会将该版本标识作为一个条件,值为上次待更新数据中的版本标识的值。
  具体流程步骤:客户端带着version字段请求服务端服务端执行update的时候需要给version1,并且需要加version的更新条件如下SQLupdatetsetstockstock1,versionversion1whereid{id}andversion{version}数据库悲观锁实现
  具体流程步骤:客户端通过业务id,访问服务端先查数据库是否存在该业务id,查库的时候需要加X锁如果存在则说明是重复请求,不存在则进行业务逻辑处理JVM锁实现
  JVM锁实现是指通过JVM提供的内置锁如Lock或者是synchronized来实现幂等性。使用JVM锁来实现幂等性的一般流程为:首先通过Lock对代码段进行加锁操作,然后再判断此订单是否已经被处理过,如果未处理则开启事务执行订单处理,处理完成之后提交事务并释放锁,执行流程如下图所示:
  JVM锁存在的最大问题在于,它只能应用于单机环境,因为Lock本身为单机锁,所以它就不适应于分布式多机环境。分布式锁实现
  分布式锁实现解决JVM锁实现单机锁局限问题。
  具体流程步骤:客户端先请求服务端,会拿到一个能代表这次请求业务的唯一字段将该字段以SETNX的方式存入redis中,并根据业务设置相应的超时时间如果设置成功,证明这是第一次请求,则执行后续的业务逻辑如果设置失败,则代表已经执行过当前请求,直接返回Token实现
  具体流程步骤:客户端会先发送一个请求去获取token,服务端会生成一个全局唯一的ID作为token保存在redis中,同时把这个ID返回给客户端客户端第二次调用业务请求的时候必须携带这个token服务端会校验这个token,如果校验成功,则执行业务,并删除redis中的token如果校验失败,说明redis中已经没有对应的token,则表示重复操作,直接返回指定的结果给客户端
  注意:对redis中是否存在token以及删除的代码逻辑建议用Lua脚本实现,保证原子性全局唯一ID可以用百度的uidgenerator、美团的Leaf去生成
  总结幂等性不但可以保证程序正常执行,还可以杜绝一些垃圾数据以及无效请求对系统资源的消耗。推荐使用分布式锁来实现,这样的解决方案更加通用。
  原文链接:https:mp。weixin。qq。comsxU1gvO4fPyLp5uWqWX50SQ
投诉 评论 转载

QQ飞车手游也能整活,迎来铠甲勇士和数码宝贝双重联动最近QQ飞车手游新版本更新,可以说是开了个大招,本次新版本的内容不仅包括了新赛道、新车还有和数码宝贝这个重量级IP的联动,甚至连国民神车五菱宏光都在联动名单里插了一脚。听到这个……面试题接口幂等性是什么?如何设计?接口幂等幂等性接口的幂等性分布式幂等性如何保证幂等幂等性实现方案去重表下单幂等支付幂等扣还库存幂等什么是接口幂等?在计算机中编程中,一个幂等操作的特点是其任意多次执……WTT爆冷!日乒男队全员淘汰,中国台湾名将晋级,奥恰洛夫逆袭最近国乒派出王楚钦,林高远这些球员参加亚洲杯的比赛。随着这一次比赛结束之后,主力们已经回到国内,接下来11月份不会再派出相关的队员参加国外的比赛,后续主要精力放在12月份的乒超……新力控股被清盘12月7日,香港高等法院在聆讯会上向新力控股颁布了清盘令,新力控股也成为又一家被清盘的千亿房企。对于这一事件,有几点需要关注:第一,今年8月,新力控股因一只私募债券……同样是穿空姐服,把袁泉和杨幂等人放在一起看,差别就出来了谈到空姐,不少人脑海中都会出现身着制服的靓丽身影,可以说空姐是温婉知性、端庄优雅的代名词。对于很多有女孩都有着空姐梦,渴望能穿上那身时尚而又清丽脱俗的制服,可以满世界各地……中巴4000亿项目,让俄罗斯人心动,但转向亚洲,不是俄的长久俄罗斯正在努力加入中巴经济走廊,为了加入这个投资规模高达620亿美元的项目(约合人民币4362亿元),俄罗斯除了与中国搞好关系,最近也没少在巴基斯坦和阿富汗的身上下功夫。……3年亏掉400万,旅游公司倒闭,我下决心到阿根廷东山再起2019年初,我从墨西哥回到成都创业,建立了一家跨境电商公司。19年底新冠疫情爆发,公司的跨境旅游和跨境电商业务依次关闭。2021年中旬,仅维持不到3年的公司关闭,亏损近400……企示录竞网创始人黄韬3类企业数字化转型最有价值黄韬曾带领竞网团队去湖南当家装修调研,对方向他展示数字化服务成果。这家公司把装修采购、雇佣装修工、家装设计都连接起来,装修新家和网购一样方便。它还将自身打造成平台,吸纳独立设计……中国移动早年号码或将升值?以138139开头,你有吗?前言但是我们都知道仅仅想要通过互联网了解世界,光拥有手机是不够的,我们还需要一张手机卡,才能够实现我们想要的功能,而如何选择手机号码一直是广大消费者非常关注的一件事情。……美元继续加息收割全球,中韩货币反应同步,猪肉储备9月已就位时隔2年,人民币汇率跌到了6。92块钱换一美元,在今年贬值了7。33,最新的离岸汇率已经破6。93,马上就到7。0的关口了。这主要和美联储上周五的强硬发言有关。前美联储理事透露……智慧屏即将升级HarmonyOS3,一起看看有哪些新玩法超级桌面超级桌面,主要解决电视应用不够丰富的问题,感觉这个放了一个大招,而且真的把鸿蒙系统的分布式能力发挥到了极致,直接可以分布式运行在手机上的应用,华为技术确实牛。……中国男篮15位未注册球员,9人只差公示,7人留下不同悬念文水清清由于参加世界杯预选赛,国家队16位球员中,有15人未注册(只有临时补进的祝铭震已经完成注册),其中9人只差公示而已,可另外7人却留下不同的悬念。一、中国男篮……
黄石蜜月旅游攻略从金融危机看投资银行的缺陷第一批预制菜加盟店,已经开始亏钱了什么皮肤适合什么发色不同肤色显白显黑发色汇总小米激光投影仪1S发布2400ANSI亮度,5699元遇见安魂没了晚上吃玉米会发胖吗想减肥的看过来中国斯诺克6连胜!赵心童会师颜丙涛,肖国栋赢德比,名将轰141992年,军委制定接防香港方案,邓小平批评软了提出两点要求第一次上幼儿园2035去台湾爆红,创作者孟煦东听说台湾小朋友也会唱了,感觉
夏季怎么清洗汽车要想孩子有出息,就往死里管住孩子这3点,将来想不成才都难从倪萍到董卿央视一姐的悲欢,撕破情爱谎言如果让老师去参加高考,你觉得他们会考上清华或北大吗?苦恼的小宝贝垂丝海棠老公和女房客大搞暧昧婆婆竟然默许了肺气肿老人对饮食有什么要求另一种地狱高考二轮复习古代文化常识专练二婚母仪天下美丽的人工湖

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找菏泽德阳山西湖州宝鸡上海茂名内江三亚信阳长春北海西安安徽黄石烟台沧州湛江肇庆鹤壁六安韶关成都钦州