可扩展的图像服务网络应用程序
我开始做一个网页应用,这个应用需要处理很多图片。我选择了PHP,因为它是最简单、最便宜的托管方式。我之前用过.NET框架,也对Python很熟悉。
但是现在我对PHP一点也不熟悉,所以我决定用一些对我来说更简单的东西。
有没有人能帮我看看.NET框架或者Python(目前我觉得web.py不错)在处理大量图片和每秒大约200个请求的情况下,哪个更有优势呢?
另外,如果有人能推荐一个合适的托管服务,那就太好了。
编辑:
抱歉让大家困惑了。这里的图片处理是指用户可以上传图片,这些图片会存储在文件系统中,而他们的相关信息会保存在数据库里。
而图片处理则是指我需要为这些图片创建缩略图,这些缩略图会在应用中使用。
6 个回答
我还想推荐你看看 MogileFS。它是一个分布式文件系统,可以在基于Unix的操作系统上运行。我知道digg网站用它来存储用户的头像图片。
这个系统是由同一团队开发的,他们还做了memcached和live journal。
请购买Schlossnagle的书,《可扩展的互联网架构》。
你不应该通过Python(或者PHP或.Net)来提供图片,而应该使用Apache和Squid来处理。同样,Javascript和CSS文件也是静态资源,Python根本不应该去碰它们。
你只需要处理HTML部分的内容。
顺便说一下,这就是像Django这样的框架所采用的架构。静态资源是在Python之外处理的,而Python负责验证和HTML部分的处理。
实际上,你会花很多时间在Squid和Apache上调试,以确保一切运行得更快。如果你限制Python的职责,它(以及Django框架)其实是足够快的。
之前提到过,很多开发平台都可以用,关键在于你怎么处理内容的缓存。
如果你对Python比较熟悉,我推荐你使用Django。这个框架有很多开发者在用,还有不少大型应用和网站都是基于它搭建的。
Django内部支持通过memcached来进行缓存。你可以根据自己的需求,灵活地设置想要缓存的内容和方式,而且大部分缓存的设置都可以在你的Django应用里进行调整(我觉得这点特别好,尤其是在使用一些第三方托管服务时,因为那样我对系统的控制权有限)。
这里有一些可能对你有帮助的链接:
- Django框架 - 关于Django框架的一般信息。
- Django中的Memcached - 讲解如何为Django项目配置缓存。
- Memcached官网
- Django书籍 - 一本免费的在线书籍,可以学习Django(里面也有关于缓存和扩展的问题)。
有很多托管公司提供共享和专用的托管计划。我建议你访问http://djangohosting.org/,看看哪个托管服务最适合你的需求。我个人使用过WebFaction,他们的服务让我非常满意。