- 0
- 0
- 约小于1千字
- 约 1页
- 2026-08-19 发布于北京
- 举报
内存buffer、OSbuffer、磁盘文件,fsync,flush,都给大家铺垫好了前置的知识,都结合JDK
文档对IO流的flush的语义做的说明
默认情况下,如果OS不及时的fsync到磁盘,会在机器宕机的情况下,导致一些数据的丢
失,ES举了一个例子,写入的数据不是立马fsync到磁盘,导致写入的性能很差,导致写入
并发能力会很差
优先写入都是在内存buffer和OScache/buffer,都是在内存层面来解决的,高性能的写入,
高并发的写入,后续找一个时机来将buffer数据fsync到磁盘文件里去,减少频繁的磁盘读
写的操作
hadoop,接收到block文件,也是上述的做法
导致一个问题,结合源码来看看,block接收完毕,仅仅是对IO流执行flush,导致数据
可能停留在OSbuffer层面
rename操作,File的renameTo操作,JDK文档对他的说明就是:具体如何执行依赖于
底层的平台(OS操作系统),有可能rename不会成功,有可能不是原子的,有可能会因为
目标文件的存在而失败
rename操作是否可以立即在磁盘层面生效,也是持有疑问态度的
flush、rename,都不一定立在磁盘层面生效,那么此时如果
原创力文档

文档评论(0)