Rrd 文档 总结 (三) 深入研究一下

来源:互联网 发布:知否 齐衡 编辑:程序博客网 时间:2024/05/18 15:50

2010年1月19日 星期二
 
 * 研究一下JRobin的实现原理

 * JRobin它自己扩展了数据类型,如RrdString、RrdInt、RrdLong、RrdDouble等!这些数据类型类型都是从RrdPrimitive这个类继承的。

 * 在RrdPrimitive中的成员变量中有一个RrdBackend类的实例和一个pointer。

 * 我们可以认为RrdBackend中包含了整个Rrd文件的所有信息,pointer 则是指向数据位置。
 
 * 我们可以根据 pointer 和 RrdBackend 去读和写数据到rrd文件。

 * *****************************************************************
 
 * RrdBackend 现在有两种真正的具体实现,一个是RrdMemoryBackend,一个是RrdNioBackend
 * RrdMemoryBackend 是将数据都存到内存中,RrdNioBackend 是将数据写到磁盘中。
 * RrdMemoryBackend 用一个byte[] buffer数据存储信息,rrd文件的所有信息都通过RrdDef的定义算出所占用的Byte,这个数目就是buffer的下标。再将数据以Byte的形式写到buffer中。 
 
 * 我们可以通过参考RrdMemoryBackend 的实现,扩展出一种新的RrdBackend,如数据库的存储方式,这样就能将rrd数据存到数据库中了。

 * 具体是,参考RrdMemoryBackend 将他的成员变量 buffer 提供出 Setter和getter方法,这样我们就能取到byte[]数组,再参考他的RrdMemoryBackendFactory类,更改他其中的方法,open exists delete 方法,将数据存到数据库中,并对其操作。
 * 大概的就是这种方式思路,具体实现请仔细研究源码。

 * ******************************************************************

 * 以上 仅仅是我个人看JRobin源码了解到的,如有什么理解错误请指出!谢谢!

原创粉丝点击