2012-07-22 59 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虽然更容易使用。