架构师训练营第八周”性能优化二“总结
存储优化
存储介质
机械硬盘:适合顺序读写,随机读写需要寻道,较慢
固态硬盘:顺序、随机读写比机械硬盘快一个数量级
优化方案
针对磁盘读写较慢(相对内存等 IO 介质)的问题,提出了各种优化方案
B+树
一种典型的加速访问方案,通过 B+树建立索引,快速定位到数据所在位置。应用场景如 MySql Innodb 索引。
LSM 树
LSM 树并不是一种数据结构,而是一种多级存储方案。写数据先写内存,内存缓冲区满持久化到磁盘。读先读内存,如果内存有数据返回结果,否则再请求磁盘。
通过内存作为缓存加速,能够提高数据读写速率。
内存、磁盘内部也会采取合适的数据结构,加速读写速度,如树、跳表之类
LSM 树对写数据相对更友好
典型使用场景如 Hbase
RAID 磁盘阵列
将多块磁盘通过一定策略组合在一起,统一对外提供服务。
HDFS
一种分布式文件文件系统
master/slave 架构,主节点调度,从节点存储
数据采用多备份方式,即一个文件块会在不同的机器存储备份,提高可用性
数据块比普通的文件系统数据块更大,更适合处理大数据
常见数据结构与算法
个人认为这部分是程序员基本功,从大学时代就开始培养,工作后更是不能落下的能力。
常见数据结构
数组
链表
Hash 表
栈
队列
树
二叉排序树
平衡二叉树
红黑树
跳表
常见算法
穷举
递归
贪心
动态规划
遗传算法
网络通信协议
OSI 七层模型和 TCP/IP 四层模型
前面的课程提到过负载均衡算法,可以是数据链路层的负载均衡,也可以在网络层(IP 层)负载均衡
TCP 三次握手与四次挥手
HTTP 协议版本
1.0,每次数据传输都要新建立连接
HTTP/1.1,TCP 可复用
HTTP/2 更高效的复用 TCP 连接允许将不同的 HTTP 并发地复用到同一 TCP 连接上
HTTP/3 使用 QUIC 作为会话的传输层,多个 QUIC 流可以复用一个连接,同时之间相互独立。
非阻塞网络 I/O
普通的网络通信,建立连接-传输数据-处理数据-断开连接,中间串行,阻塞后一直等待,不能处理其他请求
多线程机制,每个线程处理一个请求。但是受限于线程数据量
线程池机制,省去了线程创建工作,提供效率,但没有解决线程数量限制问题
NIO 多路复用,通过 epoll 机制,单个线程就可以处理一个多个请求,中间不会因为 IO 等待相互阻塞。
评论