大型网站架构设计思考

LK最近整理了一些常用的网站架构知识,希望和大家一起学习如下:

1.如何提升网站性能,可用性和并发量

  • 提升硬件性能。
  • 使用缓存(本地缓存,分布式缓存 redis)
  • 消息队列
  • 数据库分库(读写分离),分表
  • CDN
  • 集群(多台机器提供相同服务)

 

2.设计高可用系统的常用手段

  • 降级。---------服务器压力剧增的情况下,根据当前情况对一些服务和页面有策略的降级。
  • 限流。---------防止恶意请求流量,恶意攻击。
  • 缓存。-----------避免大量请求直接落入数据库。
  • 超时和重试机制。-----------避免请求堆积造成雪崩。

 

3.单体应用处理大流量问题

  • 扩容,提升硬件性能。
  • 水平或者垂直拆分数据,提升系统升缩性。
  • 重新设计架构。(极端情况)

 

4.大表优化

  • 限定数据范围:查询语句要提供查询范围。
  • 读写分离:主库写,存库读。
  • 垂直拆分;------数据表列进行拆分,一张列比较多的表拆分成多张表(按列拆分)

问题

  1. 主键冗余,join操作,事物变得复杂
  2. 行数据变小,减少查询列数,减少IO次数。易于维护。

  • 水平拆分;------数据行的拆分。表结构不变,按照某种策略存储数据分片。

问题

  1. 分片事物难以解决,join性能差,逻辑复杂。
  2. 存储数据多。优点

 

5.微服务

springcloud--是一个生态,一系列开源组建的集合

  • 服务发现
  • 配置管理
  • 限流熔断
  • 分布式链路

dubbo------成熟的RPC框架,易用性,成熟型,健壮性得到业界认可。

 

6.性能测试

  • 压力测试;超过安全负载情况下,不断施加压力,直到系统崩溃或无法处理任何请求,获得系统最大压力承受力。
  • 稳定性测试;被测系统在特定硬件,软件,网络环境下,加载一定压力运行,检测是否稳定。
  • 负载测试;在给系统施加较低压力时,查看系统的运行状况并记录相关数做为基础参考
  • 基准测试;对系统不断地增加压力或增加一定压力下的持续时间,直到系统的某项或多项性能指标达到安全临界值,例如某种资源已经达到饱和状态等 。此时继续加压,系统处理能力会下降。
发布了47 篇原创文章 · 获赞 18 · 访问量 5707

猜你喜欢

转载自blog.csdn.net/yuruizai110/article/details/95936798