1 框架
Kafka是一种分布式的发布/订阅消息系统。主要设计目标如下:
- 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间复杂度的访问性能。
- 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条以上消息的传输。
- 支持Kafka Server间的消息分区,及分布式消费,同时保证每个Partition内的消息顺序传输。
- 同时支持离线数据处理和实时数据处理。
- Scale out:支持在线水平扩展。
从上图可以看到kafka的核心组件是Broker、Producer和consumer。
- Producer。向Kafka服务器发送/生产消息的组件。
- Consumer。从Kafka服务器取出/消费消息的组件。
- Broker。kafka服务器。接收Producer和Consumer的请求,并把Message持久化到本地磁盘。Cluster会选举出一个Broker来担任Controller,负责处理Partition的Leader选举,协调Partition迁移等工作。
以上组件在分布式环境下均可以是多个,支持故障转移。同时ZK仅和broker和consumer相关。值得注意的是broker的设计是无状态的,消费的状态信息依靠消费者自己维护,通过一个offset偏移量。
Broker内部维护着Topic和Partition。
- Topic。是划分Me