网站架构要素

性能
现象
- 网站慢,响应时间,TPS
最佳实践:
浏览器:
- 浏览器缓存、页面压缩、减少cookie传输,减少http请求,合并CSS,图片,JS,启用压缩
网络:
- CDN,反向代理,缓存热点文件
服务器:
- 缓存数据(分布式缓存、服务器本地缓存)
- 异步操作
- 通过消息消除峰值
- 多线程:主要包括将对象设计为无状态对象;使用局部变量;并发访问资源时使用锁;使用线程池来减少创建线程带来的消耗
- 内存优化:通过对象池减少对象穿件和资源消耗,例如数据库连接池;注意对象引用导致的垃圾回收:年轻代(Eden ,From,To)[Young GC],年老代[Full GC]
数据库:
- 建立索引、缓存,SQL优化,分库分表;根据具体场景使用不同类型的数据库。
可用性
可用性主要指系统的总可用时间,包括 计算高可用和存储高可用
解决方法:
- 冗余,服务部署多台,出现故障的从路由中移除
实践经验
- 分级管理、服务隔离、优先响应
- 超时设置
- 服务降级
伸缩性:
主要指可以通过不断向集群中加入新的服务器来缓解访问压力
主要指标:
- 是否很容易的将新服务器加入到集群
- 新的服务器是否能够提供无差别的服务
技术点:
- 应用服务器集群:无状态,
- 缓存服务器集群:改进缓存路由算法
- 数据库集群:分库分区
扩展性:
良好的扩展性主要表现在系统架构能快速响应需求变化
最佳实践:
- 事件驱动架构:通过消息队列来解耦各个业务子系统
- 分布式服务:将业务和可复用服务分离