kafka高可靠性相关配置

南墨2年前技术文章588

为保证高可靠可以通过以下方面进行设置:

1) 物理机器

场景

配置项

配置说明

高可靠高性能

不间断电源

配置,防止服务器异常断电

RAID卡电池

配置,防止服务器异常断电

RAID卡写缓存

开启,提高性能

RAID 1

配置

硬盘写缓存

关闭,提高数据可靠性

2) Kafka和业务系统

参数

说明

unclean.leader.election.enable

false

不允许不在ISR中的副本被选举为Leader

auto.leader.rebalance.enable

false

不使用Leader自动均衡功能。

acks

-1(all)

当producer需要Leader确认消息是否已经接收并认为已经处理完成。该参数会影响消息的可靠性。

Acks=-1(all)需要等待在ISR列表这种的副本都确认接收到消息并处理完成才表示消息成功。

min.insync.replicas

2

当Producer设置acks为-1时,指定需要写入成功的副本的最小数目。

其中min.insync.replicasunclean.leader.election.enableacksTopic级别设置,可以根据不同Topic进行设置。

3) 影响

l  性能降低。

需要所有的ISR列表副本,且满足最小成功的副本数确认写入成功。这样会导致单条消息时延增加,客户端处理能力下降。

从实验室测试场景来看,

时延增加6倍,吞吐量下降70%。具体性能以现场实际测试为准。

l  可用性降低。

Ø  unclean.leader.election.enable

不允许不在ISR中的副本被选举为Leader。如果所有副本都不可用,那么分区将保持不可用,直到最近的Leader再次可用。

例如:

Test-0分区有副本1、2。acks=1,min.insync.replicas=1。

当2处于故障状态,1接收写入。

Topic: test     Partition: 0    Leader: 1       Replicas: 1,2   Isr: 1

当2修复启动后向1进行同步,其不在ISR列表中。

Topic: test     Partition: 0    Leader: 1       Replicas: 1,2   Isr: 1

此时1发生故障,2无法被选为leader,分区无法接受写入和读取。必须等待1修复后才可继续提供服务。

1)      min.insync.replicas、acks

需要所有的ISR列表副本,且满足最小成功的副本数确认写入成功。当Partition的一个Replica所在节点故障时,无法满足最小成功的副本数,那么将会导致业务写入失败。

1.png

例如:

Test-0分区有副本1、2。acks=-1(all),min.insync.replicas=2。

Topic: test     Partition: 0    Leader: 1       Replicas: 1,2   Isr: 1,2

当2处于故障状态,由于不满足min.insync.replicas将会导致写入失败。

Topic: test     Partition: 0    Leader: 1       Replicas: 1,2   Isr: 1

        2.png

 建议:通常情况下,使用ack=1,min.insync.replicas=1就能够满足的业务需求。


相关文章

Flume使用案例之监控端口数据

监控端口数据目标:Flume监控一端Console,另一端Console发送消息,使被监控端实时显示。分步实现:1. 安装telnet工具yum -y install telnet2. 创建Flume...

lru_cache 缓存

Python 语法: @functools.lru_cache(maxsize=128, typed=False)Least-recently-used 装饰器。Iru 最近最少使用、cache 缓存...

hive 报 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster

hive 报 找不到或无法加载主类 org.apache.hadoop.mapreduce.v2.app.MRAppMaster

解决办法:关键需要配置两个配置:mapred-site.xml 和 yarn-site.xml下面配置hadoop classpath。先运行shell命令:hadoop classpath添加一个配...

Hbase&Hive区别对比

Hbase和Hive定义区别Hbase,其实是Hadoop database的简称,是一种NoSQL数据库,主要适用于海量明细数据(十亿、百亿)的随机实时查询,如日志明细、交易清单、轨迹行为等。Hiv...

开源Kubernetes工具

开源Kubernetes工具

类别 1:运行 Kubernetes 环境Minikube 仍然是最佳的几乎每个 Kubernetes 教程都是从“下载 Minikube”开始的,这在今天仍然行得通。如果你想在一个真正低风险的环境中...

Linux SSSD同步大量AD用户缓慢

Linux SSSD同步大量AD用户缓慢

1、背景在使用AD + sssd (ad作为ldap)同步用户,其中AD中存在10000+ 用户,同步时,用户信息获取缓慢,导致cdh的namenode 的rpc 队列打高,服务不正常。id 用户达到...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。