Kafka详解
kafka是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统,它的最大的特点就是可以实时处理大数据以满足各种需求场景:比如基于hadoop的批处理系统,低延迟的实时系统,storm/spark流式处理引擎,web/nginx日志,访问日志,消息服务等
kafka的特性
- 高吞吐量,低延迟:多topic,每个topic可以分为多个partition,每个partition对应可以被consumer group中的一个consumer消费
- 可扩展性:
- 持久性
- 容错性:failover,loadbalance
- 高并发:producer和subscribe
kafka的设计思想
- kafka broker leader的选举:kafka broker集群收zookeeper管理.所有kafkabroker节点一起去ziikeeoer上注册一个临时节点(epehmeral),因为只有一个broker会注册成功其他的都会失败,所以这个成功在zookeeper上注册临时节点的这个kafka controller会读取该宕机broker上所有的partition在zookeeper上的状态,并选取.
- consumergroup:各个consumer(consumer线程)可以组成一个组(consumer group),partition中的每个message只能被组中的一个consumer消费,如果一个message可以被多个consumer消费的话,那么这些consumer必须在不同的组.kafka不支持一个partition中的message由两个或两个以上的同一组下的consumer来处理,除非在启动一个新的consumer group.
- 当Num_consumer>Num_partition:多余的consumer会被置为空闲
- 当Num_consumer<Num_partition::topic中的partition一定会被消费完,所以此时一个consumer会去消费多个partition
kafka简述
原文:https://www.cnblogs.com/hwloser/p/11880875.html