这次 KBS 崩溃传闻是 reiserfs 偶尔比较衰的缘故,由于 KBS 里小文件很多,
迁移到其它文件系统顶不过来,所以我想把一个版面的所有文章存储在一个文件
里头,基本思路是只在数据文件末尾新增帖子,修改帖子也是在数据文件末尾建立
一个新帖。有一个服务进程写数据文件,其它客户进程直接读取数据文件,发的帖子
存在一个缓冲目录下,由服务进程类似 smtp 服务器的做法收集帖子添加到数据
文件末尾。
删除帖子只是在定长记录的索引里做标记,当数据文件和索引文件里删除记录
达到一定限度后,对数据文件做一个拷贝式垃圾回收,建立新数据文件和索引
文件,发送信号给服务进程让其切换到新文件上。
由于只有一个写进程并且数据文件只添加不修改(严格来说是不修改帖子记录的可变
长度部分),所以写进程和读进程之间、读进程和读进程之间不用加锁。
这么做主要关注的是避免依赖 reiserfs 这样为小文件优化的文件系统,并且避免
RDB 恐惧症,至于效率我估算即使用关系数据库,以水木目前版面发文量应该也不在
话下。
目前只实现了数据文件和索引文件的主要代码,还没有客户端和服务进程的-_-b
--
修改:Dieken FROM 211.157.41.*
FROM 211.157.41.*
附件(11KB) abbs-0.0.1.tar.bz2