架构目标
高性能:提供快速的访问体验
高可用:网站服务一直可以正常访问
可扩展:方便的通过新增/移除方式,增加/减少新的功能/模块
可伸缩:方便的增加/减少硬件设备,提高/降低对外服务能力
安全性:提供网站数据安全存储和对外加密
敏捷性:随需应变,快速响应
网站架构模式-实现途径
分层
客户端层:表现为浏览器,以及APP应用
前端优化层:在此层可以对客户端层做优化
浏览器优化<span style="font-size: 13px;"><br></span>
减少http请求数
使用浏览器缓存
启用压缩
减少cookie传输
异步加载
DNS负载均衡
CDN加速
反向代理
服务层:提供公共服务,比如说价格服务,用户服务,库存服务等
数据存储层
<span style="font-size: 18.018px;">关系型数据库集群</span>
读写分离
分库分表
大数据存储层
收集应用层数据
收集服务层数据
使用关系型DB和NoSQL数据库存储数据
分布式文件系统
分割:将业务按照功能/模块/业务特点进行分割
分布式:将应用分开部署,使用远程调用协同工作的方式来进行通信管理
集群:将一个应用/模块/业务功能部署多份,通过负载均衡方式对外提供服务
缓存:将数据放在离用户最近或者访问最快的位置
异步:使用请求-响应-通知模式,将同步响应改成异步处理完成之后进行通知
冗余:增加副本,提供数据安全性,以及可用性
安全:对已知问题有成熟的解决方案,对潜在的风险有充足的防御机制
自动:将重复的,不需要人工干预的交给机器完成
敏捷:积极接受需求变更,快速响应
高性能解决之道
特点
较短的响应时间
较高的并发处理能力
较大的吞吐量
稳定的性能参数指标
前端优化
应用层优化 <br>处理网站业务的服务器。使用缓存,异步,集群
代码优化
合理的架构,多线程,资源复用(对象池,线程池等),良好的数据结构,JVM调优,单例,Cache等
存储优化
缓存,固态硬盘,光纤传输,优化读写,磁盘冗余,分布式存储(HDFS),NOSQL
可伸缩
不改变原有架构设计基础之上,通过增加/减少硬件的方式,提高系统对外服务能力
scale up VS scale out
应用层:垂直/水平分割
对单一功能进行负载均衡(DNS,HTTP[反向代理],IP,链路层)
服务层: 减小服务粒度,分布式部署,负载均衡
数据层:分库分表