【问题标题】:Scalable web application with lot of image servings具有大量图像服务的可扩展 Web 应用程序
【发布时间】:2010-10-29 11:42:53
【问题描述】:

我开始开发一个 Web 应用程序。这个应用程序需要大量的图像处理。我从PHP 开始,因为它是最容易和最便宜的托管。我在以前的一些应用程序中使用了 .NET 框架,而且我对 Python 非常熟悉。

但我现在一点也不习惯使用 PHP,所以我决定使用对我来说更简单的东西。

任何人都可以帮助我了解 .NET 框架还是 Python(目前 web.py 对我来说看起来不错) 考虑到大量的图像处理,比其他人有一些优势,比如说每秒大约 200 个请求?

如果有人可以为他们中的任何一个推荐合适的主机,我将不胜感激。

编辑:

很抱歉给您带来了困惑。图片处理是指应用程序的用户可以上传图片,这些图片将存储在平面文件系统中,而他们的条目在数据库中。

通过图像处理,我的意思是我还需要为这些图像创建缩略图,以便在应用程序中使用。

【问题讨论】:

  • 什么样的“图像处理”?
  • 您能否更具体地说明您对图像的处理方式?您的帖子标题谈到“服务”图像,然后您提到“处理”和“操纵”。这包括什么?

标签: .net python scalability


【解决方案1】:

如前所述,任何数量的开发平台都可以工作,这实际上取决于您缓存内容的方法。

如果您对 Python 感到满意,我会推荐 Django。该框架上有一个大型开发社区和许多大型应用程序和站点。

Django 内部支持通过使用memcached 进行缓存。您可以极大地自定义您想要缓存的方式和内容,同时能够在您的实际 Django 应用程序中保留许多缓存设置(在我无法完全控制的情况下使用第三方托管服务时,我觉得这很好系统)。

以下是一些可能有帮助的链接:

有许多托管公司提供共享和专用托管计划。我会访问http://djangohosting.org/ 以确定哪个主机最适合您的需要。我用过WebFaction 很多次,对他们的服务非常满意。

【讨论】:

  • 感谢大家的详细建议。我意识到我需要一个(专用/共享/vps)主机来做所有动态的东西。我现在会尝试使用 django 或 web.py 和谷歌应用引擎(他们也有 memcache api)(但是是数据存储 api 类型of 使我的代码在迁移到其他主机时有些无用)。我计划存储所有图像和其他静态文件,这些图像和其他静态文件将从其他服务器提供,并像 S.Lott 建议的那样使用 squid 的一点帮助。这是一个个人项目,所以我试图将成本保持在尽可能低的水平:D
【解决方案2】:

请购买 Schlossnagle 的书,Scalable Internet Architectures

您不应从 Python(或 PHP 或 .Net)提供图像,而应从 Apache 和 Squid 提供图像。 Javascript 和 CSS 文件也是如此——它们是静态媒体,Python 永远不应该接触它们。

您应该只处理交易的 HTML 部分。

顺便说一句,这就是您使用 Django 之类的东西所获得的架构。静态媒体在 Python 之外处理。 Python 处理验证和处理的 HTML 部分。

事实证明,您将花费大量时间在 Squid 和 Apache 上大惊小怪,试图让事情快速发展。如果您限制它们的职责,Python(和 Django 框架)就足够快了。

【讨论】:

    【解决方案3】:

    如果您希望在提供图像时获得性能,您必须采用 FaceBook 方法,即“除非绝对必要,否则永远不要访问磁盘”——这意味着在图像服务器和最终用户之间使用尽可能多的缓存。有许多产品可以帮助您解决商业和免费问题,包括正确配置您的网络服务器 - 谷歌,看看哪些产品适合您的成本和平台。

    【讨论】:

      【解决方案4】:

      根据您所写的内容,.NET 或 Python 对您来说都是不错的选择。就个人而言,我会选择 Python。为什么?

      • 它是免费的。
      • 它是可扩展的。
      • 借助 Python 图像库,您几乎可以对图像执行任何操作。
      • 嘿,它是 python - 更少的代码,相同的结果。

      说实话,你的选择并不重要——只选择你觉得舒服的那个并坚持下去。你提到了 web.py——这个网站是用 web.py 制作的:colr.org——它是用 1304 制作的代码行,不包括外部库。

      【讨论】:

        【解决方案5】:

        我认为切换语言对解决您的问题没有多大帮助,只是您最初选择的架构仅适用于少量数据。我建议您访问http://highscalability.com,是时候开始了解大佬们如何扩展他们的应用程序了。

        【讨论】:

          【解决方案6】:

          我还建议您查看MogileFS。它是一个在基于 Unix 的操作系统上运行的分布式文件系统。我知道 digg 用它来存储他们的头像图像。

          来自创建 memcached 和 live journal 的同一个人。

          【讨论】:

            猜你喜欢
            • 2013-06-26
            • 2011-02-13
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-07-03
            • 2013-07-25
            • 1970-01-01
            相关资源
            最近更新 更多