写点什么

架构师训练营第八周”性能优化二“总结

用户头像
随秋
关注
发布于: 2021 年 01 月 17 日

存储优化

存储介质

  • 机械硬盘:适合顺序读写,随机读写需要寻道,较慢

  • 固态硬盘:顺序、随机读写比机械硬盘快一个数量级

优化方案

针对磁盘读写较慢(相对内存等 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 等待相互阻塞。

用户头像

随秋

关注

还未添加个人签名 2018.04.27 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营第八周”性能优化二“总结