Releases: alany-dev/webserver
Releases · alany-dev/webserver
Release list
2.0版本
完成基本模块开发
重构协程模块
优化日志系统
实现内存池模块
Features
- 新增 ThreadCache、CentralCache 和 PageCache 类
- 实现内存分配和回收机制
- 添加内存池性能测试,包括小对象分配、多线程测试和混合大小测试
- 优化 fiber 栈分配,使用内存池替代 malloc
NOTE
- 多线程情况下,表现良好
- 其他情况,表现一般(不知道是为什么)
TODO待优化
- 锁优化:CentralCache使用了atomic_flag作为自旋锁,可以考虑使用更高效的锁实现,例如读写锁或无锁数据结构,以减少竞争。
- 内存回收机制:可以考虑添加垃圾回收机制,定期检查长时间未使用的内存块并归还给系统。
- Span管理优化:PageCache中的Span管理可以使用更高效的数据结构,例如哈希表或跳表,以加速查找和合并操作。
- 缓存局部性优化:考虑内存布局,使频繁访问的数据在缓存中更容易命中。
- 内存分配策略优化:基于实际使用模式调整BatchNum和内存回收阈值。
实现异步日志功能
Features
- 新增 Buffer 类用于缓存 ⭐
- 新增 BufferManager 类用于管理缓冲区 ⭐⭐⭐
- 新增 LogEvent 序列化和反序列化,用于缓存 ⭐
- 新增 LoggerBuilder 类,实现建造者模式 ⭐
- 新增 WorkerManager 类用于管理多个调度器 ⭐⭐⭐
- 新增 FiberSemaphore 类,实现 Fiber 信号量 ⭐
- 新增 config_init 更新配置文件格式,支持异步日志配置和调度器配置
- 新增 FSUtil类 文件操作的 工具函数
- 新增 noncopyable 类
- 新增 SingletonHungry 饿汉式的单例模板实现
- 优化 IOManager 类,增加 tickle 方法的参数,增加日志可读性
- 优化全局静态单例 LoggerMgr 和 WorkerMgr 创建顺序问题 ⭐⭐
- 优化多个模块之间的编译顺序问题 ⭐⭐⭐
- 修改部分命名错误
TODO
- 增加 网络模块的 封装 ⭐⭐⭐
- 增加 循环写入文件 的 LoggerAppender ⭐
- 增加 云存储的日志 LoggerAppender ⭐⭐⭐
- 增加 调度器 中 线程池线程数量的 动态调整