日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當(dāng)前位置:首頁 > 科技  > 軟件

如何保證分布式情況下的冪等性

來源: 責(zé)編: 時(shí)間:2023-10-26 17:12:13 289觀看
導(dǎo)讀關(guān)于這個(gè)分布式服務(wù)的冪等性,這是在使用分布式服務(wù)的時(shí)候會(huì)經(jīng)常遇到的問題,比如,重復(fù)提交的問題。而冪等性,就是為了解決問題存在的一個(gè)概念了。什么是冪等冪等(idempotent、idempotence)是?個(gè)數(shù)學(xué)與計(jì)算機(jī)學(xué)概念,常?于抽

關(guān)于這個(gè)分布式服務(wù)的冪等性,這是在使用分布式服務(wù)的時(shí)候會(huì)經(jīng)常遇到的問題,比如,重復(fù)提交的問題。而冪等性,就是為了解決問題存在的一個(gè)概念了。ONG28資訊網(wǎng)——每日最新資訊28at.com

什么是冪等

冪等(idempotent、idempotence)是?個(gè)數(shù)學(xué)與計(jì)算機(jī)學(xué)概念,常?于抽象代數(shù)中。ONG28資訊網(wǎng)——每日最新資訊28at.com

在編程中?個(gè)冪等操作的特點(diǎn)是其任意多次執(zhí)?所產(chǎn)?的影響均與?次執(zhí)?的影響相同。冪等函數(shù),或 冪等?法,是指可以使?相同參數(shù)重復(fù)執(zhí)?,并能獲得相同結(jié)果的函數(shù)。這些函數(shù)不會(huì)影響系統(tǒng)狀態(tài), 也不?擔(dān)?重復(fù)執(zhí)?會(huì)對(duì)系統(tǒng)造成改變。例如,“setTrue()”函數(shù)就是?個(gè)冪等函數(shù),?論多次執(zhí)?,其結(jié) 果都是?樣的,更復(fù)雜的操作冪等保證是利?唯?交易號(hào)(流?號(hào))實(shí)現(xiàn).ONG28資訊網(wǎng)——每日最新資訊28at.com

接?冪等性就是?戶對(duì)于同?操作發(fā)起的?次請(qǐng)求或者多次請(qǐng)求的結(jié)果是?致的,不會(huì)因?yàn)槎啻吸c(diǎn)擊? 產(chǎn)?了副作?。ONG28資訊網(wǎng)——每日最新資訊28at.com

什么是接口的冪等性

在HTTP/1.1中,對(duì)冪等性進(jìn)行了定義。它描述了一次和多次請(qǐng)求某一個(gè)資源對(duì)于資源本身應(yīng)該具有同樣的結(jié)果(網(wǎng)絡(luò)超時(shí)等問題除外),即第一次請(qǐng)求的時(shí)候?qū)Y源產(chǎn)生了副作用,但是以后的多次請(qǐng)求都不會(huì)再對(duì)資源產(chǎn)生副作用。這里的副作用是不會(huì)對(duì)結(jié)果產(chǎn)生破壞或者產(chǎn)生不可預(yù)料的結(jié)果。也就是說,其任意多次執(zhí)行對(duì)資源本身所產(chǎn)生的影響均與一次執(zhí)行的影響相同。ONG28資訊網(wǎng)——每日最新資訊28at.com

