Journaling is a common technique to implement durability while keeping performance high with servers that use magnetic disks. Databases (e.g., Postgres and HBase WAL) and file systems (e.g., Linux ext3, HDFS Namenode, ZooKeeper) have used this technique to guarantee that changes are durable and enable recovery when machines crash. An additional example, quite important for our properties but not traditionally considered an example for journaling, is messaging systems. With messaging systems, we have clients that publish messages and clients that consume published messages. For such systems, it is quite often desirable to guarantee that messages are delivered despite crashes, slow processes, or slow network.
One key property of journaling is that it induces sequential writes. All modifications are appended to the journal and there are no modifications to random parts of the journal. This property enables writing efficiently to magnetic disks, avoiding disk seeks that could degradeRead More »from BookKeeper – Durability at Scale