Web applications 如何制作一个需要扩展的网站?

Web applications 如何制作一个需要扩展的网站?,web-applications,scalability,Web Applications,Scalability,我计划建立一个应用程序,将获得大量的流量。(请不要说我不会获得流量,这是针对内部网络的,因此流量会存在。只是尽量避免“你不会获得那么多流量,不要担心它”。) 至于我期望的流量类型,用户将浏览动态创建的各种流量(基于用户帐户详细信息)。在这些网站上,用户可以提交文本输入。加载页面和处理用户输入都会影响数据库。加载显然是读取,但处理输入将同时需要读取和写入。输入也可能影响其他用户的视图。如果发生这种情况,我需要通知其他用户刷新页面 我需要做些什么才能让它不会在大量用户的负载下崩溃 限制因素是什么?数

我计划建立一个应用程序,将获得大量的流量。(请不要说我不会获得流量,这是针对内部网络的,因此流量会存在。只是尽量避免“你不会获得那么多流量,不要担心它”。)

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

我需要做些什么才能让它不会在大量用户的负载下崩溃

限制因素是什么?数据库的东西?带前端的I/O

我以前从未真正开发过一款严肃的web应用程序,我正在寻求帮助


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

只是不要做超出你需要的事情。如果你坚持这一点,你可以处理除元博客效应之外的大多数事情。

这是一个非常大的主题,你可能会想做尽可能多的研究。有几个大的主题需要考虑。< /P>
  • 会话状态存储。显然,会话存储会占用内存或磁盘空间。您需要有一个策略来正确地存储会话信息,并且以web场可以使用的方式存储会话信息

  • 缓存。健壮的缓存策略可以显著降低负载。做大量的研究,了解什么时候,什么时候,在哪里缓存

  • 可伸缩性和负载测试。每个资源获取操作都需要额外考虑,以确保在必要时执行的次数尽可能少。如果您使用好的工具,负载测试和代码分析可以帮助您识别瓶颈

  • 数据库优化。确保您了解如何为每分钟数千(数百万?)次的操作正确优化数据库。如果您的应用程序写得很重,您可能需要考虑存储不再需要包含在索引中的旧数据,以加快写操作

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


  • 你可以投资很多书,这些书可能会带来丰厚的回报。在amazon或chapters上搜索“构建可伸缩的web应用程序”,您可能会发现许多文本,包括技术特定的和不可知的。

    除了这里提到的所有内容之外,您还应该查看流量的计时。它是否随时间相对恒定?或者它是以突发方式出现的,在短时间内你会获得更高的流量


    总的来说,您需要设计一个能够优雅地处理峰值负载的系统(尽管不一定达到理想的性能水平)。如果你的流量非常大,那么你将不得不付出更多的努力来实现它的规模,而不是逐渐获得相同的流量。

    就Erlang而言:它听起来是一种可以接受的好语言(基于我对它所知甚少),但它肯定不是一根可以提供可伸缩性的魔杖。有几十种不同的因素和产品需要考虑。语言选择只是其中之一。。。而且可能是最不重要的一个


    您最好使用您已经掌握的知识并学习如何使其可扩展,而不是使用新的/未知的技术并希望它能为您扩展。

    后端存储、数据库处理、前端动态内容和缓存是一回事。另一个考虑因素是主机服务提供商和可用网络带宽

    请向您的托管服务咨询带宽上限、每个请求的最大内存分配、最大文件上载大小和最大数据库查询。如果您当前的主机不提供符合您的扩展要求的廉价服务,那么在您关闭或因超出分配的带宽而每月支付三位数的账单而措手不及之前,请转移到另一台主机

    编辑:只需重新阅读并捕获您的“内部网络”参考。所以,在这种情况下,你可能不会被你的网络管理员纠缠在几百美元的账单上,但他们仍然可以让你关机。确保与您的网络管理员以及您自己的站点与之交互的任何其他服务的管理员保持通信线路畅通,否则您很可能会很快成为他们的敌人。换句话说:良好的网络礼仪

    此外,如果您实际拥有并构建了服务器,请确保操作系统、软件堆栈和硬件都是最新的,仅具有稳定的软件和固件版本,能够处理负载,并受到监控以始终平稳运行

    <编辑> 2:我知道你具体问过你的应用程序如何处理负载,我可能只是在这里拉扯话题,但是你也必须考虑你和你的队友是否能处理负载。人力资源带宽同样重要,而工作负荷让人气馁是此类项目失败的原因。啤酒是程序员最好的朋友,尤其是在处理复杂和创造性的编程任务时,但如果人力管理不当或缺乏人力资源,啤酒可能会导致严重的饮酒问题。谁将在凌晨3点对停机通知做出回应?谁会回复来自宗教原教旨主义者或巨魔的邮件,或是浏览法律