计划开发memcache 的.net版本,命名DipperRiver.Net
由来:
前几天看DNT3的代码,看里面已经集成了访问memcache的功能,想想的确现在少.net平台上的类似缓存服务器软件,MS的Velocity估计还有一段时间,就大致了解了一下memcache的功能结构,一看和去年自己设计的tcp通讯框架有点类似,由于框架并发tcp在2-3k,及大量处理数据库数据,因此也涉及到了一些cache的功能和策略设计。倒是现在想来设计一套完整的类似memcache的系统。
系统结构
先期采用memcache不互相通信的分布式模式,每个Cache服务器存放内容由应用系统决定,即应用端需要设计一套Cache的存取定位策略。
功能设计
Cahce:
实际存放应用系统的缓存数据
使用byte[]数组存储
TCP通信:
采用二进制通信协议
协议说明
缓存策略:
过期时间算法
LRU算法
LFU算法
内存管理:
内存存取功能
内存清理机制
内存池管理
系统监控:
管理客户端:
版本计划
v0.1 结构设计、通信协议设计。
v0.2 基本功能实现,Cache先采用.net内置集合类。
v0.3实现缓存策略模块、内存管理模块
v0.4tcp通信模型采用.net3.5版本的异步模型,异步上下文采用缓存池(以前使用2.0的,有内存碎片,在1.1下会OutOfMemory) 。
v0.5扩展内存管理功能,Cache采用缓存池技术,及碎片整理功能。
前几天看DNT3的代码,看里面已经集成了访问memcache的功能,想想的确现在少.net平台上的类似缓存服务器软件,MS的Velocity估计还有一段时间,就大致了解了一下memcache的功能结构,一看和去年自己设计的tcp通讯框架有点类似,由于框架并发tcp在2-3k,及大量处理数据库数据,因此也涉及到了一些cache的功能和策略设计。倒是现在想来设计一套完整的类似memcache的系统。
系统结构
先期采用memcache不互相通信的分布式模式,每个Cache服务器存放内容由应用系统决定,即应用端需要设计一套Cache的存取定位策略。
功能设计
Cahce:
实际存放应用系统的缓存数据
使用byte[]数组存储
TCP通信:
采用二进制通信协议
协议说明
缓存策略:
过期时间算法
LRU算法
LFU算法
内存管理:
内存存取功能
内存清理机制
内存池管理
系统监控:
管理客户端:
版本计划
v0.1 结构设计、通信协议设计。
v0.2 基本功能实现,Cache先采用.net内置集合类。
v0.3实现缓存策略模块、内存管理模块
v0.4tcp通信模型采用.net3.5版本的异步模型,异步上下文采用缓存池(以前使用2.0的,有内存碎片,在1.1下会OutOfMemory) 。
v0.5扩展内存管理功能,Cache采用缓存池技术,及碎片整理功能。