什么是冪等
計(jì)算機(jī)和數(shù)據(jù)的專業(yè)術(shù)語,這里展開計(jì)算機(jī)中冪等的概念,編程中冪等操作的特點(diǎn)是一次執(zhí)行與多次執(zhí)行產(chǎn)生的影響相同。百度百科的解釋是:冪等函數(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)。
數(shù)據(jù)庫冪等
多次更新同一記錄,數(shù)據(jù)庫冪等產(chǎn)生一樣的影響,但是數(shù)據(jù)庫壓力成倍增長,給線上DB帶來意想不到的災(zāi)難,對(duì)于更新操作通常采用樂觀鎖的方式,就是版本號(hào)+1
update tbl_user where status='on', version=version+1 where id = 1 and version=1;
去重表
利用數(shù)據(jù)庫表單的特性實(shí)現(xiàn)冪等操作,比如在表上建立唯一性索引,保證記錄一旦執(zhí)行完成,后續(xù)操作無法成功寫入。
token機(jī)制
token使用的比較廣泛,使用范圍廣,有不同的實(shí)現(xiàn)版本。核心思想是每次操作產(chǎn)生一個(gè)唯一性的憑證,就是token。一個(gè)token早操作的每個(gè)階段都用一次執(zhí)行權(quán)力,一旦執(zhí)行完成,保存結(jié)果。多重復(fù)的請(qǐng)求,返回該結(jié)果即可。