NCACHE 是基于 NGINX 的 WEB 服务器模型构件起来的缓存系统, 是SINA公司的开源产品。
本文针对NCache 3.X">技术架构进行详细的说明,让大家对该技术架构有一个更深层次的了解。
NCACHE最早的时候是作为NGINX的一个HTTP模块进行开发的,因为当时希望做到更好的兼容性和可扩展性,作为独立模块,可以被更好的推广和使用,安装也会很方便.但后来随着代码量的增加,功能的扩充,NGINX的原有模块框架已经不能很好的满足需求,因此提取了NGINX的内核代码,并把 CACHE部分嵌入其中,形成了的NCACHE。
1.总体架构
2.HASH索引结构
1.所有的数据通过HASH计算出应该均匀的分布在哪个ENTRY上
2.ENTRY实际只存储一个INDEX的下标值和一个互斥锁,这样可以压缩HASH表第一层所占用的空间,避免HASH表的空间浪费,现在全部索引约占用700MB空间
3.每个索引中存储了与缓存数据相关的信息:何时过期(缓存的存储时间 + MAX-AGE的值,每次缓存命中时都会用当前时间与这个时间进行比对), 数据长度,是否为压缩数据,是否为UTF-8格式等等
4.INDEX 负责指向INDEX链表中空闲的第一个索引块 (用于分配) 和 INDEX链表中空闲的最后一个索引块(用于回收) 这样可以将分配与回收使用不同的锁来控制减少冲突提升效率
时间: 2024-08-20 13:57:23