* C++服务器框架 - 协程库 C++,多线程,协程,web,MySQL
* 项目描述:
* 开发了在 Linux 环境下使用 C++实现的服务器框架,该项目核心在于编写协程库。该协程库通过 ucontext_t 实现了协程的轻量级调度,结合epoll 和定时器实现事件和定时器事件的回调。
* 个人工作:
* 基于 RAII 思想,封装了 pthread,实现了互斥量、信号量、读写锁等线程同步机制。
* 设计并实现了基于 ucontext_t的非对称协议,定义了三种协程状态,实现了子协程与主线程的切换。
* 实现了基于时间堆的定时器功能,支持定时事件的管理。
* 开发了 N-M 协程调度器,使 main 函数能够参与调度,并结合 epoll 和定时器实现了 IO 协程调度。
* 对 sleep、SocketIO、fd 操作等系统应用进行了 Hook 封装,将阻塞调用转换为异步操作。
* 项目难点:
* 设计高效的协程调度器,实现与epoll和定时器的无缝集成,以支持复杂的事件回调机制。
* 实现非对称协程的切换机制,确保在不同协程间的上下文切换既高效又稳定。
* 封装系统调用,解决传统阻塞调用在协程环境下的性能瓶颈问题。
* 基于Raft共识算法的分布式K-V存储数据库 Raft,RPC,K-V存储
* 项目描述
* 开发了基于Raft共识算法的分布式K-V数据库,在少于半数节点发生故障仍可正常对外提供服务。并配合RPC通信框和完成RPC数据存储功能。
* 个人工作
* 实现RPC通信框架,完成各节点之间的数据传递功能。
* 基于跳表数据结构实现跳表数据库, 存储功能。
* 实现Raft协议的心跳与选举机制,线程池触发心跳与选举任务,并通过群的日志提交状态。
* 实现日志读写与提交,由领导节点端的读写请求,并将日志复制至节点,在超过半数节点复制成功后提交日志,应用命令并返回响应给客户端。
* 项目难点
* 理解和实现Raft算法,让算法确保安全性,实现高效的日志复制和状态
* 实现高效的选举算法,确保在领导者效时快速恢复,同时保证系统的
可用性。
* 实现高效的日志复制,减少日志传输资源并处理可能的日志冲突。