Kafka高可用&伸缩部署详解

本文详细介绍了Apache Kafka的高可用性、伸缩部署以及性能调优策略。Kafka作为一个分布式日志系统和消息中间件,具备高吞吐、低延迟、可扩展性等特点,广泛应用于日志收集、消息系统、用户活动跟踪和运营指标监控等领域。文中提到了Kafka集群的架构,包括Producer、Broker、ConsumerGroup和Zookeeper的角色,并详细阐述了Broker参数配置,如网络线程优化、日志刷盘策略和日志保留策略。此外,还介绍了如何通过Zookeeper进行集群管理和故障转移。

LD is tigger forever,CG are not brothers forever, throw the pot and shine forever.
Modesty is not false, solid is not naive, treacherous but not deceitful, stay with good people, and stay away from poor people.
talk is cheap, show others the code and KPI, Keep progress,make a better result.
Survive during the day and develop at night。

目录

概 述

1 Kafka 简介 K afka是最初由Linkedin公司开发,是一个分布式、分区的、多副本的、多订阅者,基于zookeeper协调的分布式日志系统(也可以当做MQ系统),常见可以用于web/nginx日志、访问日志,消息服务等等,Linkedin于2010年贡献给了Apache基金会并成为顶级开源项目。
主要应用场景是:日志收集系统和消息系统。
Kafka主要设计目标如下:

1.以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。

2.高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。

3.支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。

4.同时支持离线数据处理和实时数据处理。

5.Scale out:支持在线水平扩展

2 Kafka 特性

☞ 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。

☞ 可扩展性:kafka集群支持热扩展
☞ 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
☞ 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
☞ 高并发:支持数千个客户端同时读写

3 Kafka 的使用场景
★ 日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如hadoop、Hbase、Solr等。

★ 消息系统:解耦和生产者和消费者、缓存消息等。
★ 用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
★ 运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
★ 流式处理:比如spark streaming和storm
在这里插入图片描述
5 集群架构

Kafka集群中包含若干Producer,若干broker(Kafka支持水平扩展,一般broker数量越多,集群吞吐率越高),若干Consumer Group,以及一个Zookeeper集群。
Kafka通过Zookeeper管理集群配置,选举leader,以及在Consumer Group发生变化时进行rebalance。
Producer使用push模式将消息发布到broker,Consumer使用pull模式从broker订阅并消费消息。

Zk集群启动:
/opt/zookeeper/bin/zkServer.sh start

停止zK节点
/opt/zookeeper/bin/zkServer.sh stop

查看ZK状态:
/opt/zookper/bin/zkServer.sh status
log路径:
/opt/zookeeper/logs
ZK 集群测试

模拟ZK集群切换,停掉Leader节点让ZK自动发生选举到其它节点。
3、Kafka 集群搭建
kafka 软件安装
kafka 配置修改
修改kafka配置文件/opt/kafka-cluster/node1/config/server.properties ,注意只需要修改如下三项配置,broker.id 、listeners、zookeeper.connect 。
注意:以上kafka节点1已经配置完成。
7 Kafka 性能调优

Broker 参数配置
1、网络和io操作线程配置优化

broker处理消息的最大线程数(默认为3)num.network.threads=cpu核数+1

num.io.threads=cpu核数*2

2、log数据文件刷盘策略

每当producer写入10000条消息时,刷数据到磁盘

每间隔1秒钟时间,刷数据到磁盘
log.flush.interval.ms=1000
3、日志保留策略配置
log.retention.hours=72
log.segment.bytes=1073741824
default.replication.factor:3

小结

参考资料和推荐阅读

1.链接: 参考资料.

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迅捷的软件产品制作专家

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值