Kafka高可用环境搭建

本文深入探讨了Kafka的高可用集群搭建,解析其在大数据处理中的优势,包括高吞吐量、低延迟、可扩展性和容错性。阐述了Kafka依赖Zookeeper进行节点信息管理,以及在日志收集、消息系统、用户活动跟踪等场景的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Kafka高可用环境搭建

Apache Kafka是分布式发布-订阅消息系统,在 kafka官网上对 kafka 的定义:一个分布式发布-订阅消息传递系统。 它最初由LinkedIn公司开发,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。Kafka是一种快速、可扩展的、设计内在就是分布式的,分区的和可复制的提交日志服务。

注意:Kafka并没有遵循JMS规范,它只提供了发布和订阅通讯方式!!!!!
kafka中文官网:http://kafka.apachecn.org/quickstart.html

 

Kafka用在日志里面比较多 大数据里面的

MQ的思想: 解耦合  流量削峰  异步通信

 

kafka优点:

- 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作,我之前在课题里用到Spark Streaming 作为消费者过滤数据。
- 可扩展性:kafka集群支持热扩展
- 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
- 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
- 高并发:支持数千个客户端同时读写

 

Kafka依赖Zookeeper,kafka把集群的节点信息 全部存放在Zookeeper节点!!!!!

 

应用场景:

- 日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr或者Spark Streaming等。
- 消息系统:解耦和生产者和消费者、缓存消息等。
- 用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
- 运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
- 流式处理:比如spark streaming和storm
- 事件源

 

关键名词解释:

 

Broker:Kafka节点,一个Kafka节点就是一个broker,多个broker可以组成一个Kafka集群。  broker就是节点,单机的kafka服务器
Topic:一类消息,消息存放的目录即主题,例如page view日志、click日志等都可以以topic的形式存在,Kafka集群能够同时负责多个topic的分发,kafka服务器存放 主题。kafka集群相当于把topic进行拆分,拆分到不同的分区进行存放。类似于数据库存放数据量比较大的情况下,表进行拆分。查询时候进行分表查询

massage: Kafka中最基本的传递对象。
Partition:topic物理上的分组,一个topic可以分为多个partition,每个partition是一个有序的队列,就是分区的概念,相当于把topic存放到不同的物理机器上存储起来。topic消息进行拆分,均摊存放到不同的

                  集群中的kafka服务器上。 每个partition其实是有顺序的。
Segment:partition物理上由多个segment组成,每个Segment存着message信息
Producer : 生产者,生产message发送到topic
Consumer : 消费者,订阅topic并消费message, consumer作为一个线程来消费
Consumer Group:消费者组,一个Consumer Group包含多个consumer。在同一个组可以收到消息
Offset:偏移量,理解为消息partition中的索引即可。  消息在partition的索引的位置

 

需要理解存储策略:

  

1)kafka以topic来进行消息管理,每个topic包含多个partition,每个partition对应一个逻辑log,有多个segment组成
2)每个segment中存储多条消息(见下图),消息id由其逻辑位置决定,即从消息id可直接定位到消息的存储位置,避免id到位置的额外映射。
3)每个part在内存中对应一个index,记录每个segment中的第一条消息偏移。
4)发布者发到某个topic的消息会被均匀的分布到多个partition上(或根据用户指定的路由规则进行分布),broker收到发布消息往对应partition的最后一个segment上添加该消息,当某个segment上的消息条数达到配置值或消息发布时间超过阈值时,segment上的消息会被flush到磁盘,只有flush到磁盘上的消息订阅者才能订阅到,segment达到一定的大小后将不会再往该segment写数据,broker会创建新的segment。

 

生产者发送消息原理:

 

 

 

 

 Kafka高可用集群原理:

   

     kafka 是topic为主的,kafka必须集群,核心就是集群,才能体现分区的优势!

     

     集群环境下 生产者投递消息 到哪个Broker? 

     (Tomcat 通过Nginx 集合起来的思想深入人心)

     集群的目的就是分担单台的压力,kafaka采用了 负载轮训的机制

      数据库里面 单表 有1亿条数据  查询很慢的 。所以分表,比如按照月份进行分或者根据其他的业务来进行分。

      

    下图三个Broke  topic进行分区存放,在创建topic时候,轮训去指定分区。BrokerId区分之

      0,1,2,34,5,6为offset 每个分区中的offset是独立的,互不影响的

      三个broker,有三个消费者是比较合理的~

     Zookeeper 节点专门存放topic 信息。   kafka 的broker的信息存放在zk节点

 

您好!要搭建 Kafka高可用集群,您需要进行以下步骤: 1. 安装并配置 ZooKeeper:Kafka 使用 ZooKeeper 来管理集群的元数据和协调功能。您需要安装 ZooKeeper 并配置其集群模式。确保 ZooKeeper 集群正常运行,并且具有足够的容错性。 2. 下载和解压 Kafka:从 Apache Kafka 的官方网站下载并解压最新版本的 Kafka。 3. 配置 Kafka:在每个 Kafka 节点上,编辑 Kafka 的配置文件 `config/server.properties`。确保以下配置项正确设置: - `broker.id`:每个节点的唯一标识。 - `listeners`:指定 Kafka 监听的主机和端口。 - `log.dirs`:指定 Kafka 存储日志文件的目录。 - `zookeeper.connect`:指定连接到 ZooKeeper 集群的地址。 4. 启动 Kafka 节点:在每个节点上,使用命令行启动 Kafka 服务器。您可以使用以下命令: ``` bin/kafka-server-start.sh config/server.properties ``` 5. 创建 Kafka Topic:使用 Kafka 提供的命令行工具 `kafka-topics.sh` 创建您需要的主题。 6. 配置副本:为了实现高可用性,您需要为每个主题配置多个副本。使用 `kafka-topics.sh` 工具来创建多个副本。 7. 测试集群:使用 Kafka 提供的命令行工具发送和接收消息,来测试您的 Kafka 集群是否正常工作。 这些是搭建 Kafka 高可用集群的基本步骤。请注意,在生产环境搭建高可用集群时,还需要考虑更多因素,如数据备份、监控和故障恢复等。希望对您有所帮助!如果您有任何进一步的问题,请随时问我。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值