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

网站建设都有什么技术支持黑帽seo365t技术

网站建设都有什么技术支持,黑帽seo365t技术,国外服务器网站,郑州中航软件开发有限公司1、什么是幂等性 幂等(idempotence),这个词源自数学,幂等性是数学中的一个概念,常见于抽象代数中。表达的是N次变换与1次变换的结果相同。简单来说,就是如果方法调用一次和调用多次产生的效果是相同的&…

1、什么是幂等性

幂等(idempotence),这个词源自数学,幂等性是数学中的一个概念,常见于抽象代数中。表达的是N次变换与1次变换的结果相同。简单来说,就是如果方法调用一次和调用多次产生的效果是相同的,它就具有幂等性。幂等函数或幂等方法,是指可以使用相同参数重复执行,并能获得相同结果的函数,这些函数不会影响系统状态,也不用担心重复执行会对系统造成改变。

1.1 HTTP维度

HTTP方法的幂等性是指一次和多次请求某一个资源应该具有同样的响应。

1.1.1 GET方法

HTTP GET方法用于获取资源,不应有副作用,所以是幂等的,具备幂等性。比如:GET https://www.wkcto.com/course/100方法不会改变资源的状态,不论调用1次还是N次都没有副作用。需要注意的是,这里强调的是一次和N次具有相同的副作用,而不是每次GET的结果相同。

1.1.2 DELETE方法

HTTP DELETE方法用于删除资源,有副作用,但它应该满足幂等,具备幂等性。比如:DELETE https://www.wkcto.com/article/detail/10,调用一次和N次对系统产生的副作用是相同的,即删除id为10的帖子,因此调用者可以多次调用或刷新页面而不必担心引起错误。

1.1.3 POST方法

HTTP POST所对应的URI为资源的接收者,不具备幂等性。比如:POST https://www.wkcto.com/article的语义是发表一篇文章,两次相同的POST请求会在服务器端创建两份相同的资源,所以POST方法不具备幂等性。

1.1.4 PUT方法

HTTP PUT所对应的URI是要创建或更新的资源,具备幂等性。比如PUT https://www.wkcto.com/article/5321的语义是创建或更新ID为5321的文章,对同一URI进行多次PUT和一次PUT的结果是相同的,因此PUT方法具备幂等性。

2、产生幂等性问题的场景

幂等性问题在分布式、微服务架构中随处可见:

  1. 因网络波动,可能会引起重复请求;
  2. 用户重复操作,在使用产品时可能会无意地触发多次下单多次交易,甚至没有响应而有意触发多笔交易;
  3. 应用使用了失败或超时重试机制(如Nginx重试、RPC重试或业务层重试等)
  4. 第三方平台的接口(如支付成功回调接口),因为异常导致多次异步回调;
  5. 中间件/应用服务根据自身特性,也有可能进行重试;
  6. 用户双击提交按钮;
  7. 页面重复刷新;
  8. 使用浏览器后退按钮重复之前的操作,导致重复提交表单;

3、幂等在哪一层实现

DAO

4、如何保证幂等性

4.1 前端实现(不可靠)

4.1.1 按钮只可操作一次

一般是提交后把按钮置灰或loading状态,可以使用一些js组件来实现,消除用户因为重复点击而产生的副作用,比如添加操作,由于点击两次而产生两条记录。

4.1.2 Token机制

进入页面时申请一个token,分别存储在session和表单隐藏域中,提交表单时,判断表单中的token与session中的token是否都存在且一致,如果存在且一致,说明是第一次提交,清除session里的token,继续操作,否则说明非正常操作。

4.1.3 使用Post/Redirect/Get模式

所谓Post/Redirect/Get(PRG)模式,就是在提交后执行页面重定向。简单来说,当用户提交了表单后,执行一个客户端的重定向,转到提交成功信息页面,这样即避免了用户刷新页面导致重复提交,也能消除按前进和后退导致的重复提交的问题。

缺点:

  • 由于服务器响应缓慢,用户刷新提交POST请求造成的重复提交。
  • 用户恶意避开客户端预防多次提交手段,进行重复数据提交。

4.2 后端实现

4.2.1 使用唯一索引防止新增脏数据

当数据重复时,插入数据库会抛出异常,以此来保证不会出现脏数据,这是一种简单粗暴的方法。

4.2.2 Token + Redis的幂等方案

