0

我将设计一个开源网络服务,它应该从多个(目前是三个)网站收集(“网络抓取”)一些数据。

这些网站不公开任何网络服务或任何 API,它们只是发布网页。

数据将根据来自所有网站的任何客户端的请求“实时”收集,然后将其解析为 XML 以返回给客户端。

服务器操作系统将是 Linux。

客户端最初只是我的一个 Android 应用程序。

如果项目成功的话,并发客户可能会达到 100 个或更多... ;-)。

目前我的偏好是采用:

  • perl(用于服务语言)
  • 带有ModPerl::Registry的mod_perl2(用于 Apache 嵌入式快速 perl 解释器)
  • perl 模块CHI::Driver::FastMmap(用于现代快速缓存处理程序)
  • perl 模块Coro(用于异步事件循环以并行放置许多请求)

由于我认为该项目的规范可能具有一般用途和兴趣,并且由于 Coromod_perl2 的组合使用我遇到了很多问题,所以我问:

我的收养偏好是否匹配?

您是否发现任何不兼容或潜在问题?

您有什么建议可以增强(按此顺序):

  • 组件之间的兼容性
  • 实施的整洁度
  • 易于维护
  • 表演
4

2 回答 2

1

您可能不想再为任何新项目使用 mod_perl 进行开发了。你真的想使用基于Plack的东西,甚至可能是 Plack 本身。如果您想使用 Coro,使用AnyEvent(例如基于Twiggy的后端)可能最有意义(尽管您可能希望在它前面放置一个反向代理)。

于 2011-08-02T12:14:55.943 回答
0

你喜欢坚持使用 apache 吗?
如果是这样,忘记 Coro,让 apache 处理并发;预加载你的模块和配置,并编写一个超级高效的 apache RequestHandler。(每当 apache2+modperl2 可用时,我都会这样做。)
如果没有,请开始学习与服务器无关的 Plack。

If you choose the first route, I'd recommend avoiding traditional CGI and instead adopting CGI::Application, which gives almost the lightness and speed of CGI but with a much much nicer/modern development environment and framework (and is Plack-compatible).

于 2011-11-03T14:21:30.290 回答