Go语言项目推荐5

给大家推荐一个偏基础架构开发的项目——基于bitcask的kv存储引擎。

bitcask存储引擎本身不是一个项目,而是基于论文《Bitcask: A Log-Structure Hash Table for Fast Key/Value Data》的一种KV存储引擎设计思想。目前github上已经有很多人用各种语言实现过该存储引擎 ,在这里我推荐一个用go语言实现得比较好的仓库:**************************************************

我简单讲一下传统KV存储引擎和bitcask的区别(注意哦!简历项目亮点)。传统的KV存储引擎(比如redis)都是将数据保存在内存中,当数据量较大时,往往对内存的压力非常大,快是快,但是总感觉不是那么友好。如果可以设计一种KV缓存,既能够保证数据读写的速度,又能够将数据持久化存储到硬盘上,显著减小内存的压力,那岂不是一举两得。bitcask的设计理念就能够很好地平衡这两者。

bitcask改变了传统KV存储引擎把数据存在内存的方式,把数据全部记录到了磁盘上,通过在内存中维护一张索引表,记录了每条数据在磁盘中的位置,以及key和value的长度,需要的时候查询内存中的索引表,通过系统调用将数据从磁盘中存放的位置拿出即可。当内存中的索引丢失时,由于数据在磁盘中持久化存储着,因此bitcask只需要通过一次设计过的Merge操作,根据磁盘里的数据重新构建一张索引表到内存中即可。

如果大家需要这个项目写到简历上,我推荐切到仓库的demo分支,将代码理解后复现一遍。我给大家简单讲一下这个仓库实现的设计理念。最底层记录的一条数据叫做Entry,代表了db中的一条数据。与Entry打交道的对象叫做Storage,提供了一系列写入,读取数据的方法。同时还有一个Index结构,用于在内存中维护KV数据在磁盘中的索引。最后是最顶层的DB层,通过聚合Index和Storage,提供了一系列增删改查(Get/Set/Delete等)和数据崩溃恢复的操作。具体的实现细节大家可以自行看代码理解,这个项目代码量不算大,我个人认为还是比较适合作为一个基础架构类的项目写到简历上。

25届秋招在即,祝各位小伙伴们披荆斩棘,早日成为offer收割机,加油!


全部评论

相关推荐

还想问问golang有哪些推荐的简历项目,在哪可以找
Terryhimself:计网 数据库 redis都常问,然后项目的话有一个7days golang系列可以看看,一般一个web项目+一个轮子项目日常实习就够了,然后就是看下八股 刷刷算法题
点赞 评论 收藏
分享
14 38 评论
分享
牛客网
牛客企业服务