面试题一: 如 何 提 高 系 统 的 响 应 速 度 ?
分析: 前端(浏览器)发起请求,服务器返回响应,响应速度越快,表示服务器性能越高,提高系统的响应速度,要思考影响系统响应速度的因素有哪些?
- 请求数据的传输时间
- 服务器处理数据的时间
- 响应数据的传输时间
- 响应数据的渲染时间
答:
1.请求数据的传输:硬件方面提升带宽;软件方面同样带宽下传输数据,数据量越小,传输速度越快,所以要压缩数据(vue.min.js)
2.服务器处理数据:硬件方面提升cpu,硬盘,内存,性能;架构层面,在数据库获取数据(sql调优),tomcat处理数据时,添加缓存层,重复数据避免再次查询,转而在缓存中获取数据.
3.响应数据的传输时间:硬件方面同上,架构层面,浏览器端加载数据时,添加本地缓存
4.响应数据的渲染时间:减少需要渲染的元素个数,即通过ajax异步加载,实现局部刷新
面试题二:什么是分布式系统,为什么要使用分布式系统?
答:系统中多个模块在不同服务器上部署即为分布式系统,如Tomcat和数据库分别部署在不同的服务器上,或两个相同功能的Tomcat分别部署在不同服务器上。
- 扩容:增加系统可承载数据容量
- 保证系统持续对外提供服务(高可用)系统中部分节点失效时,其他节点能够接替它继续提供服务
- 提升系统性能(后续展开)
面试题三:如何提高系统可用性?
影响因素:
1️⃣ 无计划的系统故障
- 系统级故障:包括主机、操作系统、中间件、数据库、网络、电源以及外围设备。
- 自然灾害、人为破坏,以及供电问题等。
2️⃣ 有计划的日常任务:
- 运维相关:数据库维护、应用维护、中间件维护、操作系统维护、网络维护。
- 升级相关:数据库、应用、中间件、操作系统、网络,包括硬件升级
归类:
- 网络问题:网络链接出现问题,网络带宽出现拥塞等
- 性能问题:慢 SQL、Java Full GC、硬盘 IO 过大、CPU 飙高、内存不足等
- 安全问题:被网络攻击,如 DDoS 等。
- 运维问题:系统总是在被更新和修改,架构也在不断地被调整,监控问题等
- 管理问题:没有梳理关键服务及服务的依赖关系,运行信息没有和控制系统同步等
- 硬件问题
- 集群: 一个特定领域的软件部署在多台服务器上并作为一个整体提供一类服务,这个整体称为集群。在常见的集群中,客户端往往能够连接任意一个节点获得服务,并且当集群中一个节点掉线时,其他节点往往能够自动的接替它继续提供服务,这时候说明集群具有高可用性。
- 负载均衡: 代理按照某种规则将请求分发到不同服务器上(轮询,权重,hash绑定)