大型网站质量属性优先级:高性能 高可用 可维护 应变 安全
一、单体架构
应用程序,数据库,文件等所有资源都在一台服务器上。
二、垂直架构
应用和数据分离,使用三台服务器:应用服务器、文件服务器、数据服务器
应用服务器:处理大量的业务逻辑,需要更快更强大的处理器
数据服务器:需要快速磁盘检索和数据缓存,需要更快的磁盘和更大的内存
文件服务器:存储用户上传的文件,需要更大容量的硬盘
三、使用缓存改善网站性能
80%的业务访问集中在20%的数据上。将常用的数据进行缓存,可以减少数据库的访问压力,提高整个网站的数据访问速度,改善数据库的写入性能。
缓存分为:缓存在应用服务器上的本地缓存和缓存在专门的分布式缓存服务器上的远程缓存。
本地缓存:访问速度快,但受应用服务器内存限制,可以缓存的数据量有限,且存在和应用程序争内存的情况。
远程缓存:可以使用集群,缓存的数据量不受限制
四、使用服务集群改善网站并发处理能力
增加应用服务器的数量,分担访问和存储的压力,解决高并发和海量数据访问问题。通过负载均衡服务器,将用户请求分发到对应的应用服务器上。这种架构下, 负载均衡服务器的性能可能会称为系统性能的瓶颈。
负载均衡技术:
应用层负载均衡技术:
1. http重定向:用户请求已经找到了HTTP重定向的服务器,服务器根据算法返回
重定向地址。特点:实现简单,性能较差
2. 反向代理服务器:用户请求到反向代理服务器,由反向代理服务器根据算法确定
将请求转发到哪个地方服务器。特点:部署简单,负载均衡代理服务器的性能可能成为
系统瓶颈
传输层负载均衡技术:
1. DNS域名解析负载均衡:DNS解析时直接返回负载均衡后的IP地址。特点:效率
比应用层高,可以降低负载均衡服务器的维护。缺点是会被缓存,当访问不可用时无法
及时感知。
2. 基于NAT(网络地址转换协议)的负载均衡:将一个外部IP映射为多个IP,每次
请求动态选择一个内部节点的地址。特点:技术成熟,一般在网关的位置,可以通过硬
件实现(四层交换机)
负载均衡算法:
静态算法(不考虑服务器的动态负载):
1. 轮转算法:依次转发请求
2. 加权轮转算法:考虑不同节点资源的差异
3. 源地址哈希散列算法:根据请求的IP地址计算转发的节点
4. 目标地址哈希散列算法:根据请求目的IP地址计算节点
5. 随机算法:随机分配
动态算法(考虑服务器的动态负载):
1. 最小连接数算法:请求转发给当前连接数最小的服务器
2. 加权最小连接数算法:在最小连接数算法的基础上考虑节点的处理能力
3. 加权百分比算法 :考虑节点的利用率、硬盘速率、进程个数等综合考虑
负载均衡的实现:
硬件:F5,四层交换机
软件:LVS、nginx、HAproxy
五、数据库读写分离
使用数据库主从模式优化数据库读写性能,主从模式可以是一主多从,也可以是多主多从,主库做些操作,从库做读操作。
数据库主从同步步骤:
1. 主库更新数据完成前,将操作写入binlog日志文件
2. 从库打开IO线程与主库连接,做binglog dump process操作,并将事件写入中继日志
3. 从库执行中继日志时间,同步数据。
六、使用反向代理和CDN加速网站响应
CDN和反向代理的基本原理都是缓存。可以加快用户的访问速度,减轻后段服务器的访问压力,CDN部署在网络提供商的机房,在距离用户最近的公网上
七、使用分布式文件系统和分布式数据库
八、使用NoSQL和搜索引擎
九、业务拆分
十、分布式服务
十一、常见的Web应用服务器
Web应用服务器的职能:
1. 接收浏览器的请求,返回页面视图
2. 处理业务逻辑
常见的Web应用服务器:
1. Apache:能运行在各种OS上
2. IIS:早期小规模网站
3. Tomcat:开源、运行Servlet和JSP Web应用,基于Java
4. JBOSS:基于J2EE的开源应用服务器,一般雨Tomcat或Jetty一起使用
5. 其他:WebSphere、WebLogic、Jetty
十二、响应式Web设计
响应式Web设计 是一种网络页面的设计布局:可以智能的根据用户行为以及设备环境进行布局的调整。
方法和策略:
1. 流失布局和弹性设计:页面元素使用相对单位而非固定大小
2. 响应式图片:图片根据设备大小等比例缩放或调整分辨率