网站架构演化----读书笔记 [ 2.0 版本 ]
大型网站特点
- 高并发,大流量
- 高可用(不宕机)
- 海量数据
- 用户分布广泛,网络情况复杂
- 安全环境恶劣(容易被攻击)
- 需求变化快,发布频繁
- 渐进式发展(不断迭代)
大型网站发展历程
初始阶段
一台服务器,应用程序、数据库、文件所有资源在一台服务器上。
应用服务和数据服务分离
随着用户增加,一台服务器不能满足需要。
网站服务器分为:
应用服务器:处理业务,需要更快更强大的CPU
文件服务器:磁盘检索和数据缓存,需要更快的硬盘和更大的内存
数据库服务器:储存用户上传的文件,需要更大的硬盘
使用缓存提高性能
数据库压力大。根据二八定律:80%的业务访问集中在20%的数据上。数据统计分析出常访问的数据,把这小部分数据缓存在内存,改善数据库压力。
缓存分为:
本地缓存:访问更快,容量有限,与应用程序争内存
分布式缓存服务器:采用集群,内存容量不受限
使用应用服务器集群改善网站并发能力
将用户的访问请求分发到集群的任何一台服务器。实现系统的可伸缩性。
数据库读写分离
利用数据库的主从热备功能。采用两台数据库服务器,一台主数据库负责写,一台从数据库读。通过设置,实现数据更新同步,实现读写分离
使用反向代理和 CDN 加速
由于不同地区的用户访问网站速度差别很大。
CDN和反向代理的基本原理是缓存。
CDN:部署在网络提供商的机房,用户在请求网站服务时,从距离自己最近的网络提供商机房获取数据。一般储存静态如CSS、JS、图片等静态资源。
反向代理:反向代理部署在网站的中心机房,请求到达中心机房后,首先访问的服务器是反向代理服务器,如果反向代理服务器中有缓存直接返回给用户。
使用分布式文件系统和分布式数据库
任何单一的服务器满足不了大型网站增长的业务需求。随着业务发展,必须使用分布式文件系统和分布式数据库
分布式数据库是网站数据库拆分的最后手段,只有单表数据规模非常庞大时才使用。网站更常用的数据库拆分手段是业务分库,将不同业务的数据部署在不通的服务器上。
使用 NoSQL 和搜索引擎
网站业务越来越复杂,需要用到 NoSQL 和搜索引擎。 应用服务器则通过一个统一数据访问模块访问各种数据,减轻应用程序管理诸多数据源的问题
业务拆分
将网站业务拆分成不同的产品线,如购物网站的首页、店铺、订单等拆分成不同的产品线。根据不同产品线,划分不同的应用。不同应用独立部署维护。应用之间通过超链接建立关系,或通过消息队列进行数据分发,最常用的还是通过访问一个数据储存系统构成一个关联的完整系统。
分布式服务
业务拆分越来越小,存储系统越来越庞大。系统整体复杂度越来越大。每一个应用系统要执行许多相同的业务操作。可以将固有的业务提取出来,独立部署。由这些可复用的业务连接数据库,提供共用业务服务,而应用系统只需要管理用户界面,通过分布式服务调用共用业务服务完成具体业务操作。
网站架构误区
一味追随大公司的解决方案
为了技术而技术(技术为业务服务)
企图用技术解决所有问题(12306网站访问问题)
石头杨
最后登录:2021-01-23
在线时长:13小时6分
- 粉丝39
- 金钱325
- 威望120
- 积分1655
共 1 条评论
怎么感觉和阿里的李智慧老师写的《大型网站技术架构》无差 ;不过还是lz还是很用心的在总结 赞一个
我也想说,哈哈