赞
踩
Apache Kafka是一个开源的流处理平台,由Scala和Java编写1。它是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统2。Kafka的最大特性就是可以实时处理大量数据以满足各种需求场景,比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎,web/nginx日志、访问日志,消息服务等等。
Producer(生产者):负责将消息发布到Kafka集群。生产者可以选择将消息发送到指定的主题和分区,也可以让Kafka自动选择合适的分区。
Broker:每个Broker都是一个独立的Kafka节点,一台Kafka服务器。一个Kafka集群由多个Broker组成。
Topic:消息的主题,可以理解为消息队列,Kafka的数据就保存在Topic中。在每个Broker上都可以创建多个Topic。
Partition:Topic的分区,每个Topic可以有多个分区,分区的作用是做负载,提高Kafka的吞吐量。同一个Topic在不同的分区的数据是不重复的。
Replica:每一个分区都有多个副本,副本的作用是做备胎,主分区(Leader)会将数据同步到从分区(Follower)。当主分区(Leader)故障的时候会选择一个备胎(Follower)上位,成为Leader。
Consumer(消费者):消息的消费方,是消息的出口。消费者主动的去Kafka集群拉取消息时,也是从Leader分区去拉取数据。
Consumer Group:我们可以将多个消费者组成一个消费者组,同一个消费者组的消费者可以消费同一个Topic下不同分区的数据,同一个分区只会被一个消费者组内的某个消费者所消费,防止出现重复消费的问题。
Zookeeper:Kafka集群依赖Zookeeper来保存集群的元信息,来保证系统的可用性。
Kafka集群的工作机制主要包括以下几个方面1234:
正如上述我们介绍的kafka集群的机制 Broker之间的关系 天然支持集群。只需要增删节点即可。
# 指定当前节点的brokerId,同一个集群中的brokerId需要唯一
broker.id=0
# 指定监听的地址及端口号,使用hostname 或者内网IP皆可
listeners=PLAINTEXT://hostname:9092
# 配置外网访问ip 如果为空 则会使用listeners(如果不为空) 其他的情况使用 InetAddress.getCanonicalHostName() 的值
# Hostname and port the broker will advertise to producers and consumers.
# If not set, it uses the value for "listeners" if configured. Otherwise, it will use the value returned from java.net.InetAddress.getCanonicalHostName().
advertised.listeners=PLAINTEXT://hostname:9092
# 指定kafka日志文件的存储目录
log.dirs=/usr/local/kafka/logs
# 指定zookeeper的连接地址,若有多个地址则用逗号分隔
zookeeper.connect=localhost:2181,localhost:2182,localhost:2183
# 配置可删除
delete.topic.enable=true
scp -r /usr/local/develop/kafka_2.12-3.6.1 remote_ip:/usr/local/develop/kafka_2.12-3.6.1
nohup sh ./bin/kafka-server-start.sh ./config/server.properties >./out.log 2>&1 &
这样就完成kafka集群的搭建~~
good day ! ! !
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。