在很多场景下我们需要用到文件系统监控,比如构建配置的热加载,词典的触发备份等,之前我写过一个基于轮训实现的文件系统监控 kwatcher,现在再看的话发现有很多地方不足
- 效率低。对于不经常变动的文件,每隔几秒的检查是多余的
- 时效性低。时延最大达轮训间隔时间。
fsnotify
查看业界常用的Go文件监控库fsnotify源码,以上几点都有解决,特此记录笔记。
|
|
fsnotify在不同OS上的底层实现不同,在Linux上基于inotify实现。fsnotify在linux上实现要点
- 基于事件驱动实现,效率远高于轮训且无时延
|
|
fsnotify工作流程
核心源码
|
|
消费示例
|
|