- kafka是什么?
- kafka又称为消息中间件:消息中间件利用高效可靠的消息传递机制进行平台无关的数据交流,并基于数据通信来进行分布式系统的集成。通过提供消息传递和消息排队模型,它可以在分布式环境下扩展进程间的通信。
- 消息中间件的作用:
- 业务的解耦
- 日志的收集
- 流量削峰
- 事务最终一致性
- 消息队列:
- 消息和队列,一种消费者生产者模型
- 一个典型意义上的消息队列至少需要包含消息的生产者(filebeat)、中间件(kafka)、消费者(python程序)
- 消息队列的通信模式
- 点对点模式
- 发布订阅模式
- 集群:
- 高可用:提高系统可用性,一台坏了,还有其他的可以用
- 负载均衡:平衡机器压力
- kafka的优点:
- 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,他的延迟最低 只有几毫秒
- 可扩展性:kafka集群支持热扩展
- 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份放至数据丢失
- 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败
- 高并发:支持数千个客户端同时读写
- Producer:Producer即生产者,消息的产生者,是消息的入口
- Broker:是kafka的实例,每个服务器上有一个或多个kafka的实例,我们姑且认为每个broker对应一台服务器。 每个kaka集群内的broker都有一 个不重复的编号,如图中的broker-0,broker-1等...
- Topic:消息的主题,每个topic可以有多个分区,, kafka的数据就保存在topic. 在每个broker,上都可以创建多个topic。
- Partition:Topic的分区,每个Topic可以有多个分区。分区的作用是做负载,提高kafka的吞吐量。同一个topic在不同的分区的数据是不重复的, parttion的表现形式就是一个一个的文件夹!
- Replication每一 个分区都有多个副本,副本的作用是做备胎。当主分区( Leader )故障的时候会选择一个备胎(Follower工位,成为Leader,在kafka中默认副本的最大数量是10个,且副本的数量不能大于Broker的数量, follower和leader绝对是在不同的机器,同一机器对同一个分区也只可能存放一个副本 (包括自己)。
- Message:每一条发送的消息主体。
- Consumer :消费者,即消息的消费方,是消息的出口。
- Consumer Group我们可以将多个消费组组成一个消费者组 ,在kafka的设计中同-一个分区的数据只能被消费者组中的某一个消费者消费。 同一个消费者组的消费者可以消费同一个topic的不同分区的数据,这也是为了提高kafka的吞吐量!
- Zookeeper : kafka集群依赖zookeeper来保存集群的的元信息,来保证系统的可用性。