有什么需要制作一个需要扩展的网站?

我打算构建一个能够获得大量流量的应用程序。 (请不要说我不会得到流量,这是为了一个内部网络,所以流量会在那里,只是为了避免'你不会得到那么多的流量,不用担心。

至于我期望的流量类型,用户将浏览各种动态创建的(基于用户帐户详细信息)。 在这些网站上,用户可以提交文本输入。 加载页面和处理用户输入都会触发数据库。 负载显然是读取,但处理输入将需要读取和写入。 输入也可能影响其他用户的意见。 如果发生这种情况,我需要通知其他用户刷新页面。

我需要做什么样的事情,以避免在大量用户的负载下崩溃?

什么成为限制因素? 数据库内容? I / O与前端?

我从来没有真正开发过一个认真的网络应用程序,并正在寻求一些帮助。

编辑:我正在考虑使用Erlang作为后端,因为我已经使用它一点,真的很喜欢所有的并发性的东西。 这是一个可行的选择,还是应该尝试更传统的东西?


这是一个非常大的话题,你可能希望尽可能多地做研究。 有几个大问题需要考虑。

  • 会话状态存储。 显然,会话存储占用内存或磁盘空间。 您需要有一种策略来正确存储会话信息,并且可以通过Web场使用。

  • 缓存。 强大的缓存策略可以显着降低负载。 对于什么时候,什么以及应该在哪里缓存做大量的研究。

  • 可扩展性和负载测试。 额外的考虑必须进入每个资源获取操作,以确保它按照需要进行很少次。 如果使用好的工具,负载测试和代码分析可以帮助识别瓶颈。

  • 数据库优化。 确保您了解如何正确优化您的数据库每分钟数千(数百万次)的操作。 如果您的应用程序编写繁重,则可能需要查看仓库中不再需要包含在索引中的旧数据,以加快您的写入操作。

  • 升级路径。 随着时间的推移,你的流量会不断增加吗? 一定要了解在需要/需要时如何为应用程序插入更多的服务器和内存,以及需要什么。

  • 有很多书可以投资,这可能会带来巨大的回报。 在亚马逊或章节中搜索“构建可伸缩的Web应用程序”,您可能会发现大量文本,包括技术特定和不可知论。


    除了这里提到的所有其他内容外,您应该查看流量的时间。 随着时间的推移它是否相对稳定 或者它会突然爆发,您会在短时间内获得更高的流量?

    总体而言,您将需要设计一个系统,可以优雅地处理峰值负载(尽管不一定处于理想的性能水平)。 如果您的流量非常突兀,那么您将不得不花费更多的精力来扩大规模,而不是逐渐获得相同数量的流量。


    就Erlang而言:这听起来像是一种可以接受的良好语言(基于我对它的了解很少),但它绝对不是一种可以提供可伸缩性的魔术棒。 有几十个不同的因素和产品需要考虑。 语言的选择只是其中的一个......而且可能是最不重要的一个。

    你可能会更好地使用你已经知道的东西,并学习如何使它扩展,而不是去研究一种新的/未知的技术,并希望它能够为你扩展。

    链接地址: http://www.djcxy.com/p/53441.html

    上一篇: What goes in to making a web site that needs to scale?

    下一篇: What's the best Django search app?