讀/寫併發我開發一個HTTP請求發送短信的API。我使用節點js和貓鼬。所以我有一個像多線程應用程序一樣的問題。節點JS與貓鼬/ MongoDB的
事實是,當用戶發送短信時,我會驗證他已經發送到數據庫(使用貓鼬)的短信數量,如果該數字沒有超過限制,他的短信將被髮送,短信數量他發送的是數據庫中的增量(在模式中,他在小時,天,周和月中發送的短信數量有一個值)。但事實是,我在我的代碼中使用了一個回調函數來讀取值和增量值以及許多其他操作。
因此,問題(我認爲)是,當用戶發送請求非常快時,服務器不同的回調讀取相同數量的短信發送,授權用戶發送短信,增加和保存相同的值,以便計數的短信是錯誤的。
在一個訪問變量的多線程應用程序中,解決方案將阻止其他線程在實際線程完成所有工作之前讀取一個變量。
隨着節點的js事件系統,並獲得MongoDB中的數據我只是不知道如何解決我的問題。
預先感謝您的答案。
PS:我不知道解決方案,但它會很好,如果它也適用於允許節點js使用多核的羣集。
您可以將消息添加到隊列中,並且僅在處理完前一個消息後才處理下一個消息。 – Cristy
此外,請閱讀:https://docs.mongodb.com/manual/faq/concurrency/#what-type-of-locking-does-mongodb-use – Cristy