ノードが書込み操作を行う際、データが永続的ストレージに書き込まれるのを待ってから、操作からの正常な復帰とするかどうかが指定されている必要があります。
書込み操作の実行の一環として、まず、メモリー内キャッシュにデータの変更が行われます。その後、ファイルシステムのデータ・バッファに書込みが行われます。最後に、データ・バッファの内容が永続的ストレージ(通常、ハード・ドライブ)に同期されます。
マスター・ノードが、このプロセスがどの程度完了するのを待ってから、正常ステータスで書込み操作から復帰するかを制御できます。要求できる同期永続性のレベルは3つあります。
NO_SYNC
データがホストのメモリー内キャッシュに書き込まれますが、マスター・ノードは、そのデータがファイルシステムのデータ・バッファに書き込まれ、データが永続的ストレージに物理的に転送されるのを待ちません。これは、最も速く、最も永続的でない同期ポリシーです。
WRITE_NO_SYNC
データがメモリー内キャッシュに書き込まれ、ファイルシステムのデータ・バッファに書き込まれますが、データが永続的ストレージに転送されていなくても操作は正常に完了します。
SYNC
データがメモリー内キャッシュに書き込まれ、ファイルシステムのデータ・バッファに転送されて、永続的ストレージに同期されてから、書込み操作は正常に完了します。これは、最も遅く、最も永続的な同期ポリシーです。
いずれの場合も、データは最終的には永続的ストレージに書き込まれる(それが妨げられるような障害が発生しないと仮定して)ことに注意してください。問題は、このプロセスがどの程度完了してから、書込み操作から復帰し、アプリケーションが次の操作に進めるかということです。