NiFi使用预写日志来跟踪FlowFiles(即数据记录)在系统中流动时的变化。该预写日志跟踪FlowFiles本身的更改,例如FlowFile的属性(组成元数据的键/值对)及其状态,再比如FlowFile所属的Connection /Queue。
在这里,我们将描述用于实现此功能的实现细节和算法。
预写日志(WAL,Write Ahead Log)是关系型数据库中用于实现事务性和持久性的一系列技术,ARIES是WAL系列技术常用的算法。简单来说就是,做一个操作之前先讲这件事情记录下来。
可以为非内存型数据提升极高的效率,真正的执行操作可能数据量会比较大,操作比较繁琐,并且写数据不一定是顺序写,所以如果每一次操作都要等待结果flush到可靠存储(比如磁盘)中才执行下一步操作的话,效率就太低了。换一种思路,如果我们在做真正的操作之前,先将这件事记录下来,持久化到可靠存储中(因为日志一般很小,并且是顺序写,效率很高),然后再去执行真正的操作。
保证了数据的完整性,在硬盘数据不损坏的情况下,预写式日志允许存储系统在崩溃后能够在日志的指导下恢复到崩溃前的状态,避免数据丢失
参考: https://blog.csdn.net/winwill2012/article/details/71719106 https://cwiki.apache.org/confluence/display/NIFI/NiFi%27s+Write-Ahead+Log+Implementation