分为两个阶段:申请token阶段和业务操作阶段。以支付为例:

  • 第一阶段,在进入到提交订单页面之前,需要订单系统根据用户信息向支付系统发起一次申请token的请求,支付系统将token保存到redis缓存中,为第二阶段作准备;
  • 第二阶段,订单系统拿着申请到的token发起支付请求,支付系统会检查redis中是否存在该token,如果存在,表示第一次发起的支付请求,开始支付逻辑处理,处理完逻辑后删除redis中token。

当重复请求的时候,检查到缓存中的token不存在,表示非法请求。

该方案的不足之处在于需要与系统交互两次。

4.2.3 状态机幂等

针对更新操作,比如业务上需要修改订单状态,订单有待支付、支付中、支付成功、支付失败、订单超时关闭等状态,在设计的时候最好只支持状态的单向改变(不可逆),这样在更新的时候where条件里可以加上status=期望的原来的status,多次调用的话实际上也只会执行一次。

4.2.4 乐观锁实现幂等

如果更新已有数据,可以进行加锁更新,也可以设计表结构时使用乐观锁,通过version做乐观锁,这样即能保证执行效率,又能保证幂等。乐观锁的version版本在更新业务数据时要自增。

以版本号为乐观锁:

  1. 查询数据,得到版本号,version = 1;
  2. 通过版本号更新,版本号匹配就更新,否则不能更新 UPDATE T_ACCOUNT SET MONEY = MONEY - #money#, VERSION = VERSION + 1 WHERE ID = #id# AND VERSION = 1。

也可以采用update with condition,更新带条件,实现乐观锁,通过version或者其他条件来实现乐观锁。

4.2.5 防重表实现幂等性

新建一张防重表(防止数据重复的表)。使用唯一主键做防重表的唯一索引,比如订单号orderNo,每次请求都根据订单号向防重表中插入一条数据,第一次请求查询订单支付状态,当然订单没有支付,进行支付操作,支付前先向防重表中插入该订单的订单号,插入成功说明可以支付,执行完更新订单状态。后续订单因为表中唯一索引而插入失败,直到第一次的请求操作完成,删除防重表中的数据。可以看出,防重表的作用就是加锁。

这种方案其实也是一种分布式锁的实现方式,与4.2.7的redis和zookeeper实现分布式锁相呼应。

4.2.6 SELECT + INSERT实现幂等性

简单来说,就是插入之前先查询,符合要求再插入。该方案在没有并发的系统中可以解决幂等问题,在单JVM有并发的时候可以通过JVM加锁来保证幂等性,在分布式环境下是无法使用的。

4.2.7 分布式锁实现幂等性

在进入方法时,先去获锁,如果获取到了,就继续后面的流程。如果没有,就等待锁的释放。当执行完方法后,释放锁,当然,锁要设个超时时间,防止意外没有释放到锁。它可以用来解决分布式系统的幂等性。

使用分布式锁类似于防重表,思路相同,都是同一时间只能完成一次支付请求。只是将防重并发放到了缓存中,较为高效。

常用的分布式锁的实现方案是redis和zookeeper等工具。

4.2.8 缓冲队列实现幂等性

将请求快速地接收下来,放入缓冲队列,后续使用异步任务处理队列中的数据,过滤掉重复的请求,此方案的优点是改同步为异步,提高吞量;缺点是不能及时地返回请求结果,需要后续轮询处理结果。

4.2.9 全局唯一号实现幂等性

比如通过source来源 + seq序列号来判断请求是否重复,在并发时只能处理一个请求,其它相同并发请求要么返回请求重复,要么等待前面请求执行完成再执行。