不能保證冪等性的操作

  • 前端重復(fù)提交表單:在填寫一些表格時(shí)候,用戶填寫完成提交,很多時(shí)候會(huì)因網(wǎng)絡(luò)波動(dòng)沒有及時(shí)對(duì)用戶做出提交成功響應(yīng),致使用戶認(rèn)為沒有成功提交,然后一直點(diǎn)提交按鈕,這時(shí)就會(huì)發(fā)生重復(fù)提交表單請(qǐng)求。
  • 用戶惡意進(jìn)行刷單:例如在實(shí)現(xiàn)用戶投票這種功能時(shí),如果用戶針對(duì)一個(gè)用戶進(jìn)行重復(fù)提交投票,這樣會(huì)導(dǎo)致接口接收到用戶重復(fù)提交的投票信息,這樣會(huì)使投票結(jié)果與事實(shí)嚴(yán)重不符。
  • 接口超時(shí)重復(fù)提交:很多時(shí)候 HTTP 客戶端工具都默認(rèn)開啟超時(shí)重試的機(jī)制,尤其是第三方調(diào)用接口時(shí)候,為了防止網(wǎng)絡(luò)波動(dòng)超時(shí)等造成的請(qǐng)求失敗,都會(huì)添加重試機(jī)制,導(dǎo)致一個(gè)請(qǐng)求提交多次。
  • 消息進(jìn)行重復(fù)消費(fèi):當(dāng)使用 MQ 消息中間件時(shí)候,如果發(fā)生消息中間件出現(xiàn)錯(cuò)誤未及時(shí)提交消費(fèi)信息,導(dǎo)致發(fā)生重復(fù)消費(fèi)。

如果放到數(shù)據(jù)庫的操作層面,那么就有很多操作需要去保證冪等性了。ONG28資訊網(wǎng)——每日最新資訊28at.com

  • A: 查詢操作

查詢對(duì)于結(jié)果是不會(huì)有改變的,查詢?次和查詢多次,在數(shù)據(jù)不變的情況下,查詢結(jié)果是?樣的。 select是天然的冪等操作ONG28資訊網(wǎng)——每日最新資訊28at.com

  • B: 刪除操作

刪除?次和多次刪除都是把數(shù)據(jù)刪除。(注意可能返回結(jié)果不?樣,刪除的數(shù)據(jù)不存在,返回0,刪除 的數(shù)據(jù)多條,返回結(jié)果多個(gè),在不考慮返回結(jié)果的情況下,刪除操作也是具有冪等性的)ONG28資訊網(wǎng)——每日最新資訊28at.com

  • C: 更新操作

修改在?多場(chǎng)景下結(jié)果?樣,但是如果是增量修改是需要保證冪等性的,如下例?:ONG28資訊網(wǎng)——每日最新資訊28at.com

把表中id為XXX的記錄的A字段值設(shè)置為1,這種操作不管執(zhí)?多少次都是冪等的ONG28資訊網(wǎng)——每日最新資訊28at.com

把表中id為XXX的記錄的A字段值增加1,這種操作就不是冪等的ONG28資訊網(wǎng)——每日最新資訊28at.com

  • D: 新增操作

增加在重復(fù)提交的場(chǎng)景下會(huì)出現(xiàn)冪等性問題,如以上的?付問題ONG28資訊網(wǎng)——每日最新資訊28at.com

如何實(shí)現(xiàn)冪等性

其實(shí)實(shí)現(xiàn)冪等性的方案有不少,但是呢,這就得需要你根據(jù)不同的業(yè)務(wù)場(chǎng)景去選擇合適的方式了。ONG28資訊網(wǎng)——每日最新資訊28at.com

實(shí)現(xiàn)方式一

數(shù)據(jù)庫唯一主鍵ONG28資訊網(wǎng)——每日最新資訊28at.com

數(shù)據(jù)庫唯一主鍵的實(shí)現(xiàn)主要是利用數(shù)據(jù)庫中主鍵唯一約束的特性,一般來說唯一主鍵比較適用于“插入”時(shí)的冪等性,其能保證一張表中只能存在一條帶該唯一主鍵的記錄。ONG28資訊網(wǎng)——每日最新資訊28at.com

使用數(shù)據(jù)庫唯一主鍵完成冪等性時(shí)需要注意的是,該主鍵一般來說并不是使用數(shù)據(jù)庫中自增主鍵,而是使用分布式 ID 充當(dāng)主鍵(可以參考 Java 中分布式 ID 的設(shè)計(jì)方案 這篇文章),這樣才能能保證在分布式環(huán)境下 ID 的全局唯一性。ONG28資訊網(wǎng)——每日最新資訊28at.com

