性能优化 - 文件硬盘 I/O,数据结构算法,网络通讯
文件硬盘 I/O
存储金字塔
寄存器 CPU 中的 Regs 速度与 CPU 同步
SRAM 通电状态的话数据一直保持,断电数据丢失
DRAM 需要不断刷新但是实现复杂,导致访问效率低于 SRAM
SSD 固态硬盘
HDD 硬盘,指传统的机械硬盘
硬盘
HDD :
机械硬盘组成及细分
盘片
磁头
悬臂
磁道:
磁道分成扇区,盘面上同一扇区组成柱面
几何扇区与扇区
蓝色部分式扇区,几何扇区时到
指标参数
转速单位 RPM:每分钟旋转圈数
平均时延 把几何扇区对准悬臂的时间
7200 转磁盘 每秒 120 圈, 240 个半圈 1/240 = 4.17ms
5400 转磁盘 每秒 90 圈, 180 个半圈 1/180 = 5.55ms
平均寻道时间 :HDD 平均寻道时间在 4-10ms
一个 7200 转的磁盘找到一个数据需要 8-14ms 5400 转的需要 9-15ms, 对应的
7200 转的 IOPS 1/8ms = 125IOPS 到 1/14ms =70IOPS
5400 转的 IOPS 1/9ms = 111IOPS 到 1/15ms = 66IOPS
SSD
SSD 实现
SDD 使用了类似 SRAM,电容电压模式存放数据 , SDD 速度比传统磁盘速度快,但是耐用性差。
按照最小存储单位分为四类:
SLC
MLC
TLC
QLC
同样的存储单位上要存的数据位逐渐增大,内部操作复杂 速度也是逐步减慢。
SSD 就是一块电路板子,像下面这样。
SSD 单位是 Page, 删除单位 Block, SLC 的芯片,可以擦除的次数大概在 10 万次,MLC 就在 1 万次左右,而 TLC 和 QLC 在几千次左右。 这直接影响了其价格
SSD 优化
磨损均衡-FTL:通过引入中间层处理来自操作系统的请求,均衡各个磁盘块的读写请求。 如果一个物理块上数据擦写次数多, 可以将其移动到擦写请求少的物理块上。
TRIM 标识数据是否失效, 防止移动已经失效的数据
留存足够的空余空间,防止写入放大(为了写入一个数据要移动更多的数据)
存储数据结构
B+ 树
排序树,一个块存储多个数据,非叶子节点还存放指针,使用指针完成索引, 通过 4 级结构能访问几千万记录。 问题在于 数据块离散存储, 每次根据索引进行查找还是要进行多次读写。 性能较差。
一个简单的 B +树示例,将键 1–7 链接到数据值 d1-d7。 链接列表(红色)允许快速有序遍历
LSM 树
数据连续存储, 内存中构建树, 合并时以日志方式进行逐级合并。
存储管理
文件控制块 :
Linux inode/ windows FAT ,通过控制块记录数据元数据, 通过控制块获取数据块最终获取数据
通过多级索引可以访问更多的数据块。
RAID:
磁盘阵列:
HDFS
类比 linux 文件系统 NameNode 类似 iNode 节点 DataNode 类似 Blocks
数据结构算法
相关概念
时间复杂度
空间复杂度
NP 问题
P 问题:能在多项式时间复杂度内解决的问题。
NP 问题:能在多项式时间复杂度内验证答案正确与否的问题
数独和最短路径查找属于 NP 问题
数据结构
数组
链表
hash 表
队列
栈
树
二叉树
二叉排序树
平衡二叉树
旋转二叉树
红黑树
跳表
常用算法
穷举
递归
贪心 :改进:迪杰斯特拉算法
动态规划
遗传算法
网络通讯
通讯模型
OSI 模型:
应用层: Application Layer
表示层: Presentaion Layer
会话层: Session Layer
传输层: Transport Layer
网络层: Network Layer
数据链路层: Data Link Layer
物理层: Physical Layer
TCP/IP
应用层: Application Layer
传输层: Transport Layer
网络互联层: Internet Layer
网络访问层: Network Access(Link ) Layer
数据包格式 :
物理层:二进制数据
链路层:帧 数据链路层负载
网络层;IP IP 负责均衡
传输层:TCP 协议 三次握手, 四次挥手
应用层:
HTTP 1.0.
HTTP 1.1 复用链接 keepalve
HTTP 2 引入"流"
HTTP3 使用 QUIC 协议
通讯方式:
socket,端口
服务器-客户端
服务器多线程-客户端
服务器线程池-客户端
内核处理:
Socket linux 内核处理过
网络数据到达网卡
通过中断通知 cpu
拷贝数据到 Socket 接收缓冲
拷贝完成,唤醒线程 A
阻塞 I/O:
BIO Blocking I/O 一直等到操作完成。
非阻塞 I/O :
Java NIO
多路复用 select poll epoll
参考及引用
架构师训练营作业-李智慧老师相关讲义
徐文浩深入浅出计算及组成原理
Photo by Tatiana Syrikova from Pexels
评论