performance - 编年史队列硬断电恢复

标签 performance chronicle chronicle-queue

写入 Chronicle Queue 时,默认写入不会刷新到磁盘,因此我相信 linux 内核脏页缓存中的任何内容都会丢失。在发生电源故障时获得有保证的恢复的最佳方法是什么?电池支持的突袭阵列以及写入时强制刷新是一种好方法吗?或者在假设写入被安全记录之前,最好使用来自第二台机器的 ack 进行复制?这些方法中的哪一种具有最佳性能?理论上,如果在同一个电网上,停电可能会影响两台机器......

最佳答案

anything that is in the linux kernel dirty page cache is lost.



是的

What's the best approach to get guaranteed recovery in the event of power failure?



将数据复制到第二台或第三台机器。这样即使整个机器/数据中心无法恢复,您也可以继续运行而不会丢失数据。

Would a battery backed raid array along with enforced flush on write be a good approach?



您必须相信硬件的可靠性,这是 Chronicle 无法保证的,而且我们的许多客户以前都被烧毁过。

Or is it better to use replication with an ack from the second machine before assuming the write is safely recorded?



这取决于您的要求。我们认为这是最佳实践,尽管许多客户认为他们不需要此选项。

另一种方法是将数据复制到辅助机器并让辅助机器处理数据。这可以将引入的网络延迟减半。

Which of these approaches would have the best performance?



最好的表现是假设在发生故障时将使用手动流程并愿意接受少量损失。在这种情况下,您应尽快处理所有内容。

注意:有一些替代方案。
  • 您可以只等待关键消息的确认,其他消息类型可以立即处理。
  • 如果未确认的消息不超过 N,则您可以允许一个窗口来处理消息。

  • Theoretically the power failure could affect both machines if on the same power grid....



    这就是 2+1 复制可能是一种选择的地方。附近的一台备份服务器可以在机架或机架的一部分发生故障时恢复正常运行。一个第二个异地备份,复制速度较慢,但​​失败的可能性要小得多。

    关于performance - 编年史队列硬断电恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61145956/

    相关文章:

    java - 在带有 Chronicle Map 的 Scala 中使用盒装/原子值

    java - Chronicle Queue 可以像 RMI 一样使用吗?

    java - 编年史队列 : Convert cycle integer to timestamp and vice-versa

    performance - Haskell - 缓存函数调用的简单方法

    performance - hibernate 水化性能

    c# - WPF 应用程序在第一次交互后停止/卡住,例如单击按钮

    java - 在两个 JVM 之间快速传递图像数据

    java - 读取历史记录队列中写入的最后一个元素

    chronicle - 多个 Chronicle/ExcerptAppender 可以写入同一个队列吗?

    gwt - 如果基本,示例GWT应用程序需要30秒才能加载到浏览器中,这正常吗?真正的应用程序需要2分钟吗?