而實(shí)際上生成這個(gè)主鍵的方式就是在當(dāng)請(qǐng)求的時(shí)候后,生成分布式唯一ID,然后當(dāng)做主鍵插入數(shù)據(jù)庫,來保證唯一即可。ONG28資訊網(wǎng)——每日最新資訊28at.com

實(shí)現(xiàn)方式二

Token機(jī)制ONG28資訊網(wǎng)——每日最新資訊28at.com

Token機(jī)制,實(shí)際上也可以稱為 Token 令牌ONG28資訊網(wǎng)——每日最新資訊28at.com

  1. 服務(wù)端提供了發(fā)送token的接?。我們?cè)诜治鰳I(yè)務(wù)的時(shí)候,哪些業(yè)務(wù)是存在冪等問題的,就必須在 執(zhí)?業(yè)務(wù)前,先去獲取token,服務(wù)器會(huì)把token保存到redis中。(微服務(wù)肯定是分布式了,如果 單機(jī)就適?jvm緩存)。
  2. 然后調(diào)?業(yè)務(wù)接?請(qǐng)求時(shí),把token攜帶過去,?般放在請(qǐng)求頭部。
  3. 服務(wù)器判斷token是否存在redis中,存在表示第?次請(qǐng)求,這時(shí)把redis中的token刪除,繼續(xù)執(zhí)?業(yè)務(wù)。
  4. 如果判斷token不存在redis中,就表示是重復(fù)操作,直接返回重復(fù)標(biāo)記給client,這樣就保證了業(yè)務(wù)代碼,不被重復(fù)執(zhí)?。

實(shí)現(xiàn)方式三

數(shù)據(jù)庫樂觀鎖ONG28資訊網(wǎng)——每日最新資訊28at.com

數(shù)據(jù)庫樂觀鎖方案一般只能適用于執(zhí)行“更新操作”的過程,我們可以提前在對(duì)應(yīng)的數(shù)據(jù)表中多添加一個(gè)字段,充當(dāng)當(dāng)前數(shù)據(jù)的版本標(biāo)識(shí)。這樣每次對(duì)該數(shù)據(jù)庫該表的這條數(shù)據(jù)執(zhí)行更新時(shí),都會(huì)將該版本標(biāo)識(shí)作為一個(gè)條件,值為上次待更新數(shù)據(jù)中的版本標(biāo)識(shí)的值。ONG28資訊網(wǎng)——每日最新資訊28at.com

為了每次執(zhí)行更新時(shí)防止重復(fù)更新,確定更新的一定是要更新的內(nèi)容,我們通常都會(huì)添加一個(gè) version 字段記錄當(dāng)前的記錄版本,這樣在更新時(shí)候?qū)⒃撝祹希敲粗灰獔?zhí)行更新操作就能確定一定更新的是某個(gè)對(duì)應(yīng)版本下的信息。ONG28資訊網(wǎng)——每日最新資訊28at.com

這樣的話,有了 version 的存在,這樣就能保住更新的冪等,多次更新對(duì)結(jié)果不會(huì)產(chǎn)生影響。ONG28資訊網(wǎng)——每日最新資訊28at.com

你還了解有哪些實(shí)現(xiàn)冪等性操作的方式呢?ONG28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-15227-0.html如何保證分布式情況下的冪等性

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com

上一篇: 分布式實(shí)時(shí)處理系統(tǒng)的架構(gòu)設(shè)計(jì),工作原理和實(shí)現(xiàn)方式

下一篇: 用過 Mongodb 吧, 這三個(gè)大坑踩過嗎?

