绑定完请刷新页面
取消
刷新

分享好友

×
取消 复制
必看!大型网站架构的演化过程
2020-05-20 15:43:43

大型网站架构的演化过程


大型网站的技术挑战主要来自于庞大的用户,高并发的访问和海量的数据,任何简单的业务一旦需要处理数以P计的数据和面对数以亿计的用户,问题就会变得很棘手。大型网站架构主要就是解决这类问题。

1.初始阶段的网站架构

  • 大型网站,都是从小型网站发展,逐步演化而来的。
  • 开始访问量小,应用程序、数据库和文件等都在同一台服务器上。


2.应用服务和数据服务分离
随着越来越多用户的访问,单台服务器可能出现内存不足、磁盘空间不足、CPU使用率过高等问题。
因此,我们将应用和数据进行分离:

  • 应用服务器:使用更快更强大的CPU,处理大量的业务逻辑;
  • 数据库服务器:使用更快的硬盘加速磁盘检索,更大的内存进行数据缓存;
  • 文件服务器:使用更大的磁盘空间,以满足用户上传的大量文件。


3.使用缓存改善网站性能

  • 随着用户的增多,数据库压力太大,导致访问延迟,影响网站整体体验。
  • 由于大部分的业务访问集中在一小部分数据上,可以将这部分数据缓存起来。提升查询性能,降低数据库的访问压力。


4.应用服务器集群改善的并发处理能力
单一应用服务器的处理能力有限,通过增加服务器来分担访问压力,使用负载均衡进行请求分发。


5.数据库读写分离

  • 在网站的用户数达到一定规模后,全部的写操作,和部分读操作(缓存不命中、过期),将会导致数据库负载过高。
  • 通过数据库的主从热备,主从数据同步,实现对数据库访问的读写分离。为了使读写对应用透明,通常会使用专门的数据访问模块。


6.使用反向代理和CDN加速网站响应
由于中国复杂的网络环境,不同地区的用户访问网络时,速度差别极大。
有研究表明,网站访问延迟和用户流失率正相关。

  • 使用CDN缓存网站数据,让用户从距离自己近的网络提供商机房获取数据;
  • 增加网站反向代理,当用户访问网站时,请求首先到达反向代理,如果缓存数据存在则直接返回。


7.使用分布式文件系统和分布式数据库系统

  • 任何强大的单一服务器都满足不了大型网站持续增长的业务需求。
  • 数据库和文件系统遇到了瓶颈,我们需要使用分布式数据库和分布式文件系统。


8.使用NoSQL和搜索引擎

  • 随着网站业务越来越复杂,对数据存储和检索的需求也越来越复杂。
  • 通过引入NoSQL和搜索引擎,可以更灵活高效的存取数据和对网站内容进行快速搜索。


9.业务拆分

  • 为了应对日益复杂的业务场景,通常会将网站分成不同的产品线。
  • 根据产品线将网站分成许多不同的应用,每个应用进行独立部署。


10.分布式服务
随着业务拆分得越来越小,存储系统越来越庞大,应用系统的整体复杂度呈指数级增加,部署维护越来越困难。所有应用和所有数据库进行连接,导致数据库连接资源不足。

  • 解决办法是,将共用的业务抽出来独立部署,提供共用的业务服务给上层应用系统调用。
  • 例如将用户管理、商品管理等抽取出来,由这些服务来连接数据库,上层应用系统负责管理与用户界面相关的业务逻辑。


后记

  • 如果能控制住并发访问的量,很多棘手的技术问题也就不是什么问题了。
  • 技术是用来解决业务问题的,而业务的问题,也可以通过业务的手段去解决。
  • 过理解已成熟的网站架构技术方案的来龙去脉和历史渊源,在技术选型和架构决策时才能有的放矢,直击要害。
作者:二进制之路
链接:juejin.im/post/5e59b281
分享好友

分享这个小栈给你的朋友们,一起进步吧。

数据架构
创建时间:2020-05-20 11:23:41
有关数据架构的小栈里面全都有
展开
订阅须知

• 所有用户可根据关注领域订阅专区或所有专区

• 付费订阅:虚拟交易,一经交易不退款;若特殊情况,可3日内客服咨询

• 专区发布评论属默认订阅所评论专区(除付费小栈外)

技术专家

查看更多
  • 小雨滴
    专家
戳我,来吐槽~