1、Kafka概览
Apache下的项目Kafka(卡夫卡)是一个分布式流处理平台,它的流行是因为卡夫卡系统的设计和操作简单,能充分利用磁盘的顺序读写特性。kafka每秒钟能有百万条消息的吞吐量,因此很适合实时的数据流处理。例如kafka在线日志收集系统可作为flume的实时消息sink端,再通过kafka的消费者将消息实时写入hbase数据库中。
卡夫卡以topic分类对记录进行存储,每个记录包含key-value和timestamp。
1.1卡夫卡系统的组件、角色
broker: 每个正在运行的kafka节点
producer:消息生产者
consumer:消息的消费者
consumer group:消费者组,同一个消费者组只能有一个consumer能消费消息
kafka server :也叫作broker, 已部署kafka的服务器, 以broker.id来区分不同的服务器
topic:主题, 主题中的每条消息包括key-value和timestamp。可以定义多个topic,每个topic又可以划分为多个分区
partition:topic下的消息分区,通过key取哈希后把消息映射分发到一个指定的分区,每个分区都映射到broker上的一个目录。一般每个分区存储在一个broker上
replica:副本, 每个分区按照生产者的消息达到顺序存放。每个分区副本都有一个leader
leader replica:leader角色的分区副本,leader角