首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >关于大规模web应用体系结构的建议?

关于大规模web应用体系结构的建议?
EN

Server Fault用户
提问于 2009-07-27 02:00:32
回答 3查看 6.4K关注 0票数 4

这是一个很大的问题:)我们正在运行一个带有LAMP的网站,5台具有LVS负载平衡的web服务器,3台具有复制和读写分离的MySQL服务器,我们使用Memcached进行缓存和一些全文搜索工具。到目前为止,它运行良好,因为我们目前没有很大的交通。

但是,当用户迅速增长时,我们将不得不扩展我们的架构以满足需求。可能是分布式文件系统和数据库(以及并行计算?)还将介绍一些集群和维护技术(如Gearman和Pshell)。

网上有一些文章我可以浏览。但我确实需要一些实际经验,才能切实有效地为这一问题做准备。

EN

回答 3

Server Fault用户

回答已采纳

发布于 2009-07-27 09:40:40

扩展web应用程序和支持基础设施的方法有很多。卡尔·亨德森( Cal Henderson )写了一本关于这个主题的好书,名为“构建可扩展网站”()。这是基于他和Flickr的经历。除非你成长缓慢,否则你会遇到许多其他人见过的同样的成长问题。和许多其他学科一样,缩放是一次旅行,而不是目的地。

第一步是使一切都可重复、可测量和易于管理。所谓可重复性,我指的是使用FAI或kickstart之类的工具来安装操作系统,并在安装了基本操作系统后使用木偶或cfengine之类的工具来配置这些机器。我的意思是使用仙人掌、蟋蟀或神经节之类的东西来监视你的集群现在的表现。不仅要测量负载平均值,还要测量呈现页面或服务请求所需的时间。在启动时,这两种方法似乎都不重要,但是应该在系统从负载上崩溃之前告诉您,并且可以简单地一次添加10台或100台机器。将你的增长计划建立在数据而不是猜测的基础上。

可管理意味着将工具放在适当的位置,允许您尽可能多地自动生成和测试配置。从你所拥有的开始,成长它。如果你要将机器信息存储在数据库中,那就太好了。如果没有,您可能有一个可以导出的电子表格。如果您还没有这样做,请将您的配置放在某种类型的源代码管理中。从您的数据库自动创建配置允许您以较少的压力成长。在服务器上运行之前对它们进行测试,可以使您避免因为输入错误或其他错误而无法启动服务。

水平方法假设您可以适当地重复一些事情。考虑一下你的申请。哪些领域是有意义的分裂?哪些领域可以被许多机器并行处理?延迟是否会影响您的应用程序。您是否有可能遇到连接限制或其他瓶颈?您是否要求您的web服务器也处理邮件传递、数据库或其他家务?

我在有数百台网络服务器的环境中工作过。对于不同类型的负载,情况应该是不同的。如果您有大量很少更改的数据文件集合,那么将它们与积极变化的“东西”分开可能会给静态和动态数据提供更大的空间。不同的工具在不同的负载下工作得更好。Apache和Lighttpd在某些方面工作得很好,Nginx对其他方面的效果更好。

看看代理和缓存。您的用户和应用程序之间以及应用程序的各个部分之间。我读到你已经在使用memcache了,这很有帮助。在负载平衡器和web服务器之间放置一个反向代理(如perlbal或磅)可能是有意义的,这取决于您的应用程序流量。

在某些时候,您可能会发现MySQL主<-> (N *从服务器)复制跟不上,需要对数据库进行分区。对数据库进行分区可能涉及设置另一层数据管理。许多人使用另一个带有memcache的数据库来进行管理。在我工作的一个地方,我们对大多数数据使用master <->主复制对,对数据的指针使用10个读从。

这只是对我在数百台机器的现场工作中遇到的一些问题的简单描述。从几台机器到几百台机器,没有尽头的东西在悄然蔓延。我相信,成千人的成长也是如此。

票数 12
EN

Server Fault用户

发布于 2009-07-27 05:43:25

关于这个话题,最近有很多很好的文献。从高可伸缩性开始,很多最好的东西都是从那里开始的。您可以查看Digg技术博客,了解我们是如何做事情的,您还可以接触到诸如SAGE之类的资源--圣人列表中的人员是一个很好的资源。

票数 3
EN

Server Fault用户

发布于 2013-01-11 10:37:05

对于大多数web应用程序来说,用户基础的高增长要求开发人员在DBs之前使用memcache。数据应计算并保存在缓存中。这将有助于减少在用户请求时将数据服务到页面的时间。

票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/46286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档