一、概述
1、kafka是什么
Kafka是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调 的,发布/订阅模式的消息队列(Message Queue)。
Kafka主要设计目标如下:
- 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能
- 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输
- 支持Kafka Server(Kafka Broker)间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输
- 同时支持离线数据处理和实时数据处理
- Scale out:支持在线水平扩展
2、消息队列
(1)消息队列应用场景/好处
- 解耦:上下游应用不在紧耦合,两边只要约定好消息格式或者规范即可
- 可恢复性:系统的一部分组件失效时,不会影响到整个系统
- 异步通信:允许用户把消息放入队列,但并不立即处理它
- 扩展性
- 削峰填谷
(2)两种模式
- 点对点模式:1对1,消费者主动拉取消息,消息接收到后删除消息
-
发布/订阅模式:1对多,消费者收到消息之后不会删除消息