大量到期訂單的處理問題

來源:互聯網
上載者:User
  1. 描述你的問題
    最近開發遇到一個大量訂單到期處理的問題,比如我拍了一個商品,半個小時之後他就不能付款了或者這個訂單應該被刪除掉。

第一、反應是crontab,但是考慮到每次都要去查mysql,感覺會影響效率;
第二、有人提示我用訊息佇列rabbitmq,但是我看了半天感覺訊息佇列好像沒啥用,我感覺邏輯還是拍下訂單的時候發送訊息,然後php進程一直在那sleep?估計是我理解的不夠透徹,求大神解釋下相關流程。
第三、還有其他方法嗎?大神給個具體點的方案撒~

  1. 貼上相關代碼

  2. 貼上報錯資訊

  3. 貼上相關

  4. 已經嘗試過哪些方法仍然沒解決(附上相關連結)

回複內容:

  1. 描述你的問題
    最近開發遇到一個大量訂單到期處理的問題,比如我拍了一個商品,半個小時之後他就不能付款了或者這個訂單應該被刪除掉。

第一、反應是crontab,但是考慮到每次都要去查mysql,感覺會影響效率;
第二、有人提示我用訊息佇列rabbitmq,但是我看了半天感覺訊息佇列好像沒啥用,我感覺邏輯還是拍下訂單的時候發送訊息,然後php進程一直在那sleep?估計是我理解的不夠透徹,求大神解釋下相關流程。
第三、還有其他方法嗎?大神給個具體點的方案撒~

  1. 貼上相關代碼

  2. 貼上報錯資訊

  3. 貼上相關

  4. 已經嘗試過哪些方法仍然沒解決(附上相關連結)

低成本解決方案

插入訂單的時候同時插入到期的時間

然後服務端用cli模式不斷查詢mysql資料庫就行啊

建立mysql到期時間的索引 並不會影響效率

如果對運營成本有要去的話,可以通過使用者觸發模式來實現:

  1. 在拍完商品的同時設定"到期時間" datetime。

  2. 使用者對該商品的任何更新都要同時更新"到期時間"。

  3. 每次使用者登入後,讀取相關商品的時候通過php對比目前時間(如果對時間要求嚴格,建議用JS對比時間)跟商品到期時間。如果到期了,可以通過css標識當前商品已經到期。同事發送請求到rabbitmq隊列,因為讀取商品的時候已經得到了該產品的ID,所以最好的列隊資訊是要包括這個ID。

  4. 後台有crontab定時讀取rabbitmq並且根據已知的ID批量生產刪除的mysql語句。

這種處理方法可以節省資源,減低無服務不必要的消耗,基本上就是一次讀取,一次刪除的資料庫操作而已。非常不建議逐條刪除,也建議逐條搜尋mysql找出到期條目,最好是根據rabbitmq隊列生產大量刪除語句。

可以把訂單存進redis 給redis設定到期時間

到期時間加索引,然後定時任務去處理,每次更新固定條數就好了。比如定時指令碼每次啟動,根據條件去查詢,每次查1000條,更新狀態為到期未付款,如果結果不足1000條或是沒有結果,就說明不用查下一次了。

你的問題是不是拍了後半小時沒付款就刪除,如果是的話,以下幾點思路你可以看看

  1. nosql,需要持久化的話就用redis,拍下就設定到期時間,到時間後自動刪除(這種情況就適合用nosql特性),你前景程式需要進行判斷。
    2.如果不允許用redis的話(就是用mysql類別關係型資料庫咯),也是拍下的時候設定到期時間戳記,然後在訂單相關頁面手動進行是否到期(如果到期時間和訂單在一個表,不會浪費資源啊,取多一個欄位而已)

是我的理解錯了嗎,為什麼需要crontab和訊息佇列??

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.