Go语言项目推荐5

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

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

我简单讲一下传统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收割机,加油!

全部评论
佬 你推荐的项目我都看了 自己也动手写了几个 但因为没写过简历 请教下 应该从哪些方面把项目写入简历
1 回复 分享
发布于 07-31 23:20 广东

相关推荐

11 32 评论
分享
牛客网
牛客企业服务