1. Kafka 简介

2018-12-11  本文已影响0人  GongMeng

1. 设计理念概述

Kafka和HBase的设计理念相同, 让整个消息队列系统尽可能的简单. 在这个基础上, 放弃了全局信息一致性, 放弃了维护全局唯一的读取进度的语义等等很多东西. 换来的是单点单CPU每秒2万条1KB message的吞吐量.


基本结构

上图是最常见的一个对kafka的描述图, kafka把自己的worker抽象成多个broker. 和其它的消息队列系统类似, 消息队列被描述成一个topic.

Kakfa的topic在底层是分散在多个broker上的parition, 每个parition物理上是文件系统中连续写的一系列的文件.

每个parition可以被多个producer写, 但同时只能被一个consumer读取.

这样保证了读写过程的都是顺序的批量读, 批量写. 结合文件系统, 把磁盘的性能拉倒极致, 在文件系统blocksize稍微大一点的情况下, 轻松可以拉到800M/s的吞吐.

Kafka为了能够把吞吐量拉高, 使用了sendfile()系统调用, 直接走内核态来写数据, 这样不过用户态可以少很多overhead. 数据在serializer之后一直以二进制流的形态在kafka系统中流动. 类似的优化后面在阅读代码中会看到很多.

Kafka借助zookeeper来维护整个拓扑结构和配置的一致性, 早期kafka依赖ZK来维护读进度, 在最新版本中这个工作由kafka的节点自己来承担.

2. 规划内容

上一篇下一篇

猜你喜欢

热点阅读