已采纳回答 / 麦可同学
视频中这样是不行的,因为这里在goroutine中打开了文件句柄,相当于每个goroutine中的单独维护了指针位置,不过这样读取读取文件效率极高,通常不会存在瓶颈。非要使用多个goroutine去读取的话,可以将读取模块中的rd放到全局变量中,不过bufio包貌似不是线程安全的,也会存在问题。
2018-05-05
已采纳回答 / 麦可同学
1,这个问题其实我在最后一节课有提到,如果产生了新的日志文件,你需要再读取模块里检查当前文件的inode是否改变,有变化就重新打开文件句柄即可。2,可以考虑先将日志做统一搜集,比如都发送到队列中或者落地,然后读取模块消费这些数据,有很多开源的解决方案,flume ,scribe什么的。如果日志量巨大,只用于监控的话,这样做的成本比较高,可以使用prometheus这类拉取模式的解决方案。
2018-05-01