国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

您的位置:首頁技術文章
文章詳情頁

node.js - nodejs單進程產生的數據庫連接多線程并發問題探討

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

問題描述

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

問題解答

回答1:

站內搜“搶購”https://segmentfault.com/sear...

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

回答2:

你這種情況應該加上事務

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

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

通過 decorator 對返回 promise 的方法實現類似java synchronized 關鍵字的同步調用

// 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 // 注解需要編譯,暫時手動調用下 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 上已經有類似工具https://github.com/sindresorh...

回答3:

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

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

事務 + 條件更新 從設計上避免了超賣。

相關文章:
主站蜘蛛池模板: a级黄色毛片免费播放视频 a级精品九九九大片免费看 | 成在线人免费视频 | 成人免费国产欧美日韩你懂的 | 欧美成人免费观看久久 | 久草在线视频免费看 | 亚洲成人免费视频在线 | 亚洲毛片在线看 | 久久亚洲国产精品一区二区 | 最新国产午夜精品视频成人 | 久久成人a毛片免费观看网站 | 好叼操这里只有精品 | 欧美成人极品怡红院tv | 国产精品久久久久久亚洲伦理 | 久久久久久一级毛片免费无遮挡 | 国产在线乱子伦一区二区 | 麻豆国产 | 免费黄色在线网址 | 国产精品久久久久久搜索 | 国产成人在线综合 | 午夜精品久久久久久毛片 | 精品亚洲永久免费精品 | 精品国产高清不卡毛片 | 一本久 | 亚洲综合一区二区精品久久 | 欧美一区二区三区免费 | 中国一级性生活片 | 2022国内精品免费福利视频 | 欧美一级毛片在线看视频 | 国产一区亚洲二区 | 美国一级毛片片免费 | 亚洲美女视频网址 | 国产精品久久一区二区三区 | 理论片中文字幕 | 久久免费精品 | 性视频亚洲 | 亚洲一区二区三区久久 | 国产三级久久 | 亚洲伦乱 | 韩国福利一区 | 久久爱噜噜噜噜久久久网 | 一级a做爰片欧欧美毛片4 |