-------------------Kafka---------------------
一、Kafka是什么
kafka一般用来缓存数据。
1、开源消息系统
2、最初是LinkedIn公司开发,2011年开源。2012年10月从Apache Incubator毕业。
项目目标是为处理实时数据,提供一个统一、高通量、低等待的平台。
3、Kafka是一个分布式消息队列。
消息根据Topic来归类,发送消息 Producer,接收 Consumer。
kafka集群有多个kafka实例组成,每个实例成为broker
4、无论是kafka集群,还是 producer consumer 都依赖于 zookeeper 集群保存元信息,来保证系统可用性。
二、消息队列
点对点
发布、订阅模式
三、为什么需要消息队列
1、解耦
2、冗余
消息队列把数据进行持久化,直到他们已经被完全处理。
3、扩展性
4、灵活性
5、可恢复性
6、顺序保证(相对)
kafka保证一个Partition内部的消息有序。
7、缓冲
8、异步通信
很多时候,用户不想也不需要立即处理消息。
消息队列提供异步处理机制,允许用户把消息放入队列,但不立即处理。
四、Kafka架构
1、Producer 消息生产者,就是往kafka中发消息的客户端
2、consumer:消息消费者,向kafka broker中取消息的客户端。
3、topic 理解为队列。
4、Consumer Group 消费者组
组内有多个消费者实例,共享一个公共的ID,即groupID。
组内所有消费者协调在一起,消费topic。
每个分区,只能有同一个消费组内的一个consumer消费。
5、broker
一台kafka服务器就是一个broker
6、partition:一个topic分为多个partition
每个partition是一个有序队列。
kafka保证按一个partition中的顺序将消息发送个consumer。
不能保证topic整体有序
7、offset:Kafka存储文件按照offset.kafka命名。
原文地址:https://www.cnblogs.com/jareny/p/10799799.html