架构师训练营第八周总结
文件与硬盘 IO
两种硬盘
机械硬盘、固态硬盘
存储数据结构
B+树、LSM 树、文件控制块
RAID
RAID0、RAID1、RAID10、RAID3、RAID5、RAID6
分布式文件系统
HDFS
总结
如何提高磁盘 IO 的性能:
硬件层面:可以将机械硬盘换成固态硬盘、通过 RAID 提高磁盘可靠性和读写速率
逻辑层面:减少磁盘随机读写、通过索引提高文件检索效率
分布式:通过分布式文件存储突破磁盘整列的限制,理论上实现无限量文件的存储
数据结构与算法
复杂度
时间复杂度、空间复杂度
数据结构
数组、链表、Hash 表、栈、队列、树(二叉排序树、红黑树)
跳表(skip list):本质上就是给链表增加多级索引,避免线性搜索,需要额外占用索引空间
常用算法
穷举、递归、贪心、动态规划、遗传算法(模拟生物进化过程中染色体的交叉、变异过程,能够较快的获得较好的优化结果)
网络通信协议
网络协议分层
OSI 七层模型 TCP/IP 四层模型
“计算机领域的一切复杂问题都可以通过添加层来解决”
基于链路层、网络层、传输层均可实现负载均衡,往下效率越高,往上可定制性越强。
网络 IO 模型
阻塞式 IO
一个线程负责一个 Socket,当 Socket 发生 IO 阻塞时,对应的用户线程就会挂起,而线程资源是珍贵和有限的,阻塞式 IO 无法满足大规模的用户请求。
非阻塞式 IO
采用多路复用机制,使用单独线程处理 IO,用户线程不会阻塞。
总结
从 IO 和存储方面提升系统性能:
硬件和网络:机械硬盘升级到固态硬盘,RAID,升级网卡带宽,采用分布式文件存储
数据结构和算法:采用合适的索引提高搜索性能、采用合适的数据结构和算法
负载均衡:基于链路层、网络层、传输层实现负载均衡
IO 模型:使用 NIO 代替 BIO
评论