標(biāo)簽:
  • 熱門焦點(diǎn)
  • 小米官宣:2023年上半年出貨量中國第一!

    今日早間,小米電視官方微博帶來消息,稱2023年小米電視上半年出貨量達(dá)到了中國第一,同時(shí)還表示小米電視的巨屏風(fēng)暴即將開始。“公布一個(gè)好消息2023年#小米電視上半年出貨量中國
  • 小米平板5 Pro 12.4簡(jiǎn)評(píng):多專多能 兼顧影音娛樂的大屏利器

    疫情帶來了網(wǎng)課,網(wǎng)課盤活了安卓平板,安卓平板市場(chǎng)雖然中途停滯了幾年,但好的一點(diǎn)就是停滯的這幾年行業(yè)又有了新的發(fā)展方向,例如超窄邊框、高刷新率、多攝鏡頭組合等,這就讓安卓
  • 梁柱接棒兩年,騰訊音樂闖出新路子

    文丨田靜 出品丨牛刀財(cái)經(jīng)(niudaocaijing)7月5日,企鵝FM發(fā)布官方公告稱由于業(yè)務(wù)調(diào)整,將于9月6日正式停止運(yùn)營,這意味著騰訊音樂長音頻業(yè)務(wù)走向消亡。騰訊在長音頻領(lǐng)域還在摸索。為
  • 消費(fèi)結(jié)構(gòu)調(diào)整丨巨頭低價(jià)博弈,拼多多還卷得動(dòng)嗎?

    來源:征探財(cái)經(jīng)作者:陳香羽隨著流量紅利的退潮,電商的存量博弈越來越明顯。曾經(jīng)主攻中高端與品質(zhì)的淘寶天貓、京東重拾“低價(jià)”口號(hào)。而過去與他們錯(cuò)位競(jìng)爭(zhēng)的拼多多,靠
  • 大廠卷向扁平化

    來源:新熵作者丨南枝 編輯丨月見大廠職級(jí)不香了。俗話說,兵無常勢(shì),水無常形,互聯(lián)網(wǎng)企業(yè)調(diào)整職級(jí)體系并不稀奇。7月13日,淘寶天貓集團(tuán)啟動(dòng)了近年來最大的人力制度改革,目前已形成一
  • 東方甄選單飛:有些鳥注定是關(guān)不住的

    文/彭寬鴻編輯/羅卿東方甄選創(chuàng)始人俞敏洪帶隊(duì)的“7天甘肅行”直播活動(dòng)已在近日順利收官。成立后一年多時(shí)間里,東方甄選要脫離抖音自立門戶的傳聞不絕于耳,“7
  • 三星獲批量產(chǎn)iPhone 15全系屏幕:蘋果史上最驚艷直屏

    按照慣例,蘋果將繼續(xù)在今年9月舉辦一年一度的秋季新品發(fā)布會(huì),有傳言稱發(fā)布會(huì)將于9月12日舉行,屆時(shí)全新的iPhone 15系列將正式與大家見面,不出意外的話
  • 三星顯示已開始為AR設(shè)備研發(fā)硅基LED微顯示屏

    7月18日消息,據(jù)外媒報(bào)道,隨著蘋果首款頭顯產(chǎn)品Vision Pro在6月份正式推出,AR/VR/MR等頭顯產(chǎn)品也就將成為各大公司下一個(gè)重要的競(jìng)爭(zhēng)領(lǐng)域,對(duì)顯示屏這一關(guān)
  • 英特爾Xe HPG游戲顯卡:擁有512EU,單風(fēng)扇版本

    據(jù)10 月 30 日外媒 TheVerge 消息報(bào)道,英特爾 Xe HPG Arc Alchemist 的正面實(shí)被曝光,不僅擁有 512 EU 版顯卡,還擁有 128EU 的單風(fēng)扇版本。另外,這款顯卡 PCB
Top 主站蜘蛛池模板: 五原县| 文昌市| 靖宇县| 屏东县| 岱山县| 苗栗市| 嘉荫县| 肃南| 香港 | 保亭| 民权县| 泗阳县| 武强县| 深泽县| 蕉岭县| 永和县| 保靖县| 焉耆| 长顺县| 福安市| 大姚县| 宁河县| 宜兴市| 六盘水市| 南丹县| 芷江| 巴楚县| 贵德县| 灵丘县| 泽库县| 新兴县| 黄冈市| 温州市| 拜泉县| 鄂尔多斯市| 井陉县| 怀集县| 土默特左旗| 海原县| 永登县| 建瓯市|