什么是Kafka?
Apache Kafka是一个分布式流媒体平台,允许你发布和订阅记录流,允许你以容错方式存储记录流,允许你处理数据流。或是说Kafka是一个分布式、支持分区、多副本的,基于zookeeper协调的分布式消息系统。那自己眼中的kafka是什么?
Kafka的术语
Topic(主题):特指Kafka要处理的记录源的分类,每一类记录称为一个topic,每一个记录由一个key、value和timestamp组成。
Broker:Kafka集群中的一台或多台服务器(即kafka节点)。
Producer(生产者):向kafka的一个Topic发送记录的过程。producers往某个topic上发布记录时将负责选择发布到topic的哪一个partition上,最简单的方式是从分区列表中轮流选择,也可以根据某种算法依照权重选择分区。
Consumer(消费者):订阅Topic并处理该Topic发布的记录的过程。
Partition(分区):topic物理上的分组,每个Topic包含一个或多个Partition,每个Partition是一个有序的队列。
Consumer Group(消费组):一个Consumer Group可包含多个consumer,每个consumer用Consumer Group名称来标注自己。同一个Topic的数据会通过广播传递给不同Consumer Group,若同一个Topic的同一条记录只能被同一个GroupID的一个consumer消费,则实现点对点模式。若同一个Topic的同一条记录被不同GroupID中的consumer同时消费到,则实现了发布订阅模式,但是Partition中每个记录只能被Group中一个consumer消费,不能被多个consumer消费(Kafka实现了消息广播和单播;若需实现广播,只要每个consumer有一个独立的Group即可,若需实现单播,只要所有的consumer在同一个Group中即可)