2017-06-21 75 views
1

发送到Kafka的消息写入磁盘并复制为 容错。磁盘持久性和复制?

我不确定何时将消息写入光盘,为什么需要复制(分区)以及它如何提供帮助?

此外,卡夫卡据说吞吐量很高,不写入磁盘影响性能?它是否可配置为只在内存中有消息,但不在磁盘中?

回答

1

Jay Kreps(他在LinkedIn时Kafka的原始架构师之一)的这篇博客文章解释了Kafka如何被独特地设计为一个提交日志,它可以在“三台便宜的机器上每秒写入200万次”并且产生比传统消息代理更高的消息传输速率,而传统消息代理并非如此设计。

https://engineering.linkedin.com/kafka/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines

卡夫卡具有控制页面缓存多久刷新到磁盘配置参数。没有最终写入磁盘的情况下运行Kafka是不可能的。 Kafka还在内存中缓存消息以提高性能,因此它可以在从内存读取时提供高吞吐量,同时仍保证不会因持久性磁盘丢失消息而使数据集群复制容错。

+0

其实我的主要问题是卡夫卡是坚持信息在光盘中,复制的需要是什么?它有什么帮助? – user3198603

+0

复制是为了容错,而不是性能。这意味着你不会丢失数据,并且系统在服务器死亡的情况下继续工作。分区(即分片)用于性能,因为它将数据存储在多个服务器上。 Kafka同时进行复制和分区,因此您可以获得高性能和可靠性。 –

+0

我明白分区是为了性能。我所问的是,当卡夫卡已经坚守在光盘上的信息,那么即使服务器死亡也没有数据丢失的机会。那么为什么需要跨节点复制相同的消息/数据呢? – user3198603

相关问题