LK最近整理了一些常用的网站架构知识,希望和大家一起学习如下:
1.如何提升网站性能,可用性和并发量
- 提升硬件性能。
- 使用缓存(本地缓存,分布式缓存 redis)
- 消息队列
- 数据库分库(读写分离),分表
- CDN
- 集群(多台机器提供相同服务)
2.设计高可用系统的常用手段
- 降级。---------服务器压力剧增的情况下,根据当前情况对一些服务和页面有策略的降级。
- 限流。---------防止恶意请求流量,恶意攻击。
- 缓存。-----------避免大量请求直接落入数据库。
- 超时和重试机制。-----------避免请求堆积造成雪崩。
3.单体应用处理大流量问题
- 扩容,提升硬件性能。
- 水平或者垂直拆分数据,提升系统升缩性。
- 重新设计架构。(极端情况)
4.大表优化
- 限定数据范围:查询语句要提供查询范围。
- 读写分离:主库写,存库读。
- 垂直拆分;------数据表列进行拆分,一张列比较多的表拆分成多张表(按列拆分)
问题
- 主键冗余,join操作,事物变得复杂
- 行数据变小,减少查询列数,减少IO次数。易于维护。
- 水平拆分;------数据行的拆分。表结构不变,按照某种策略存储数据分片。
问题
- 分片事物难以解决,join性能差,逻辑复杂。
- 存储数据多。优点
5.微服务
springcloud--是一个生态,一系列开源组建的集合
- 服务发现
- 配置管理
- 限流熔断
- 分布式链路
dubbo------成熟的RPC框架,易用性,成熟型,健壮性得到业界认可。
6.性能测试
- 压力测试;超过安全负载情况下,不断施加压力,直到系统崩溃或无法处理任何请求,获得系统最大压力承受力。
- 稳定性测试;被测系统在特定硬件,软件,网络环境下,加载一定压力运行,检测是否稳定。
- 负载测试;在给系统施加较低压力时,查看系统的运行状况并记录相关数做为基础参考
- 基准测试;对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等 。此时继续加压,系统处理能力会下降。