kafka基础篇(五)——kafka总结

前言

前面我们介绍了kafka的服务端,集群,生产者客户端和消费者客户端。由此我们看到,我们主要是以MQ的方式,对kafka进行的讲解和分析。除了MQ的功能外,kafka还可以用作流式处理等作用。下面我们就总结一下kafka的特点,优点以及适用场景。

一、优点

  • 多生产者和多消费者

  • 基于磁盘的数据存储,换句话说,Kafka 的数据天生就是持久化的。

  • 高伸缩性,Kafka 一开始就被设计成一个具有灵活伸缩性的系统,对在线集群的伸缩丝毫不影响整体系统的可用性。

  • 高性能,结合横向扩展生产者、消费者和 broker,Kafka 可以轻松处理巨大的信息流(LinkedIn 公司每天处理万亿级数据),同时保证亚秒级的消息 延迟。

通过前面的学习我们可以知道,kafka的分布式体现在主题分区的分布式,一个主题的分区可以分布在不同的服务器上,这样设计,对于生产者和消费者而言,都可以同时针对多台服务器进行消息的发送和接收,所以,kafka处理大数据时性能很高。这也是kafka作为MQ而言比其他MQ性能高的原因。

二、kafka数据安全保障总结

kafka服务端:
1.kafka复制机制
采用ISR复制机制:消费者和生产者与分区首领进行对接。分区首领维护这一个副本列表(ISR列表),分区的数据复制到ISR列表的其他副本中,首领中的数据只有复制到所有的ISR列表中的副本中,消息才会设置成commit状态,消费者才能消费该消息。
ISR列表是一个动态维护的列表,当发现有副本挂掉或者与首领数据差太多的话(差多少通过属性设置),会把这个副本剔除ISR列表中,当副本的复制速度跟上首领的数据时,再加入ISR列表。

2.最少同步副本机制
min.insync.replicas设置了最少需要同步的副本数量,来保证我们数据的副本数。当可用的副本数小于这个数字时,kafka不再接收生产者发送的消息,只能给消费者拉取消息,变成了只读状态。通过这种机制,保证各个副本之间的数据同步和安全。

3.不完全首领机制
kafka提供了unclean.leader.election参数,让我们选择完全首领还是不完全首领,我们可以根据自身业务需求,从数据安全和时间成本中,去选择哪种模式。

kafka生产者客户端:
1.acks设置:设置为all,保证副本之间数据的同步。
2.消息的确认机制:发送忘记、同步发送确认、异步发送确认机制。

kafka消费者客户端:
1.enable.auto.commit设置为false,手动提交偏移量
2.分区再均衡监听器的使用,保证偏移量的提交以及分区再均衡后的正确拉取偏移量的位置

三、kafka高性能设置

1.硬件配置
2.集群中broker数量和主题中分区数量以及集群的副本数。

四、kafka配置总结

kafka很多方面通过配置可以提高性能,现在总结如下:

kafka服务端参数配置:

  1. 消息吞吐量设置

message.max.bytes:表示一个服务器能够接收处理的单个消息的最大字节数,注意这个值 producer 和 consumer 必须设置一致。这个值设置成10K性能是最佳的。

  1. 过期机制设置

log.retention.bytes、log.retention.hours、log.segment.bytes三个参数配合使用:
log.retention.bytes是分区日志文件大小限制,设置成-1,意思是文件可以无限大。
log.retention.hours是分区日志时间保存期限,根据我们的需求设置期限。
log.segment.bytes是每个分区日志文件的大小限制,超过后,会自动新建一个分区日志文件。
这三个参数配合使用,使日志文件按照时间进行过期,且分批进行过期。

  1. 顺序性保证设置
    max.in.flight.requests.per.connection设置为1。意思是当一个生产者进行重试时,其他生产者的消息不写入日志文件。

  2. ISR列表维护机制
    replica.lag.max.messages:设置副本数据与首领相差多少,就剔除ISR列表。 0.9.0.0版本后移除了replica.lag.max.messages参数。因为当大数据量瞬间写入kafka时,可能其他副本都没有第一时间同步那么多数据,然后被剔除了ISR列表。等副本同步完首领数据后,又加入了ISR列表,这么反复的剔除和加入,有问题,所以这个参数后面版本剔除了。
    replica.lag.time.max.ms:设置其他副本与首领不同步的时间,超过这个时间,剔除ISR列表。即使在峰值流量下,生产者往 leader 发送大量的消息,除非副本始终和 leader 保持 replica.lag.time.max.ms 时间的落后,否则它不会随机进出 ISR。

  3. 最少同步副本机制
    min.insync.replicas参数:设置kafka最少需要同步数据的副本数量。

  4. 完全首领机制与不完全首领机制的切换
    unclean.leader.election参数默认为true,支持不完全首领机制。我们可以根据实际业务切换机制。

五、kafka高性能设计思想

1.最少使用原则的应用:
消息的分发,分区首领的选择,都采用了最少使用原则的思想,将工作量均衡的分散到各个broker之间,提高了工作效率。

2.零拷贝技术

3.磁盘顺序写入

4.页缓存

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

敲代码的小小酥

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

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

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

打赏作者

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

抵扣说明:

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

余额充值