一).大型软件系统的特点
1.高并发
2.高可用
3.海量数据
4.用户分布广泛,网络情况复杂
5.安全环境恶劣
6.需求快速变更,发布频繁
二).大型网站架构发展历程
1.应用服务和数据服务分离
2.大量使用缓存改善网站性能(CDN加速、反向代理)
3.使用服务器集群改善网站并发能力
4.数据库读写分离
5.分布式文件(数据库)系统
6.NoSql与非数据查询技术(搜索引擎)
7.业务拆分(横向、纵向)
三).大型网站架构的价值观
1.核心价值: 渐进式
2.主要动力: 业务发展
3.设计误区:
1).一味追求大公司的解决方案
2).为了技术而技术(不管是否适用,追求时髦,什么新用什么)
3).企图用技术解决所有问题(有时候好的业务架构要比技术架构更加重要)
四).技术架构要实现的目标(核心要素):
1.高性能
1).性能问题是网站优化升级的触发器
2).前端常用优化方法:浏览器缓存 页面压缩 合理布局 减少cookie传输 CDN 反向代理
3).后台常用优化方法: 服务器本地缓存 分布式缓存 消息队列 集群 数据库优化手段(索引、缓存、sql优化) NoSql
2.可用性
1).主要问题: 服务器宕机
2).解决手段: 冗余备份
3.伸缩性
1).大型网站面临的问题: 高并发访问、海量数据存储
2).解决手段:
构建集群: 应用服务器集群、缓存服务器集群、数据库服务器集群
4.扩展性
1).事件驱动架构
消息队列(观察者模式)
2).分布式服务
业务与可复用服务相分离(模块化)
5.安全性
1).防范各种攻击窃密手段
2).网站架构主要的几种模式:分层,分割 分布式 集群 缓存 异步 冗余 自动化 安全
一.
1.开发人员和用户看待性能的角度不同
2.性能测试指标
1).响应时间
送发出请求到收到响应所经过的时间
2).并发数
单位时间同时处理请求数
3).吞吐量
单位时间处理请求数
4).性能计数器
描述服务器或操作系统性能的一系列数据指标
3.性能测试方法
1).性能测试
处理能力与并发数成正比
2).负载测试
处理能力增长缓慢,达到最大负载点
3).压力测试
处理能力反而下降,达到崩溃点
4).稳定性测试
长时间不均匀地对系统施加压力
4.前端性能优化
1).减少http请求
2).使用浏览器缓存
3).启用压缩
4).使用正确的文件加载方式
5).减少cookie传输
6).CDN加速(缓存)
部署在网络运营商机房(网路第一跳)
7).反向代理(缓存)
5.应用服务器性能优化
1).分布式缓存(网站性能优化第一定律:优先考虑使用缓存)
缓存的基本原理:
1.将数据存储在较高访问速度的存储介质中
2.本质是一个 内存(读取速度快吗不是)Hash表(查询速度快吗不是)
合理使用缓存:
1.不要缓存频繁修改的数据
2.要遵循二八定律,不要缓存低命中的数据
3.要注意 缓存的时效性 引起的问题
缓存可用性:
1.通过将缓存数据分布在集群中,当一台缓存服务器宕机时,从而防止全面更新缓存引起的性能消耗
2.对于已知的热点数据直接加载好(缓存预热),而不需使用LRU不断筛选预热
3.预防缓存穿透(攻击者不断请求某个不存在的数据,从而穿透缓存服务器,对数据库服务器造成极大的压力)
分布式缓存架构(分为两类):
1.数据相同,同步更新(JBoss Cache)
2.Memcached:
简单的通讯协议(缓存客户端与缓存服务器)
丰富的客服端(支持多种语言)
高性能网络通信(支持事件触发)
高效内存管理(固定空间分配)
互不通信的服务器集群架构(客户端路由算法: 一致性Hash算法)(无限制线性伸缩)
2).异步操作
使用 消息队列 将 调用 异步化
1.用户的数据在发送给消息队列服务器后 立即返回
2.消息队列服务器 中的消费者进程从消协队列中获取数据异步写入数据库
3.达到了削峰作用(削平高峰时期的并发任务)
4.无法在返回时告知用户成功信息
3).使用集群
在网站高并发访问的场景下,使用负载均衡技术为一个应用构建一个由多太服务器组成的服务器集群,将并发请求分发的多台服务器上处理,避免单一服务器因负载压力过大而响应缓慢,使用户具有更好的响应延迟特性
4).代码优化
多线程
1.利用多线程io阻塞与执行,可最大限度地利用cpu资源
注意:
1.将对象设计为无状态对象
2.使用局部对象
3.并发访问资源时使用锁
资源复用
1.单例模式
2.对象池(减少对象创建删除引起的资源消耗)
3.合适的数据结构
4.合理的GC
6.存储性能优化
硬件技术
存储结构技术
磁盘读写技术
那么高性能架构具体该学习什么技术呢,以下是我整理出来的思维导图:
最后送福利了,现在加群即可获取高清大图 群号:923116658 里面还有Java工程化 、高性能及分布式、高性能、高架构、性能调优、Spring、MyBatis、 Netty源码分析等多个知识点高级进阶干货的相关视频资料,还有spring和 虚拟机等书籍扫描版,还有更多面试题等你来拿。