我要设计一个开源的web服务,它应该从多个(目前是三个)web站点收集("web-抓取")一些数据。
网站不公开任何web服务或API,它们只是发布网页。
数据将"实时"收集任何客户端请求的所有网站并行,然后将被解析为XML返回给客户端。
服务器操作系统为Linux。
客户端最初将只是我的一个Android应用程序。
如果项目成功,并发客户端可能在100或更多…; -)。
目前我倾向于采用:
- perl(服务语言)
- mod_perl2 with ModPerl::Registry(用于Apache嵌入式快速perl解释器)
- perl module CHI::Driver::FastMmap(用于现代和快速缓存处理程序)
- perl module Coro(用于异步事件循环以并行放置许多请求)
由于我认为项目上的规范可能具有一般用途和兴趣,并且由于我在Coro 与 mod_perl2的组合使用中遇到了许多问题,我问:
我的收养偏好匹配得好吗?
您是否看到任何不兼容或潜在的问题?
你有什么建议来加强(这个顺序)吗?
- 组件间兼容性
- 实现的整洁性
- 可维护性 表演
您可能不想再为任何新项目使用mod_perl进行开发了。你真的想使用一些基于Plack的东西,或者甚至是Plack本身。如果你想使用Coro,使用AnyEvent(比如基于Twiggy的后端)可能是最有意义的(尽管你可能想在它前面放一个反向代理)。
你喜欢用apache吗?
如果是这样,忘记Coro,让apache处理并发;预加载你的模块和配置,并编写一个超级高效的apache RequestHandler。(只要apache2+modperl2可用,我就会这样做。)
如果没有,开始学习Plack,它是服务器无关的。
如果您选择第一种方式,我建议您避免使用传统的CGI,而采用CGI::Application,它几乎可以提供CGI的轻便性和速度,但具有更好/更现代的开发环境和框架(并且与plack兼容)。