Kafka的可靠性问题

a. Producer到broker

把request.required.acks设为1,丢会重发,丢的概率很小

b. Broker

b.1 对于broker,落盘的数据,除非磁盘坏了,不会丢的

b.2 对于内存中没有flush的数据,broker重启会丢 
        可以通过log.flush.interval.messages和log.flush.interval.ms来配置flush间隔,interval大丢的数据多些,小会影响性能 
        但在0.8版本,可以通过replica机制保证数据不丢,代价就是需要更多资源,尤其是磁盘资源,kafka当前支持GZip和Snappy压缩,来缓解这个问题 
        是否使用replica取决于在可靠性和资源代价之间的balance

时间: 2024-08-06 11:55:50

Kafka的可靠性问题的相关文章

kafka数据可靠性深度解读

Kafka起初是由LinkedIn公司开发的一个分布式的消息系统,后成为Apache的一部分,它使用Scala编写,以可水平扩展和高吞吐率而被广泛使用.目前越来越多的开源分布式处理系统如Cloudera.Apache Storm.Spark等都支持与Kafka集成. 1 概述 Kafka与传统消息系统相比,有以下不同: 它被设计为一个分布式系统,易于向外扩展: 它同时为发布和订阅提供高吞吐量: 它支持多订阅者,当失败时能自动平衡消费者: 它将消息持久化到磁盘,因此可用于批量消费,例如ETL以及实

kafka 消息可靠性

1.消息发送机制 Kafka的ack机制. 当producer向leader发送数据时,可以通过request.required.acks参数来设置数据可靠性的级别: 1(默认):这意味着producer在ISR中的leader已成功收到的数据并得到确认后发送下一条message.如果leader宕机了,则会丢失数据. 0:这意味着producer无需等待来自broker的确认而继续发送下一批消息.这种情况下数据传输效率最高,但是数据可靠性确是最低的. -1:producer需要等待ISR中的所

为什么是kafka?

MQ在分布式场景下的应用已经非常广泛了.但是在所有的MQ使用场景中,大多都要求不能丢消息,意味着必须有持久化的能力,传统行业常用的activemq.rabbitmq虽然有持久化能力,无奈的是性能太低,扩展性太差,对于互联网公司来说,要么就去基于他们去扩展,要么就是自己研发一个新的MQ,自从kafka横空出世,唤醒了人们对高性能   MQ的追求.实际上kafka0.8版本已经脱胎换骨,再也不只是适合日志收集的场景了,kafka在可靠性方面做了很多改进.实际上kafka已经可以用在企业级应用里面了.

apache kafka技术分享系列(目录索引)

目录索引: Kafka使用场景 1.为何使用消息系统 2.我们为何需要搭建Apache Kafka分布式系统 3.消息队列中点对点与发布订阅区别 kafka开发与管理: 1)apache kafka消息服务 2)kafak安装与使用 3)apache kafka中server.properties配置文件参数说明 4)Apache kafka客户端开发-java 5)kafka的ZkUtils类的java版本部分代码 6)kafka log4j配置 7)apache kafka的consumer

kafka数据可靠传输

再说复制Kafka 的复制机制和分区的多副本架构是Kafka 可靠性保证的核心.把消息写入多个副本可以使Kafka 在发生崩愤时仍能保证消息的持久性. Kafka 的主题被分为多个分区,分区是基本的数据块.分区存储在单个磁盘上,Kafka 可以保证分区里的事件是有序的,分区可以在线(可用),也可以离线(不可用) .每个分区可以有多个副本,其中一个副本是首领.所有的事件都直接发送给首领副本,或者直接从首领副本读取事件.其他副本只需要与首领保持同步,并及时复制最新的事件.当首领副本不可用时,其中一个

kafka使用场景

Kafka应用场景 消息系统或是说消息队列中间件是当前处理大数据一个非常重要的组件,用来解决应用解耦.异步通信.流量控制等问题,从而构建一个高效.灵活.消息同步和异步传输处理.存储转发.可伸缩和最终一致性的稳定系统.当前比较流行的消息中间件有Kafka.RocketMQ.RabbitMQ.ZeroMQ.ActiveMQ.MetaMQ.Redis等,这些消息中间件在性能及功能上各有所长.如何选择一个消息中间件取决于我们的业务场景.系统运行环境.开发及运维人员对消息中件间掌握的情况等.我认为在下面这

设置Kafka集群的方法

1.目标 今天,在这篇Kafka文章中,我们将看到Kafka Cluster Setup.这个Kafka集群教程为我们提供了一些设置Kafka集群的简单步骤.简而言之,为了实现Kafka服务的高可用性,我们需要在集群模式下设置Kafka. 因此,在此Kafka Cluster文档中,我们将学习Kafka多节点群集设置和Kafka多代理群集设置.此外,我们将看到Kafka Zookeeper群集设置.那么,让我们开始Kafka群集设置. 设置Kafka集群的方法:Apache Kafka 你对卡夫

Kafka 和 ZooKeeper 的分布式消息队列分析

1. Kafka 总体架构 基于 Kafka-ZooKeeper 的分布式消息队列系统总体架构如下: 如上图所示,一个典型的 Kafka 体系架构包括若干 Producer(消息生产者),若干 broker(作为 Kafka 节点的服务器),若干 Consumer(Group),以及一个 ZooKeeper 集群.Kafka通过 ZooKeeper 管理集群配置.选举 Leader 以及在 consumer group 发生变化时进行 Rebalance(即消费者负载均衡,在下一课介绍).Pro

深入理解Kafka必知必会(3)

Kafka中的事务是怎么实现的? Kafka中的事务可以使应用程序将消费消息.生产消息.提交消费位移当作原子操作来处理,同时成功或失败,即使该生产或消费会跨多个分区. 生产者必须提供唯一的transactionalId,启动后请求事务协调器获取一个PID,transactionalId与PID一一对应. 每次发送数据给<Topic, Partition>前,需要先向事务协调器发送AddPartitionsToTxnRequest,事务协调器会将该<Transaction, Topic,