真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

什么是分布式冪等性

本篇文章為大家展示了什么是分布式冪等性,內(nèi)容簡(jiǎn)明扼要并且容易理解,絕對(duì)能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

創(chuàng)新互聯(lián)專注于界首網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供界首營(yíng)銷型網(wǎng)站建設(shè),界首網(wǎng)站制作、界首網(wǎng)頁設(shè)計(jì)、界首網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造界首網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供界首網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

冪等性問題

冪等性問題指的是一個(gè)接口多次執(zhí)行的結(jié)果應(yīng)當(dāng)與一次執(zhí)行的結(jié)果相同(即重復(fù)操作不會(huì)對(duì)數(shù)據(jù)準(zhǔn)確性造成影響)。 在數(shù)據(jù)不變的情況下,查詢和刪除操作天然具備冪等性,而新增和修改操作默認(rèn)情況下不能保證冪等。

大白話就是:我點(diǎn)了多少次按鈕,就給我生成一次。

提交一次和提交100次結(jié)果是一樣的

什么是分布式冪等性

1. token機(jī)制

  1. 服務(wù)端提供了發(fā)送token的接口。我們?cè)诜治鰳I(yè)務(wù)的時(shí)候,哪些業(yè)務(wù)是存在冪等性問題的。就必須在執(zhí)行業(yè)務(wù)之前,先去獲取token,服務(wù)器會(huì)把token保存到redis

  2. 然后調(diào)用業(yè)務(wù)接口請(qǐng)求時(shí),將token攜帶過去,一般放在請(qǐng)求頭中

  3. 服務(wù)器判斷token是否存在redis中,存在表示第一次請(qǐng)求,然后刪除token,繼續(xù)執(zhí)行業(yè)務(wù)。

危險(xiǎn)性

什么是分布式冪等性

2. 利用redis set防重

很多數(shù)據(jù)需要處理,只能被處理一次。比如我們可以計(jì)算數(shù)據(jù)的MD5將其加入redis的set,每次處理數(shù)據(jù),先看這個(gè)MD5是否已經(jīng)存在,存在就不處理。

3. 防重表

使用訂單編號(hào)orderNo作為防重表的唯一索引,把唯一索引插入去重表,再進(jìn)行業(yè)務(wù)操作,且他們?cè)谕粋€(gè)事務(wù)下。這個(gè)保證了重復(fù)請(qǐng)求時(shí),因?yàn)槿ブ乇砦ㄒ患s束導(dǎo)致請(qǐng)求失敗,避免了冪等性問題。 注意:去重表和業(yè)務(wù)表應(yīng)該在同一個(gè)庫(kù)中,這樣就能保證了因?yàn)橥粋€(gè)事務(wù),即使業(yè)務(wù)操作失敗了,也會(huì)把去重表的數(shù)據(jù)回滾。這個(gè)很好的保證了數(shù)據(jù)一致性

4. 數(shù)據(jù)庫(kù)樂觀鎖

這種方式適合在更新場(chǎng)景中。

例如:update t_goods set count = count - 1 , version = version + 1 where g_id = 2 and version

根據(jù)version版本號(hào),也就是在操作數(shù)據(jù)庫(kù)之前先 獲取到當(dāng)前商品的version版本號(hào), 然后操作的時(shí)候帶上此version號(hào)。我們梳理下,第一次操作庫(kù)存時(shí),得到version為1,調(diào)用庫(kù)存服務(wù)version變?yōu)?;但返回給訂單服務(wù)出現(xiàn)了問題,訂單服務(wù)有一次發(fā)起調(diào)用庫(kù)存服務(wù),當(dāng)訂單服務(wù)傳入的version還是1,再執(zhí)行上面SQL就不會(huì)執(zhí)行。因?yàn)関ersion已經(jīng)變?yōu)?了,where條件不成立。這樣不管調(diào)用幾次,只會(huì)真正處理一次。

樂觀鎖主要用于讀多寫少的問題

5. 業(yè)務(wù)層分布式鎖

調(diào)用接口時(shí),生成唯一id,redis將數(shù)據(jù)保存到集合中(去重),存在即處理過??梢允褂胣gxin設(shè)置每一個(gè)請(qǐng)求的唯一id。

proxy_set_header X-Request-Id $request_id;

6. 生成唯一令牌方案

數(shù)據(jù)提交前向服務(wù)獲取token,設(shè)置有效期;提交后服務(wù)校驗(yàn)token,校驗(yàn)通過刪除舊值生成新值,等待下次獲取。

如銀聯(lián)提供的付款接口:需要接入商戶提交付款請(qǐng)求時(shí)附帶:source來源,seq序列號(hào)。 source+seq在數(shù)據(jù)庫(kù)里面做唯一索引,防止多次付款,(并發(fā)時(shí),只能處理一個(gè)請(qǐng)求)

上述內(nèi)容就是什么是分布式冪等性,你們學(xué)到知識(shí)或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識(shí)儲(chǔ)備,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


當(dāng)前名稱:什么是分布式冪等性
文章地址:http://weahome.cn/article/goojce.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部