Kafka基本概念
Kafka体系架构
Producer(生产者):发送消息的一方,负责创建消息,然后投递给Kafka
Consumer(消费者):接收消息的一方。消费者连接到Kafka上并接收消息,然后进行相应的业务逻辑处理。
Broker(服务代理节点):对于Kafka而言,可以将Broker简单地看作一个独立的Kafka服务节点或者服务实例。大多数情况下可将它看作一台独立的服务器,前提是这台服务器只部署了一个Kafka实例。一个或者多个Broker组成了一个Kafka集群。
Kafka体系架构图
此外,Kafka还有两个重要的概念: 主题(Topic)和分区(Partition)。Kafka中的消息以主题为单位进行分类,生产者将消息发送到特定的主题。消费者负责订阅主题并进行消费。
主题从逻辑上又可以细分为多个分区,分区再存储层面可以看作是一个可追加的日志(Log)文件, 当消息被追加到分区日志文件的时候都会分配一个特定的而偏移量(offset)。offset是消息在分区中的唯一标识,Kafka通过它来保证消息在分区内的顺序性。
Kafka中的分区可以分布在不同的服务器(Broker)上,也就是说一个主题可以跨越多个Broker, 以此来提供比单个broker更强大的性能。
Kafka多副本
Kafka为分区引入了多副本(Replica)机制,通过增加副本数量可以提升容灾能力。同一个分区的不同副本保存的消息是相同的,副本之间是“一主多从”的关系,leader副本负责读写请求。follower副本只负责与leader副本的消息同步。副本位于不同的broker中,当leader副本出现故障时,会从follower副本中重新选举新的leader副本对外提供服务。这就实现了故障的自动转移,当kafka集群中某个Broker失效时仍然能保证服务可用。
ZooKeeper介绍:
ZooKeeper是一个开源的分布式协调服务,是Google Chubby的一个开源实现。分布式应用程序可以基于ZooKeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、配置维护等功能。在ZooKeeper中共有3个角色:leader、follower和observer,同一时刻 ZooKeeper集群中只会有一个leader,其他的都是follower和observer。observer不参与投票,默认情况下 ZooKeeper 中只有 leader 和 follower 两个角色。
Kafka通过ZooKeeper来实施对元数据信息的管理,包括集群、broker、主题、分区等内容,ZooKeeper是安装Kafka集群的必要组件。