经常需要从服务端(或程序中)同步(写)日志到本地,参考数据库的重做日志,设计了高可用的写日志系统,原理如下:
T0时刻,日志文件为空。假设服务端的位置为1024012
T1时刻,内存接收到100字节,写入日志文件,更改Ahead为1024112, offset=100 (字节)
T2时刻,写入日志文件成功之后,设置 Behind=Ahead
实际实现的时候,每个日志文件都有2个指针文件,例如日志文件为:
2016012213.log
指针文件为:
2016012213.behind
2016012213.ahead
指针文件内容仅为一行:
position,offset