如何防止接口重復請求 什么時候需要分布式鎖?
什么時候需要分布式鎖?首先,我們需要知道在非分布式環(huán)境中,什么可以用鎖來解決?多線程環(huán)境,共享資源線程安全問題!此時,共享資源通常在一臺機器的多線程中競爭。從JAVA內(nèi)存模型的角度來看,我們可以通過鎖
什么時候需要分布式鎖?
首先,我們需要知道在非分布式環(huán)境中,什么可以用鎖來解決?
多線程環(huán)境,共享資源線程安全問題!此時,共享資源通常在一臺機器的多線程中競爭。從JAVA內(nèi)存模型的角度來看,我們可以通過鎖定對象、方法和代碼塊來避免共享資源的競爭
!1,生成全局ID;
2,修改全局配置文件;
3,分布式服務中的seckill;
4,分布式環(huán)境中的重復提交;
1,使用數(shù)據(jù)庫的唯一主鍵實現(xiàn)鎖定
!2、使用redis指令:通常使用setnx方法,incr方法實現(xiàn)
3、使用zookeeper:使用API生成臨時節(jié)點實現(xiàn)鎖定
有多少互聯(lián)網(wǎng)系統(tǒng)確實需要使用分布式架構?
更不用說互聯(lián)網(wǎng)的實際發(fā)展了,現(xiàn)在即使是面試新生,分布式的問題基本上都是不可避免的。
目前,分布式體系結構具有高并發(fā)性和高穩(wěn)定性的特點。
高并發(fā)意味著當單節(jié)點服務器的性能達到瓶頸時,可以通過引入nginx和部署多個服務器節(jié)點來擴展,以增加系統(tǒng)的吞吐量。這就是1*n=n的意思。
高穩(wěn)定性意味著,如果單個或部分節(jié)點由于不可預知的原因發(fā)生故障,則不會影響系統(tǒng)的整體功能服務,即M-N>0(M>N)。對于用戶來說,系統(tǒng)可用性始終是最重要的。
綜上所述,根據(jù)我個人的經(jīng)驗,目前無論是市場級產(chǎn)品還是公司級產(chǎn)品,只要項目團隊有對服務質(zhì)量的追求,他們都會以不同的方式向分布式架構發(fā)展。
另外,對于一個功能不是很復雜和龐大的項目組來說,只要在開發(fā)設計階段一開始就及時引入Memcache或redis作為數(shù)據(jù)緩存,而不是使用服務器的內(nèi)存,后期切換到分布式系統(tǒng)的過程就會非???。
以上是我個人的觀點。歡迎在下面的評論區(qū)與我交流。
我是蘇思亮,來自bat的java開發(fā)工程師。我每天分享科技知識。歡迎您關注我,與我共同進步。