谈一谈大型网站架构的演进之路(一)

大型网站的特点

收到小伙伴的反馈,之前的知识文章篇幅太长,看之乏力。小编采纳建议,之后的文章尽量以通俗易懂,简短概述,长文拆分的方式进行。

进入正题,今天来聊一聊大型网站的搭建思想。与传统的企业应用系统相比,大型互联网应用系统,通常概括有以下几大特点:

1、大流量、高并发

2、高可用,保证系统24小时不间断运行

3、大数据集,需要存储和管理的数据繁多、巨多、超级多

4、用户分布广泛,网络情况复杂

5、安全环境恶劣(网络攻击、盗窃信息)

6、需求快速变更,发布频繁。(上午刚和产品经理干了一仗,下午又得琢磨者明天的殊死肉搏)

7、渐进式发展(从单一的小网站逐渐扩展为大型网站)

发展历程

大型网站的技术挑战来自于逐渐增长的用户,任一简单功能的业务,面对庞大的用户体量做分析处理,都会变得困难棘手。

初始阶段的网站架构

在许多的初创公司,成立项目,构建网站,在没有太多人访问的情况下,可能只需要一台服务器就足以支撑所有的服务。将应用程序、数据库、文件等所有的资源放在一台服务器上(通常使用Linux系统服务器)。

随着用户量的增多,结合用户的需求调研,项目的业务便进入了第二个阶段,迭代更新。一台服务器逐渐不能满足需求,比如数据的存储空间不足,比如用户访问的响应时长增加。这时,一般就会采取将应用和数据分离的办法,简单的理解可以将整个网站拆分为3台服务器:应用服务器、文件服务器、数据库服务器。通过这样的方式,根据不同的硬件资源要求,分配不同的硬件将其拆分开来。不同特性的服务器承担不同的服务角色,以支持网站业务的进一步发展。

使用缓存改善网站性能

做过开发的童鞋都清楚,绝大多数网站的业务,承载最多的一般都是读数据,而写数据所占比例相对少的多。因此,在业务访问较为集中的数据上,迭代的过程中将其优化至缓存当中,可以有效的减少对数据库的访问压力,提高网站的整体性能。并且,如果考虑增加一台缓存服务器,便可避免服务程序与缓存数据争抢内存的情况。

数据库的读写分离

随着数据的不断增多,当数据库称为瓶颈的时候,便可以开始考虑数据库层的读写分离措施。目前来看,绝大多数的主流数据库都提供了主从热备的功能,通过配置2台数据库服务器的主从,可将一台服务器的数据更新同步到另一台服务器上。实现数据的读写分离,从而改善数据库的负载访问压力。

集群措施

当这个“麻雀”五脏俱全之后,一个小型丰富的功能网站便见雏形。这样的产品,通过市场运营和推广,如果产品优良,用户体验较好,便逐渐的吸引更多的人关注和使用产品。

随着用户量的激增,结合市场反馈,团队便会采取一定的产品策略,对其进行下一步的迭代开发。当一台服务器的处理能力不够、存储空间不足的时候,使用服务器的集群方式来改善网站的并发处理能力就变得尤为重要和关键。

通过增加一台负载均衡的调度服务器,将来自于用户的访问请求,分发到应用服务器集群中的任意一台,从而使应用服务器的负载压力不再成为网站瓶颈。

市面上常见的一些负载均衡方法,如使用DNS负载均衡、Nginx反向代理、F5硬件负载均衡、Apache等等。当静态资源逐渐增多时,企业也会采取CDN的方法进行资源加载加速。

经历到这一阶段,一个中型的网站便已形成。

未完待续......

小结

有很多的朋友找我聊说大型的网站项目,对大型项目网站不知道如何着手,敬而远之。其实拆分细看,认真琢磨,并没有想象当中的那么遥不可及。小结一下,项目的发展历程:

->单一服务 

->分不同角色服务

->增加缓存

->数据层读写分离

->服务应用集群

->负载均衡

->CDN优化

好了,时间不多,今天就写到这里。元(猿)宵节到了,祝大家元(猿)宵节快乐!阖家幸福~

文章内容参考文献《大型网站技术架构 核心原理与案例分析》。

本公众号致力于做一个

非营利性质

技术资源共享交流平台

发布了77 篇原创文章 · 获赞 123 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/han0373/article/details/87872157