简单简历 作品

XXX

后端开发工程师

个人信息

开源社区贡献

openGemini 分布式时序数据库

2023/04 - 至今
  • 数据导出功能:作为数据库迁移工具的基础,为命令行工具添加解析数据目录并导出行协议文本的能力。
  • Query管理功能
  • ID 分配:在分布式场景下,为所有查询语句自动分配全局唯一的 ID,从而为慢查询的管理和日志记录提供便利。
  • 手动慢查询管理:实现分布式场景下的 SHOW QUERIES 和 KILL QUERY 语句的支持,让用户能够手动管理运行中的慢查询。

项目实践经历

高性能网络服务器框架

2023/01 - 2023/04

项目概括:

基于 Linux 使用 C++ 开发,核心是 Reactor 模型,封装了一系列低耦合的子模块,例如日志模块、配置模块、线程和协程模块、协程调度模块。

实现细节:

  • 支持 Http 协议,实现 Servlet Dispatcher 将请求分发到具体的 Servlet 对象。
  • 采用主从 Reactor Group 架构,分离连接建立和 IO 处理,提高并发能力。
  • 基于 pthread 和 ucontext 封装线程和协程库,实现1:M:N的并发编程模型。
  • 基于单例模式实现全局的日志和配置中心,支持自定义日志输出和多种配置项。
  • hook 常用的 IO 系统调用,将 Reactor 模型中的异步代码组织为同步形式。

TinyKV 分布式 KV 数据库

2023/05 - 至今

项目概括

使用 Golang 开发的支持横向扩展,高可用、强一致,分布式事务的 KV 数据库。

实现细节:

  • 存储层:基于 KV 分离 LSM Tree 的 Badger 引擎,实现 Column Family 机制。
  • 一致性:参考etcd/raft 实现低耦合的 Raft 库,支持 Leader 禅让、配置变更。
  • 横向拓展:采用 Multi-Raft 架构,基于Key Range 分区,且支持自动分裂。
  • 分布式事务:基于 MVCC 实现单机事务,基于 Percolator 实现分布式事务。

BusTub 单机关系型数据库

2022/09 - 2022/12

项目概括

跟随 CMU15-445 课程进度,使用 C++17 实现一个支持基本 SQL 的关系型数据库。

实现细节:

  • 存储层:基于 LRU-K 以及可扩展哈希表实现 BufferPool ,承接所有磁盘访问。
  • 查询层:实现 Pull-Based 火山模型执行引擎,实现 Hash Join 和 Loop Join。
  • 事务层:基于 2PL 实现事务并发控制,支持 RU、RC 和 RR 三种隔离级别。利用全局 LockManager 管理R/W锁,使用 Wait-For Graph 检测和解决死锁。

个人项目/输出

项目:基于 Window-TinyLFU 的本地缓存框架

2023/06 - 至今

使用 Golang 实现 W-TinyLFU 缓存淘汰算法,使用 Count-Min Sketch 算法以及 Bloom 过滤器降低 LFU 的频次统计成本。

在该算法的基础上封装一个支持泛型和并发访问的本地缓存框架,支持 TTL 机制,采用 Shard Map 减小锁的粒度提高并发能力。


演讲:如何为开源社区贡献第一行代码

受 openGemini 社区邀请,在其线下 Meetup 技术沙龙北航站中对我参与社区贡献的经历做了简单的分享。