大型网站架构之大型网站的演变过程

大型网站的演变过程

现在网站面临的问题:
1.企业在网站技术上的进行了大量的投入,但总是在关键的时刻频繁宕机(高性能);
2.工程师夜以继日的加班工作,网站缺总是故障频繁、新功能上线缓慢(扩展性);
3.互联网快速发展多领域挑战传统行业,但却在网站的安全上频繁出错(安全性)。

大型互联网应用的特点:
高并发,大流量:需要面对高并发,大流量访问。
高可用:系统7*24小时不间断服务。
海量数据:需要存储、管理海量数据,需要使用大量服务器。
用户分布广泛,网络情况复杂:用户分布范围广,各地网络情况千差万别。
需求快速变更,发布频繁:互联网产品通常来说产品发布频率是极高的。
渐进式发展:产品是在业务环境下螺旋式发展的。

大型网站的发展历程

1.网站最初阶段:应用程序、数据库、文件等所有资源都在一台服务器上。

2.应用服务和数据服务器分离,通常会三种类型服务器:(兴业银行代客系统目前的阶段)

  • 应用服务器:需要处理大量的业务逻辑,因此需要强大的CPU
  • 数据服务器:需要快速磁盘检索和数据缓存,因此需要更快的硬盘和更大的内存
  • 文件服务器:需要存储大量用户上传的文件,因此需要更大的硬盘

3.使用缓存来改善网站的性能
网站的访问特点符合二八定律:80%的业务访问集中在20%的数据上。
采用本地缓存或者分布式缓存系统,能够把热数据放在性能更加优越的内存中。

4.使用应用服务器集群改善网站的并发处理能力(nginx负载均衡)
采用软件或者硬件的方式实现对业务请求进行负载均衡,从而达到不断改善系统性能,提升系统可伸缩性的目的。

5.数据库读写分离(相同的数据库可以使用它自己的特性进行主从热备,不同的数据库可以借助消息中间件来实现)
主流的数据库都提供主从热备功能,通过配置两台数据库主从关系,可以将一台数据库服务器的数据更新到另一台服务器上。
借助数据库主从热备的特点,从而改善数据库负载压力。

6.使用反向代理和CDN加速网站响应
由于信号传递的过程中是有延迟的,并且应用可能部署在不同地域的服务器上,所以把请求发送到最近的服务器,能够大大降低请求响应的延迟。
CDN和反向代理基本原理都是缓存,区别在于:

  • CDN部署在网络提供商的机房,使用户在请求网站服务器时,可以从距离自己最近的网络提供商机房获取数据。(缓存数据)
  • 反向代理则部署在网站的中心机房,当用户请求到达中心机房后,首先反向的服务器是反向代理服务器,如果反向代理服务器中缓存着用户请求的资源,就将其直接返回给用户。(缓存数据)

7.使用分布式系统和分布式数据库系统
分布式数据库是网站数据库拆分的最后手段,只有在单表数据规模非常庞大的时候才使用。
网站更常用的数据库拆分手段是业务分库,将不同业务的数据部署在不同的物理服务器上。

8.使用NoSQL和搜索引擎
采用NoSQL和搜索引擎技术,能够满足对数据存储和检索的需求。
应用服务器通过一个统一数据访问各种数据,减轻应用管理诸多数据源的麻烦。

9.分布式服务
1.采用中台的思想,可以将公共的业务提取出来,独立部署,以服务的形式进行调用。
2.采用微服务的思想,按照业务逻辑,对诸如用户管理、商品管理等业务模块进行拆分子系统,以服务的形式相互调用。
3.应用程序只要专注于界面的展示,业务通过调用服务来完成具体的业务操作。

架构的本质
业务成就了技术,正如事业成就了人,而不是相反。
在网站还很小的时候就去追求网站的架构是舍本逐末、得不偿失的。
小型网站需要做的就是为用户提供好的服务来创造价值,得到用户的认可,活下去,野蛮生长。

发布了226 篇原创文章 · 获赞 40 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/weixin_40990818/article/details/102327868