我有一個Web應用程序,它接收用戶請求並將它們放入MYSQL數據庫中。現在,典型的用戶請求需要按照需要大量時間才能完成的工作流程進行服務。爲了解決這個問題,我有一個不斷監聽MYSQL表的異步處理器。在Java中觸發異步進程
我注意到,在無限循環上輪詢MYSQL表會導致我的應用程序部署到的盒子上的CPU使用率激增,這往往會導致該盒子無法使用。
我知道,在MYSQL數據庫中沒有任何活動請求的情況下,讓異步進程在'某些'時間休眠是一種選擇,但是我想保留這個作爲最後的手段。
由於涉及服務單個請求的工作流程需要時間,並且還需要將處理從前端解耦以允許後端發展,因此使此過程處於同步狀態不是一種選擇。
我想知道是否有任何智能的方法來觸發異步進程,以便我可以避免CPU使用率峯值並仍然從異步處理器獲得最佳響應時間。
任何意見,將不勝感激。
感謝 p1ng
您構思此問題的方式表明您有兩個單獨的應用程序。是否有理由不能有一個多線程的Web應用程序異步處理剛插入數據庫的數據? – Carth 2011-12-22 16:15:34
對於所有實際用途,前端和後端可以被視爲不同的應用程序。我無法採用多線程方式的原因是因爲處理每個請求所涉及的工作流利用了單數且無線程的資源,並且我不希望在每個請求的基礎上阻止這些資源。此外,異步處理器仍在不斷髮展,對解耦的需求也是因爲我們計劃在將來爲外部API調用打開它。 – ping 2011-12-22 16:23:28
你能詳細說明爲什麼你會得到一個CPU使用率高峯嗎?除了使後端多線程,我不明白爲什麼你有一個問題,你可以做什麼。 – 2011-12-22 16:33:56