目录
- 网络层
- 服务端顺序性保证
- API层
- 日志存储层
- 副本机制
- 实际使用
- 性能优化
- kafka学习
网络层
服务端顺序性保证
API层
日志存储层
- 顺序写入,避免了随机写入带来的随机寻址性能过慢问题
- kafka 0拷贝之类的。
- 压缩消息是端到端解压,服务端存储仍然是压缩的消息,消费者端才进行解压
- 存储Log有很多Log文件包括log数据和log稀疏索引(磁盘空间,内存空间,查找时间的折中方法)文件,topic-partition对应一个文件夹。LogSegment多个log文件。有可能有多个Handle写入Log所以写入时会有同步。
- Log使用跳表对多个LogSegment进行管理,因为LogSegment文件命名是与Offset相关,所以好定位,跳表找到对应LogSegement之后,再根据稀疏索引找到对应消息。可把书中图4-22找来说明。read日志操作就是这么搞的,read通过volatile+不可变对象实现线程安全
副本机制
- 高可用性保证
- ISR集合,HW,LEO
- 本地副本远程副本,比如leader副本需要维护几个复制副本,这时候leader副本需要更新本地副本的LEO, 也需要更新远程副本的HW信息,维护集群信息。
- 复制副本会启动线程同步LEO。
kafka学习
参考文章
- 《apache kafka源码解析》
todo - Kafka 日志存储
- 一文读懂Apache Kafka服务端设计
- Kafka技术内幕 读书笔记之(六) 存储层——服务端处理读写请求、分区与副本
- Apache Kafka服务端设计理念- 震惊了!原来这才是Kafka
网友评论