2012-07-22 46 views
1

我有一個現有的Perl應用程序,它在網絡資源(對多個MySQL數據庫,LDAP等)進行大量I/O綁定。它處理的流量超過每秒100+,並且正在慢慢變得難以管理,因爲它擴展了20臺服務器並計數。Perl中的異步數據庫和LDAP

我正在尋找使用異步方法顯着重構它,以改善資源使用情況以及處理速度。我堅信,如果一臺機器可以輕鬆處理數十個到數據庫& LDAP目錄的連接,則整體性能將顯着提高。

我的問題如下:

什麼好的框架在Perl(如果有的話)讓我帶I/O密集型從我的代碼任務並將其外部化到工作進程沒有顯著改變現有的邏輯流?

我有使用Akka的經驗& Java中的Play Framework,如果我在Java中工作,這將是完美的解決方案--Akka actors和Promise <>/Await邏輯完全適合我試圖去做。

在此先感謝您的幫助。

+0

我不知道阿卡,但也許,你可以從https://metacpan.org/module/IO::Async得到一些想法。 Net :: LDAP也有async => 1參數。 – jm666 2012-07-22 12:55:50

+0

基本上阿卡讓你寫類似的代碼(我在這裏使用僞代碼,所以不看語法): 子somefunc { #做點什麼 未來=未來{DoSomething的} 等待(未來) #做別的事情 } 在後臺,有並行運行工作的許多單位,但在代碼級別,你不必擔心它 – Innominate 2012-07-22 13:00:08

+0

正常,檢查:http://search.cpan.org/ DIST/AnyEvent/LIB/AnyEvent.pm – jm666 2012-07-22 13:25:17

回答

0

POE是一個偉大的異步框架,但是你必須改變你的代碼相當多,可能。我之前使用過它作爲異步HTTP Web服務器,並且在經過了它的學習曲線之後,它非常有用。

subs::parallel雖然更容易使用。