高并发通用设计逻辑: 定位单点,拆分问题
架构调整的顺序:
- 动静分离
// 没有实现动静分离
// 静态请求 交给 nginx或者 httpd 这种对于静态资源处理效率更高的服务,动态请求 交给php-fpm 服务来处理
使用云服务提供商 (阿里云 / 华为云等属于公有云服务商)提供的CDN 服务,将静态资源部署到CDN 中托管,也可以实现动静分离
- 缓存技术
varnish / squid / nginx等较为知名的缓存加速软件,进一步加速网站响应速度
加入缓存之后,因为缓存服务一般将数据缓存内存中,数据处理的速度更快,因为数据缓存在内存中,所以也不需要在文件系统中定位请求资源的路径,省去与文件系统和磁盘读写的时间。
设置数据库交互缓存。redis提供数据库的读请求缓存。
- 队列(消息队列) 流量削峰平谷 服务解耦(微服务)
- 异步处理 服务的事务处理模型
- 服务隔离 服务隔离后,就属于分布式部署
- 物理隔离 // 分离到不同的物理服务器中
- 逻辑隔离 // 虚拟化技术 以及容器技术(计算资源面对高并发时的处理逻辑)
- 水平扩展
- 负载均衡
- 集群高可用
- 数据库的水平扩展
- 读写分离
- 负载均衡调度
- 数据一致性
- 分表分库
- 异地数据库部署方案 (根据地区部署数据库,将该地区的热点数据保存到地区中)
- 监控访问数据
- 平均响应时间
- QPS
- 慢查询日志
- 记录客户端分布
- 通过管理手段来预估可能的并发数量
- 临时促销活动等
- 弹性调度 临时资源的租用,临时活动结束后将结束租用。
基础设施高并发
目的: 提高基础硬件使用率主要是cpu 避免软件性能瓶颈
通过隔离软件运行环境实现,主要是虚拟化技术:
- 硬件虚拟化 vmware 等
- 指令集虚拟化 qemu
- 运行库虚拟化 docker等容器技术
- 容器编排平台K8S