Contents
优化背景和目的
- 学习Memcached 代码
- 将 Memcached 的代码成为自己的技术积累
- 优化Memcache 代码,提高自己系统分析能力
源代码托管于Github上:
https://github.com/zuocheng-liu/ae-memcached
性能优化
网络模型的优化
-
网络IO多路复用 + 单线程
-
将 Redis 异步库 移植至 Memcached
优化动态申请内存机制
- 使用预分配,减小系统调用 malloc、realloc、free的次数,主要出现在新建/关闭链接时,会有较多的系统调用
部分小的函数使用宏代替
优化Memcache协议命令的解析
- 调整各个命令的解析顺序,把get 和 set 命令放到最前面
软件架构优化
软件架构优化,保证关键代码性能不变
使用宏加强代码复用
- 重构verbose日志
- 重构网络库
- 重构slab
命令模式重构 Memcache 协议
- 创建command_service类,统一管理命令的解析、处理
更深层次的抽象
将 stats 、 settings 、 logger 和全局资源进行抽象
解耦
- 将各个模块接口化,减少模块间耦合,尤其是 slab item memcached之间的耦合
- 依赖注入原则,增强各个模块的复用,其中mem_cache模块 settings等可以形成框架。
- logger
- command service
Pingback引用通告: 工程师手记-将Memcached内存管理机制移植至Redis | 作程的技术博客