偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

互聯(lián)網(wǎng)高頻面試題,什么是冪等?如何解決冪等性問題

開發(fā) 前端
使用狀態(tài)機來實現(xiàn)冪等,所謂的狀態(tài)機是指一條數(shù)據(jù)的完整運行狀態(tài)的轉換流程,比如 ,因為它的狀態(tài)只會向前變更,所以多次修改同一條數(shù)據(jù)的時候,一旦狀態(tài)發(fā)生變更,那么對這條數(shù)據(jù)修改造成的影響只會發(fā)生一次。

一個在傳統(tǒng)行業(yè)工作了 7 年的粉絲私信我。說他最近去很多互聯(lián)網(wǎng)公司面試,遇到的很多技術和概念都沒聽過。其中就有一道題是:”什么是冪等、如何解決冪等性問題“?他說,這個概念聽都沒聽過,怎么可能回答出來。

接下來,我借這位同學的問題,給大家分享一下我對這個問題的理解。

1.什么是冪等?

其實冪等,是一個數(shù)學上的概念。而在計算機編程領域中,冪等是指一個方法被多次重復執(zhí)行的時候所期望的結果要和第一次執(zhí)行所期望的結果保持一致。簡單理解就是,一個邏輯即使被重復執(zhí)行多次,也不影響最終結果的一致性,這叫冪等。

「Java面試」互聯(lián)網(wǎng)高頻面試題,什么是冪等?如何解決冪等性問題

之所以要考慮到冪等性問題,是因為在網(wǎng)絡通信中,有這兩種行為都有可能會導致接口被重復執(zhí)行。

第一種是,用戶的重復提交或者用戶的惡意攻擊;

第二種是,分布式系統(tǒng)中,為了避免數(shù)據(jù)丟失,采用的超時重試機制。

這兩種情況都有可能導致服務接口被重復調(diào)用。所以在程序設計中,對于數(shù)據(jù)變更類操作的接口,需要保證接口的冪等性。

而冪等性的核心思想,其實就是保證這個接口的執(zhí)行結果只影響一次,后續(xù)即便再次調(diào)用,也不能對數(shù)據(jù)產(chǎn)生影響,所以基于這樣一個需求,我們?nèi)绾谓鉀Q冪等性問題呢?

2.如何解決?

解決冪等性問題的方法有很多,下面我分享一下常用幾種方案。

「Java面試」互聯(lián)網(wǎng)高頻面試題,什么是冪等?如何解決冪等性問題

第1種方案,就是使用數(shù)據(jù)庫的唯一約束來實現(xiàn)冪等,比如對于數(shù)據(jù)插入類的場景,比如創(chuàng)建訂單,因為訂單號肯定是唯一的,所以如果是多次調(diào)用就會觸發(fā)數(shù)據(jù)庫的唯一約束異常,從而避免一個請求創(chuàng)建多個訂單的問題。

第2種方案,就是使用 Redis 提供的 setNX 指令,比如對于 MQ 消費的場景,為了避免 MQ 重。

復消費導致數(shù)據(jù)多次被修改的問題,可以在接受到 MQ 的消息時,把這個消息通過 setNX 寫入到 Redis 中,一旦這個消息被消費過,就不會再次消費。

第3種方案,使用狀態(tài)機來實現(xiàn)冪等,所謂的狀態(tài)機是指一條數(shù)據(jù)的完整運行狀態(tài)的轉換流程,比如 ,因為它的狀態(tài)只會向前變更,所以多次修改同一條數(shù)據(jù)的時候,一旦狀態(tài)發(fā)生變更,那么對這條數(shù)據(jù)修改造成的影響只會發(fā)生一次。

當然,除了以上3種常用的意外,還可以基于 Token 機制或者增加去重表等方法來實現(xiàn),但是不管是什么方法,無非就是兩種思路,要么就是接口只允許調(diào)用一次,比如唯一約束、基于 Redis 的鎖機制。

要么就是對數(shù)據(jù)的影響只會觸發(fā)一次,比如樂觀鎖等。

以上就是我對這個問題的理解。

技術這個行業(yè)的發(fā)展是很快的,如果自己的技術能力和認知跟不上變化。那基本上可以說是被時代淘汰了,所以保持持續(xù)學習是非常重要的。

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2022-05-05 07:49:54

業(yè)務冪MySQL索引

2021-01-18 14:34:59

冪等性接口客戶端

2023-09-01 15:27:31

2023-05-23 10:01:51

冪等性抽象代數(shù)

2021-04-14 17:18:27

冪等性數(shù)據(jù)源MySQL

2011-12-19 16:45:22

2020-10-18 07:25:55

MQ消息冪等架構

2022-10-31 17:29:11

Java多線程

2019-09-08 22:45:48

并發(fā)扣款一致性冪等性

2017-04-03 21:23:44

消息總線冪等性消息

2024-03-13 15:18:00

接口冪等性高并發(fā)

2022-12-12 08:13:27

Redis數(shù)據(jù)傾斜

2015-10-19 09:35:23

iOS面試

2022-09-07 07:05:25

跨域問題安全架構

2021-08-04 17:40:42

代碼Java消息冪等

2025-02-26 08:20:18

2020-07-15 08:14:12

高并發(fā)

2024-11-01 09:28:02

2023-06-08 09:55:03

冪等計算機系統(tǒng)

2021-01-20 07:16:07

冪等性接口token
點贊
收藏

51CTO技術棧公眾號