[转载]第二节 Memcached之MemcachedProviders(Enyim)客户端使用及测试 – 小城岁月 – 博客园.
本节探讨问题:
- MemcachedProviders简单介绍
- MemcachedProviders如何配置使用
- MemcachedProviders命中率测试
MemcachedProviders是对Enyim.Caching的再次封装,并加入了客户端计数器功能以及Session数据库管理功能。上一节已 经提供了下载链接,需要下载的朋友到前一节下载。Enyim也是应用比较广泛的Memcached .net客户端,和之前的Memchachedonet 客户端相比,分布式算法应该做了相应优化(具体可参照第一节的原理环节查看),这一点我们在后面的测试环节做一下验证。我们先来看一下Enyim的基本业 务类图
以上为Enyim的基本业务类,开发中可直接使用MemcachedClient类+配置文件 完成基本的存取删除业务。其中ServerPool从配置文件读取服务器列表维护到MemCachedNode中,并且可以标记出哪些处于活动,哪些停止 响应的服务器从而方便客户端快速找到可以正常使用的服务器。在Operation类中,可以看到Enyim已经使用了二进制协议。
二、MemcachedProviders如何配置使用
如果喜欢简洁的可以直接使用Enyim.Caching开发,我们这里使用对Enyim.Caching再次封装的MemcachedProviders,因为他用来显示的更简洁。
简单的列一下MemcachedProviders 的几个基本类
DistCache 直接CURD的数据的静态类
MemcachedCacheProvider 策略模式提供的给DistCache的业务类
CacheProviderSection 缓存配置文件节点类
上图显示了MemcachedProviders的基本业务流程,我们在使用DistCache时,他首先会从配置文件找到对应的缓存策略 Providers,MemcachedCachedProvider是实现了计数器功能的一个策略,当然你也可以继承CacheProviders重写 一个策略类,而该类只需要实现MemcachedClient就可实现基本的业务。MemcachedClient被实现的时候,会实现默认的 ServerPool 去读取Enyim节点的服务器配置信息。很简单吧,那我们就开始测试环节的工作了。
三、MemcachedProviders命中率测试
MemcachedProviders源码是GIT上载的,GIT的项目基本上都是SVN搭建的,解压后会看到Branches(项目分支),Tags(里程),Trunk(项目主线)
我直接选了主版本Trunk的源码解决方案,新建设了一个Demo测试项目。
开始工作前我们参照上节,分别用MemcaheD Manager在3台服务器上搭了Memcached服务端
测试代码同上节一样,100条记录存取,分别3,4,5服务器测试。
配置文件先设置3台服务器
测试结果1:
MemcacheD Manager结果:
测试2:MemcacheD Manager清空所有服务器数据,在增加一台服务器继续测试,代码部分相同
配置文件:
测试结果2:
测试3:再增加至5台Server
配置文件:
测试结果:
看下工具的结果:
3次测试结果,100条记录分布在不同的Server上,Hit 100% MISS 0次。结果还是很理想的,看来Enyim改进的算法还是很优秀的,加上配置化,计数器等功能总体上优于Memcachedonet。
我们来看下MemcachedProviders计数器结果:
好了,这一节就到这里了。