亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術(shù)文章
文章詳情頁

node.js - nodejs單進程產(chǎn)生的數(shù)據(jù)庫連接多線程并發(fā)問題探討

瀏覽:115日期:2022-06-17 13:59:15

問題描述

舉例,假設(shè)有100個請求node服務(wù)器,每個請求會執(zhí)行一次查詢,修改數(shù)據(jù)庫操作。假設(shè)10個請求按順序被node接收處理 等待各自判定庫存查詢數(shù)據(jù)庫io操作,但是庫存只有5個,問題來了,這時候10個查詢都判定庫存還有,然后繼續(xù)下面的下單操作。當(dāng)100個請求甚至更多時,問題會被更加放大 又不能同步加鎖,哪位朋友有比較合理的思路 不吝賜教~

問題解答

回答1:

站內(nèi)搜“搶購”https://segmentfault.com/sear...

極端情況為“秒殺”https://segmentfault.com/sear...

回答2:

你這種情況應(yīng)該加上事務(wù)

----- 更新下答案 -----

查詢和實際數(shù)據(jù)不一致的問題是無法避免的,我的理解題主的意思應(yīng)該是在更新callback之前有其他用戶購買成功的情況會導(dǎo)致購買失敗的問題,因此可以通過加鎖解決,其實如果異步操作都使用 promise 的情況下,可以通過Promise 模擬順序調(diào)用來實現(xiàn)類似java方法加鎖的特性

通過 decorator 對返回 promise 的方法實現(xiàn)類似java synchronized 關(guān)鍵字的同步調(diào)用

// decoratorlet pfunction sync(target, name) { const method = target[name] target[name] = function(...args) { if (p) { p = p.then(() => method.apply(target, args)) } else { p = method.apply(target, args) } return p }}class Model { constructor () { // super() this._cardCount = 5 sync(this, ’buyOneCard’) } // @sync // 注解需要編譯,暫時手動調(diào)用下 buyOneCard (user) { console.log(’buyonecard’, this._cardCount) return new Promise((resolve, reject) => { setTimeout(() => {this._cardCount = --this._cardCount this._cardCount < 0 ? reject(this._cardCount) : resolve(this._cardCount) }, 100) }) }}const m = new Model()for(let i=0;i<10;i++) m.buyOneCard().then(c => console.log(c))

chrome 下運行通過。。

----- 再更新 ----

github 上已經(jīng)有類似工具https://github.com/sindresorh...

回答3:

謝謝樓上兩位,首先我描述的場景是正常商品銷售,如果是搶購倒好辦 直接用redis隊列可以解決,但是商品種類多的時候 這種方式不可取。

回復(fù)樓上,這里面事務(wù)是肯定有的,但是事務(wù)并不能解決這種并發(fā)超賣的情景。 最后,如果這是用java可以很方便用隊列或同步鎖解決,但是node并不適用以上場景,redis也只能解決搶購,誰有還有合適的方案 ,期待中~回答4:

事務(wù) + 條件更新 從設(shè)計上避免了超賣。

相關(guān)文章:
主站蜘蛛池模板: 国产免费三a在线 | 国产精品亚洲片在线花蝴蝶 | 在线观看免费精品国自产 | www.亚洲第一 | 欧美黄色第一页 | 成人a毛片免费视频观看 | 国产成人精品视频一区二区不卡 | 国产玖玖在线 | 99久久精品国产国产毛片 | 久久夜夜操妹子 | 日本黄色一级网站 | 免费草逼视频 | 欧美日视频 | 久久91精品国产91久久麻豆 | 国产成人片 | 99久久免费国产精品m9 | 国产精品国产色综合色 | xxxxxx日本护士 | 亚洲爽视频 | 毛片2016免费视频 | 天天拍夜夜添久久精品中文 | 免费又黄又硬又大爽日本 | 国产一区二区免费播放 | 26uuu精品一区二区 | 国产午夜亚洲精品一级在线 | 国产免费一级片 | 免费一区视频 | 国产123| 一级s片| 国产99在线a视频 | 国产高清在线看免费视频观 | 在线观看亚洲一区 | 国产精品亚洲第五区在线 | 综合久久精品 | 美日韩中文字幕 | 欧美黄色成人 | 一级片黄色a| 国产一级二级三级毛片 | 日韩美一区二区三区 | 日本性生活网站 | 99色亚洲|