java服務(wù)一般支持多少個(gè)并發(fā) 在大數(shù)據(jù)高并發(fā)環(huán)境下應(yīng)該怎么保證庫(kù)存或者下單同步?
在大數(shù)據(jù)高并發(fā)環(huán)境下應(yīng)該怎么保證庫(kù)存或者下單同步?庫(kù)存被加載到緩存中,例如redis、基于redis的原子操作、庫(kù)存扣減和庫(kù)存驗(yàn)證。下單成功后,發(fā)送成功的訂單MQ,庫(kù)存系統(tǒng)消耗MQ扣減庫(kù)存。當(dāng)然,消費(fèi)
在大數(shù)據(jù)高并發(fā)環(huán)境下應(yīng)該怎么保證庫(kù)存或者下單同步?
庫(kù)存被加載到緩存中,例如redis、基于redis的原子操作、庫(kù)存扣減和庫(kù)存驗(yàn)證。
下單成功后,發(fā)送成功的訂單MQ,庫(kù)存系統(tǒng)消耗MQ扣減庫(kù)存。當(dāng)然,消費(fèi)者需要確保冪等。
樂(lè)觀鎖用于庫(kù)存系統(tǒng)的數(shù)據(jù)庫(kù)操作。
高并發(fā)下怎么做余額扣減?
)
這種高并發(fā)只是應(yīng)用程序級(jí)別的高并發(fā),這和其他應(yīng)用程序一樣是不可避免的。如果企業(yè)要發(fā)展,必然會(huì)有更多的用戶出現(xiàn)這種現(xiàn)象。其中一個(gè)措施是使用分布式部署集群負(fù)載平衡。
如果代碼級(jí)別處理不當(dāng),數(shù)據(jù)庫(kù)會(huì)被長(zhǎng)時(shí)間鎖定,操作會(huì)被長(zhǎng)時(shí)間阻塞,影響整個(gè)系統(tǒng)的穩(wěn)定性。
不要從數(shù)據(jù)庫(kù)中讀取余額,減去扣除額,然后將其存儲(chǔ)在數(shù)據(jù)庫(kù)中!這種代碼級(jí)的操作數(shù)據(jù)肯定會(huì)有臟數(shù)據(jù)。
悲觀還是樂(lè)觀取決于設(shè)計(jì)需要。
這主要是由于代碼級(jí)別的合理設(shè)計(jì)。在獲取行鎖之前和事務(wù)外部執(zhí)行一些不必要的耗時(shí)操作,以減少每個(gè)請(qǐng)求行鎖的占用時(shí)間。這樣,性能將得到顯著提高。
這種方法是基于流程細(xì)節(jié)來(lái)計(jì)算平衡,可靠性高,但不適合實(shí)時(shí)性要求高的系統(tǒng)。