java - 磁盘持久性和复制?

标签 java apache-kafka

Message sent to Kafka is written to disk and replicated for fault-tolerance.

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

另外Kafka据说吞吐量很高,不写入磁盘会影响性能吗?是否可以配置为仅将消息存储在内存中而不存储在磁盘中?

最佳答案

Jay Kreps(在 LinkedIn 时是 Kafka 的原始架构师之一)撰写的这篇博文解释了 Kafka 如何被独特地设计为一个提交日志,它可以“在三台廉价机器上每秒执行 200 万次写入”,并且与并非以这种方式设计的传统消息代理相比,其消息传递率要高得多。

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

Kafka 具有可配置的参数,用于控制页面缓存刷新到磁盘的频率。如果没有最终写入磁盘,就不可能运行 Kafka。 Kafka 还将消息缓存在内存中以提高性能,因此它可以通过从内存读取提供高吞吐量,同时仍然保证从持久性到磁盘和集群数据复制以实现容错不会丢失消息。

关于java - 磁盘持久性和复制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44680289/

相关文章:

java - 当涉及驱逐时,Spring 的缓存注解是否可以安全使用?

apache-kafka - 将 linger.ms 保持在 0 的含义

java - Java 并发中 Await 和 signal 的工作原理

java - 如何与一些 JavaScript 函数共享 Java 代码中的变量

java - Spring-Batch:为未知数量的分区编写分区器

java - @Sort 在 Hibernate 中不起作用

java - Apache Kafka 0.9 Java API 使用主题开头的所有消息

java - 无法在 Windows 上使用 kafka-run-class.bat 运行类

spring-boot - 本地docker服务的Spring Boot Kafka连接问题

docker - 由于 OutOfMemoryError : Java heap space,Mirrormaker 停止