kafka
消息队列(消息中间件)作用:
- 解耦:生产者和消费者实现间接对接,生产者不用等待消费者,消费者也不用放弃手中的事情而先去消费。
- 异步:生产者将消息放入消息队列后可以去做别的事情。提高了工作效率。
- 削峰:假如一个时间段内消息量暴增,比如在批量处理一些数据的时候,这时消费者可能不能瞬间处理这些消息,所以我们可以把消息暂存在消息队列中,依次处理,同时生产者那边也可以不用等待。
- Kafka采用的是:主动pull,即Producer将消息推送到broker,Consumer主动从broker拉取消息进行消费
- 原因主要有以下两点:
- 首先,主要是避免push模式下,当Producer推送的速率远大于Consumer消费的速率时,Consumer承受不住压力而崩溃或消息丢失而重新推送,浪费资源
- 再者,Push模式下,Broker不知道下游Consumer消费能力和消费策略的情况下,不知道采用立即推送单条消息还是缓存并批量推送,因此采用哪种策略可能都不合适。而Pull模式下,Consumer可以自主决定是否批量的从broker拉取数据,根据自己的消费能力去决定数据拉取策略。
- 原因主要有以下两点:
- 各组件
-
Topic:消息主题,可以理解为消息的分类(比如车辆审核,车辆消息变更),kafka的数据就保存在topic。在每个broker上都可以创建多个topic。
-
Par
-