Kafka 特性:
- 具有近乎实时的消息处理能力 顺序读写磁盘
- 支持批量读写磁盘 并且会对消息进行批量压缩
- 支持消息分区 可以在线增加分区,为每个分区创建多个副本,只会有一个 Leader 负责读写,其他副本与 Leader 同步。
- 支持水平扩展
Kafka 特性:
聚集索引:在一张表中,如果一个索引有如下特性,数据的物理顺序与键值的逻辑顺序相同。
稠密索引和稀疏索引都属于聚集索引。
1.稠密索引
定义:它是由键值和指针(指向记录本身地址)组成的一系列存储块,该存储块的键值与文件的逻辑顺序一致。
特性:每个存储块的每一个键对应的指针都指向每个数据块每一条记录,当要查找指定键 K 时,采用二分查找即可找到键K对应的记录,复杂度为 log2n。
2.稀疏索引
定义:它是由键值和指针(指向记录本身地址)组成的一系列存储块,该存储块的键值与文件的逻辑顺序单调性一致。
特性:每个存储块的每一个键对应的指针都指向每个数据块的第一条记录,当要查找指定建 K 时,先采用二分查找找到 <=K 的键 S,如果 S=K,则命中记录,如果 S<k,则顺序查找 =K 的键,复杂度大于 log2n,小于 n。
比较:
在谈这俩概念前、先来说说大 I/O 与小 I/O。通常,我们把 <=16KB 的 I/O 认为是小 I/O。而 >=32KB 的 I/O 认为是大 I/O。
当前大多系统使用的都是传统的机械磁盘。因此,整个系统设计要尽可能顺序I/O。避免昂贵的寻道时间和旋转延迟的开销。随机小 I/O 消耗比顺序大 I/O 更多的处理资源。随机小 I/O 更在意系统处理 I/O 的数量,即 IOPS,比如 OLTP。而顺序大 I/O 则更在意带宽,即 MB/s,比如 OLAP。因此,如果系统承载了多种不同的应用,必须了解它们各自的需求,是对 IOPS 有要求,还是对带宽有要求。
传统机械磁盘最大的问题在于读写磁头,读写磁头的存在可以让磁盘既能顺序 I/O、也可随机 I/O。但是,随机 I/O 需要花费昂贵的磁头旋转和定位来查找。因此,顺序 I/O 访问的速度远远快于随机 I/O。
顺序读写 = 读取一个大文件
随机读写 = 读取多个小文件
顺序读写比随机读写快的原因:
1.基本概念
(1)磁盘组合
(2)磁头组合