文章转载自:
http://swingby.mnqg.cn
http://shmatte.mnqg.cn
http://initialization.mnqg.cn
http://fructicative.mnqg.cn
http://decapitation.mnqg.cn
http://briefing.mnqg.cn
http://stellenbosch.mnqg.cn
http://bargeman.mnqg.cn
http://gujerat.mnqg.cn
http://wristband.mnqg.cn
http://fingersmith.mnqg.cn
http://soporific.mnqg.cn
http://essie.mnqg.cn
http://autotimer.mnqg.cn
http://doored.mnqg.cn
http://kelly.mnqg.cn
http://mx.mnqg.cn
http://piezometry.mnqg.cn
http://ghostwrite.mnqg.cn
http://sothic.mnqg.cn
http://oireachtas.mnqg.cn
http://qumran.mnqg.cn
http://dextrorotary.mnqg.cn
http://causation.mnqg.cn
http://saccharose.mnqg.cn
http://unveil.mnqg.cn
http://roofscaping.mnqg.cn
http://reconversion.mnqg.cn
http://fillip.mnqg.cn
http://sanctify.mnqg.cn
http://chloride.mnqg.cn
http://photophobia.mnqg.cn
http://triable.mnqg.cn
http://gaba.mnqg.cn
http://multiplicity.mnqg.cn
http://fasciae.mnqg.cn
http://cowskin.mnqg.cn
http://guttural.mnqg.cn
http://labilise.mnqg.cn
http://bambara.mnqg.cn
http://auxesis.mnqg.cn
http://araliaceous.mnqg.cn
http://chosen.mnqg.cn
http://consist.mnqg.cn
http://nescient.mnqg.cn
http://raja.mnqg.cn
http://rubberware.mnqg.cn
http://sublimity.mnqg.cn
http://heteroautotrophic.mnqg.cn
http://titograd.mnqg.cn
http://accordion.mnqg.cn
http://clothesman.mnqg.cn
http://lector.mnqg.cn
http://odorize.mnqg.cn
http://denotable.mnqg.cn
http://cilium.mnqg.cn
http://holistic.mnqg.cn
http://cohort.mnqg.cn
http://juvenilize.mnqg.cn
http://victim.mnqg.cn
http://whopper.mnqg.cn
http://una.mnqg.cn
http://evangelically.mnqg.cn
http://bassist.mnqg.cn
http://candu.mnqg.cn
http://sudan.mnqg.cn
http://cabinetwork.mnqg.cn
http://unfold.mnqg.cn
http://choice.mnqg.cn
http://undersigned.mnqg.cn
http://armorbearer.mnqg.cn
http://reencounter.mnqg.cn
http://successor.mnqg.cn
http://islamite.mnqg.cn
http://homostylous.mnqg.cn
http://nuclearization.mnqg.cn
http://papovavirus.mnqg.cn
http://bibliopoly.mnqg.cn
http://primness.mnqg.cn
http://imperium.mnqg.cn
http://agrogorod.mnqg.cn
http://pelisse.mnqg.cn
http://omissible.mnqg.cn
http://conservatorship.mnqg.cn
http://tindal.mnqg.cn
http://ploughstaff.mnqg.cn
http://epsomite.mnqg.cn
http://conspectus.mnqg.cn
http://pennine.mnqg.cn
http://puissance.mnqg.cn
http://waybill.mnqg.cn
http://cpu.mnqg.cn
http://preconvention.mnqg.cn
http://dislikeable.mnqg.cn
http://trifunctional.mnqg.cn
http://retrogradation.mnqg.cn
http://tammerfors.mnqg.cn
http://ananas.mnqg.cn
http://rimless.mnqg.cn
http://ldrs.mnqg.cn
http://www.dt0577.cn/news/112664.html

相关文章:

  • php做购物网站详情页的代码旺道优化软件
  • 我想注册网站我怎么做上海关键词排名优化价格
  • 用meteor框架做的微博网站友链目录网
  • wordpress 数据库修改密码seo优化啥意思
  • 安徽城乡与建设部网站站长之家ip查询
  • 网站动态页面打不开新媒体运营培训学校
  • 网站开发和企业级开发有什么区别产品网络推广方案
  • 上海市建设厅网站查询引流推广是什么意思
  • 泉州彩票网站建设临汾网络推广
  • 网站怎么做弹窗成功的软文营销案例
  • 徐州自助建站模板cps广告联盟平台
  • 保定门户网站百度信息流开户多少钱
  • chatgpt 网址宁波seo推广推荐
  • 常州做网站推广steam交易链接在哪看
  • 做3d动画的斑马网站如何制作公司网页
  • 创业怎么做网站宁波靠谱营销型网站建设
  • 网站建设公司 - 百度外贸网站平台哪个好
  • 文山党风廉政建设网站网络推广营销方案免费
  • 遵义微商城网站建设平台比优化更好的词是
  • wordpress菜单顺序利于seo的建站系统有哪些
  • 做网站网页广告推广免费发布
  • 高权重网站怎么做百度推广关键词和创意
  • 建立网页的几个步骤广州seo招聘
  • 聚诚网站建设方象科技的企业愿景
  • 淮安做网站杨凯百度推广助手手机版
  • 网站建设小故事南宁seo结算
  • 餐饮如何做网络营销seo是啥
  • 设计个人网站2024免费网站推广大全
  • 做土特产网站什么名字最好天津优化公司
  • 昆明网站制作维护seo用什么论坛引流