本文转自 http://www.cnblogs.com/vsover/archive/2009/01/08/1371543.html
声明,这篇文章的作者是BlueDavy,并非我。本人认为写的很好,从中抽取出有用的章节,留做备忘并与大家分享。
第一步:物理分离应用数据库
网站运营的最开始阶段,在每天高峰期的时候总是会出现宕机现象并且经常会有数据库和网站应用挣抢硬件资源的状况出现,这种情况下,最简单的方案就是把应用和数据库分开部署到不同机器上,以提高各自能够占有的资源。(此方案是网站建设最初阶段)
第二步:页面缓存和静态化
随着网站访问量的迅猛攀升,系统的响应会开始变慢,主要原因是因为访问数据库的连接增多,数据库服务器的硬件配置又决定了只能提供一定数量的连接。由于网站里的很多内容是很少更新的。于是可以把这些页面缓存起来或者静态化,减少对数据库的访问。这一步对技术上有所要求:页面缓存技术,模板技术。页面缓存提议Squid等几种方案,静态化可通过生成静态HTML方式实现。
第三步:页面片段缓存
页面片段缓存可采用ESI、OSCacheD等框架来进行实现。
第四步:数据缓存
数据缓存可采用ehcache、OSCache或独立实现的缓存框架来实现。这步演变对技术上的要求:Map数据结构、程序语言中的Map数据结构(例如JAVA中的HashMap、TreeMap等)、所采用的缓存框架的实现方式(缓存内容的存储方式、查找算法和失效算法)
第五步:水平扩展应用服务器
如果单纯是访问量高造成了服务器压力过大,那就只能采用增加应用服务器,进入水平扩展阶段。那么如何让访问平均分配到每台应用服务器上。这里先用软件负载均衡技术。软件负载均衡技术可选:DNS轮询、Apahce、Nginx、LVS等。又如何保持信息同步呢,如session同步。可采用信息写入数据库、写入共享文件、cookie或在各台机器上同步状态信息等。如何保证数据缓存的同步?可采用缓存同步或分布式缓存。如何让文件相关的功能继续可用 ,例如文件上传功能等。可采用共乡文件系统或存储设备,采用前者的居多一些。这一步需要积累的知识有1.负载均衡技术,包括但不限于硬件负载金衡技术(四层,七层等)、软件负载均衡技术、负载均衡算法、转发协议、(如VS/NAT、VS/TUN、VS/DR)所选用的技术的实现细节(如LVS的实现)等。2.容灾技术,包括但不限于ARP、Linux Heart-beanting等。3.状态信息或缓存同步技术,包括但不限于cookie、UDP协议、组播、数据同步框架的实现(例如jgroups等)。4.共乡文件原理,如NFS等
第六步:分库
以上工作完成后,你的团队可以做各种各样的小调优工作,例如操作系统调优、Apache调优、JVM调优等等。分库的实现对技术没有太高的要求,仅在于整理业务,进行拆分,并相应的对程序进行适当的修改。
第七步:分表、DAL、分布式缓存
由于数据库数据量太大,分库往往不能够解决系统缓慢,这时,需要采取适当的分表和数据库调优,由于服务器没有那么多内存可以提供缓存,所以开始采用分布式缓存。问题: 在进行分表时,发现很明显的问题:分表后导致访问数据库的程序复杂度提高。因为在查表时必然要先考虑分表规则。要将这一层统一 ,最好的办法就也就是著名的DAL。增加数据访问层。分布式缓存可采用的方案有memcache、JbossCache等。分表时应做的知识储备:动态Hash、Consistent Hash 、分布式缓存实现原理、数据库连接管理、数据库操作的控制等。
第八步:改变应用服务器水平扩展环境
当Apache、nginx或LVS等软件负载均衡方式已经无法承受巨大的访问量的调度压力时,可考虑购买硬件负载均衡设备。入F5、Netsclar、Athlon等,也可从业务角度进行划分,构建不同的业务软件负载集群组。文件共享方案出现瓶颈时,这个时候可以考虑购买昂贵的存储设备 。如NAS等,也可考虑自行设计或是采用成熟的分布式文件系统。
第九步:数据读写分离与廉价的存储
如服务器增加太多了,数据库连接相当激烈,读写比相当高,这时可构件大型数据库集群或数据读写分离。数据读写分离可选择的方案或程序级的同步方案,在实现读写分离的时候要同步改造DAL,以适应新的演变。廉价的存储方面有Google的Bigtable、新浪的 Memcachedb等。应具备的知识储备:数据库自行复制、同步方案及实现原理(如Oracle的Standby、MySQL的Replication等);数据延迟以及不一直的解决方案。读写分离规则判断。
第十步:大型分布式应用时代
l 拆分成分布式后一个很明显的需求就是高效、稳定的通信和调用框架。
l 管理好大型分布式的应用,涉及到陆游、以来、版本、错误追踪、检测和报警等多方面的问题。
l 合理拆分,涉及业务的整理和大型系统架构的把握。
这一步涉及很多知识体系:通信、分布调用、分布式事务、消息机制、并行计算、报表、检测技术、规则策略等。
分享到:
相关推荐
### 大型网站架构演变与知识体系解析 #### 架构演变的第一步:物理分离Web服务器与数据库 在网站发展的初期阶段,往往由于资源限制,Web应用与数据库部署在同一台服务器上。随着用户访问量的增长,单一服务器上的...
总的来说,大型网站架构演变的知识体系包括:单体架构、垂直拆分、水平扩展、微服务架构、容器化、数据一致性理论、缓存技术、CDN、NoSQL、消息队列、监控和日志分析等多个方面。理解并掌握这些知识,有助于构建高效...
大型网站架构演变和知识体系 之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再...
### 大型网站架构演变与知识体系详解 #### 架构演变的第一步:物理分离Web服务器与数据库 在网站初创阶段,通常是通过一台主机来承载所有的功能,包括Web服务和数据库服务。随着用户访问量的增长,单一主机的性能...
中大型网站架构的演变是伴随着互联网...综上所述,中大型网站架构演变是一个动态的、持续优化的过程,需要综合考虑多种技术要素,以及业务发展的不同阶段,通过不断的技术迭代和架构调整,来支撑业务的持续发展和扩展。
大型网站架构演变和知识体系 之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上...
### 大型网站架构演变知识点解析 #### 架构演变第一步:物理分离Web服务器与数据库 **背景**:随着网站的逐步发展,最初的单一主机难以应对不断增长的访问量及由此产生的性能瓶颈。 **解决方案**:将Web服务器与...
《大型网站架构演变和知识体系》是一本深入探讨构建与优化大规模互联网应用的权威文档。在互联网行业快速发展的今天,大型网站的架构设计已经成为技术团队面临的重大挑战之一。本书全面覆盖了从初期的小型网站到应对...
### 从运维角度看中大型网站架构演变之路 随着互联网的发展,中大型网站面临的挑战日益增多,这不仅体现在用户数量的增长上,还体现在对系统稳定性和性能的要求上。本文旨在通过一个具体的案例,来探讨中大型网站...
之前也有一些介绍大型网站架构演变的文章,例如LiveJournal的、ebay的,都是非常值得参考的,不过感觉他们讲的更多的是每次演变的结果,而没有很详细的讲为什么需要做这样的演变,再加上近来感觉有不少同学都很难...