12

我目前正在寻找一种 Cloud PaaS,它可以让我扩展应用程序以处理 1 到 1000 万+ 用户之间的任何事情......我从来没有处理过这么大和我似乎无法解决的大问题得到一个明确的答案是,如果你开发一个标准应用程序,比如说一个带有关系数据库和soap-webservices的标准应用程序,当部署在Paas解决方案上时,这个应用程序会自动扩展,还是你仍然需要构建应用程序时失败,冗余和所有这些事情?

假设我将 Spring Hibernate 应用程序部署到 Amazon EC2 并创建安装了 Tomcat 的 Ubuntu Server 的单个实例,该应用程序会无限扩展还是需要更多 Ubuntu 实例?如果需要多个 Ubuntu 实例,亚马逊是否会负责在两个实例上运行应用程序,还是由开发人员负责?关于数据库存储,我可以在 EC2 上安装一个可以随着数据库增长而扩展的数据库,还是如果我希望它无限扩展,我是否需要使用他们的 API 之一?

CloudFoundry 允许您在本地构建并直接部署到他们的 PaaS,但由于它处于测试阶段,因此您可以使用的资源数量有限制,如果我没记错的话,数据库限制为 128MB,所以现在不行. 有人建议在 Amazon EC2 上安装 CloudFoundry,它如何扩展以及如何处理数据库层?

GAE(Google App Engine),这是否允许我只部署一个应用程序而不必担心它如何扩展和实现冗余?似乎有一些限制,你可以和不能在 GAE 上运行,最近它们的价格上涨让相当多的开发人员感到不安,与其他提供商相比,它真的那么贵吗?

所以基本上,它会扩展吗?需要做什么才能使其扩展?

4

1 回答 1

12

一篇文章有​​很多问题。反正:

  1. Amazon EC2 不会随负载自动扩展。EC2 基本上只是一个虚拟机。您可以使用Auto ScalingElastic Load Balancing实现 EC2 实例的扩展。

  2. SQL 数据库的扩展性很差。这就是人们首先开始使用 NoSQL 数据库的原因。最好查看您的云提供商作为托管服务提供的数据库:GAE上的Datastore和 Amazon 上的DynamoDB

  3. 在 EC2 实例上安装您自己的数据库是非常不切实际的,因为 EC2 具有临时存储(重新启动时它会丢失“磁盘”上的所有数据)。

  4. GAE Datastore 实际上是一个大型数据库,适用于在其上运行的所有应用程序。所以它的可扩展性非常好——你的数百万用户对它来说应该不是问题。 http://highscalability.com/blog/2011/1/11/google-megastore-3-billion-writes-and-20-billion-read-transa.html

  5. 是的,App Engine 会自动扩展前端实例和数据库。你不需要做任何特别的事情来使其扩展,只需使用他们的 API。

  6. 您可以使用 AppEngine 执行的操作有一些限制:

    A. 没有本地存储(文件系统) - 您需要使用 Datastore 或 Blobstore。

    B. Comet 仅通过其专有的 Channels API 得到支持

    C. Datastore 是一个 NoSQL 数据库:没有 JOIN、有限的查询、有限的事务。

  7. Cost of GAE is not bad. We do 1M requests a day for about 5 dollars a day. The biggest saving comes from the fact that you do not need a system admin on GAE ( but you do need one for EC2). Compared to the cost of manpower GAE is incredibly cheap.

Some hints to save money (an speed up) GAE:

A. Use get instead of query in Datastore (requires carefully crafting natiral keys).

B. Use memcache to cache data you got form datastore. This can be done automatically with objectify and it's @Cached annotation.

C. Denormalize data. Meaning you write data redundantly in various places in order to get to it in as few operations as possible.

D. 如果您有很多来自不使用 cookie 的设备的 REST 请求,则关闭会话支持(或像我们一样滚动您自己的)。会话在后台使用数据存储,并且对于它确实获取和放置的每个请求。

E. 阅读有关调整应用程序设置的信息。尝试不同的设置(取决于您的应用程序对请求延迟的容忍程度以及您的流量模式/峰值)。我们能够将前端实例减少 70%。

于 2012-03-25T08:35:46.120 回答