网站建设方案书制作,宁津县建设局网站,网站开发 平台建设,wordpress伪kafka集群搭建
1. kafka介绍
Apache Kafka是一个开源的流处理平台#xff0c;由Scala和Java编写1。它是一个分布式、支持分区的#xff08;partition#xff09;、多副本的#xff08;replica#xff09;#xff0c;基于zookeeper协调的分布式消息系统2。Kafka的最大特…kafka集群搭建
1. kafka介绍
Apache Kafka是一个开源的流处理平台由Scala和Java编写1。它是一个分布式、支持分区的partition、多副本的replica基于zookeeper协调的分布式消息系统2。Kafka的最大特性就是可以实时处理大量数据以满足各种需求场景比如基于hadoop的批处理系统、低延迟的实时系统、storm/Spark流式处理引擎web/nginx日志、访问日志消息服务等等。
2. 组件介绍
Producer生产者负责将消息发布到Kafka集群。生产者可以选择将消息发送到指定的主题和分区也可以让Kafka自动选择合适的分区。 Broker每个Broker都是一个独立的Kafka节点一台Kafka服务器。一个Kafka集群由多个Broker组成。 Topic消息的主题可以理解为消息队列Kafka的数据就保存在Topic中。在每个Broker上都可以创建多个Topic。 PartitionTopic的分区每个Topic可以有多个分区分区的作用是做负载提高Kafka的吞吐量。同一个Topic在不同的分区的数据是不重复的。 Replica每一个分区都有多个副本副本的作用是做备胎主分区Leader会将数据同步到从分区Follower。当主分区Leader故障的时候会选择一个备胎Follower上位成为Leader。 Consumer消费者消息的消费方是消息的出口。消费者主动的去Kafka集群拉取消息时也是从Leader分区去拉取数据。 Consumer Group我们可以将多个消费者组成一个消费者组同一个消费者组的消费者可以消费同一个Topic下不同分区的数据同一个分区只会被一个消费者组内的某个消费者所消费防止出现重复消费的问题。 ZookeeperKafka集群依赖Zookeeper来保存集群的元信息来保证系统的可用性。
3. 特性
高吞吐量、低延迟Kafka每秒可以处理几十万条消息它的延迟最低只有几毫秒每个topic可以分多个partition, consumer group 对partition进行consume操作。可扩展性Kafka集群支持热扩展。 持久性、可靠性消息被持久化到本地磁盘并且支持数据备份防止数据丢失。容错性允许集群中节点失败若副本数量为n则允许n-1个节点失败。高并发支持数千个客户端同时读写。支持实时在线处理和离线处理可以使用Storm这种实时流处理系统对消息进行实时进行处理同时还可以使用Hadoop这种批处理系统进行离线处理。消息持久化Kafka将所有数据写入和复制到磁盘因此具有可扩展性和容错能力非常高的存储系统。默认情况下Kafka一直保留磁盘上存储的数据直到其空间用尽但是用户可以设置保留限制。多使用器多个使用器可以订阅相同主题因为Kafka允许将同一条消息重放指定的时间长度。
4. kafka集群的机制
Kafka集群的工作机制主要包括以下几个方面1234
Controller角色在Kafka集群中需要选举出一个Broker担任Controller角色。由Controller角色来管理整个集群中的分区和副本状态。Leader角色在同一个Topic下的多个Partition中需要选举出一个Leader角色。由Leader角色的Partition来负责与客户端进行数据交互3。Zookeeper的作用Kafka依赖于ZookeeperKafka会将每个服务的不同之处也就是状态信息保存到Zookeeper中。通过Zookeeper中的数据指导每个Kafka进行与其他Kafka节点不同的业务逻辑。Push-and-Pull模式Kafka中的Producer和Consumer采用的是Push-and-Pull模式即Producer只管向Broker Push消息Consumer只管从Broker Pull消息两者对消息的生产和消费是异步的1。Broker之间的关系Kafka集群中Broker之间的关系不是主从关系各个Broker在集群中地位一样我们可以随意的增加或删除任何一个Broker节点。
5. kafka集群搭建
正如上述我们介绍的kafka集群的机制 Broker之间的关系 天然支持集群。只需要增删节点即可。
zk集群准备 版本为 3.9.1下载安装包 搭建kafka集群版本3.6.1 下载 https://downloads.apache.org/kafka/3.6.1/kafka_2.13-3.6.1.tgz修改配置# 指定当前节点的brokerId同一个集群中的brokerId需要唯一
broker.id0
# 指定监听的地址及端口号使用hostname 或者内网IP皆可
listenersPLAINTEXT://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.listenersPLAINTEXT://hostname:9092
# 指定kafka日志文件的存储目录
log.dirs/usr/local/kafka/logs
# 指定zookeeper的连接地址若有多个地址则用逗号分隔
zookeeper.connectlocalhost:2181,localhost:2182,localhost:2183
# 配置可删除
delete.topic.enabletrue使用scp命令发送到其他的服务器 注意配置文件需要重点修改几个地方 broker.id listeners 以及 advertised.listeners
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 21 这样就完成kafka集群的搭建~~
good day ! ! !