`
iunknown
  • 浏览: 403833 次
社区版块
存档分类
最新评论

SPNetKit:http/smtp/pop3/memcached 的客户端库

阅读更多
SPNetKit 主要是一个常见应用层协议的客户端库,使用 C++ 实现,目前实现了 http,smtp,pop3,memcached 。
对于每个客户端都带有一个命令行的示范例子。

http/smtp/pop3 除了 TCP 实现之外,也能支持 SSL (基于 openssl)。
memcached client 支持了最新的 memcached 1.2.4 中新增加的 'append', 'prepend', 'gets', and 'cas' 命令。

除了这些客户端实现之外,还包括一个读取 ini 配置文件的类,base64 编码和解码类。

主页:http://code.google.com/p/spnetkit/
下载:http://spnetkit.googlecode.com/files/spnetkit-0.1.1.src.tar.gz
3
0
分享到:
评论
1 楼 iunknown 2008-02-17  
发布了 0.2.0 版。这个版本主要是实现 memcached client 的多台服务器支持。
目前的实现采用了 consistent hashing 算法。先来看那一下配置文件:
[SocketPool]
ConnectTimeout = 6
SocketTimeout  = 6
MaxIdlePerEndPoint = 10
MaxIdleTime = 3600

[EndPointTable]
TableKeyMax = 1000
Server0 = "0-199"   127.0.0.1:11211
Server1 = "200-399" 127.0.0.1:11212
Server2 = "400-599" 127.0.0.1:11213
Server3 = "600-999" 127.0.0.1:11214


首先是配置一个 SocketPool 。MemcachedClient 采用非阻塞 socket 方式,因此可以控制连接和数据传输时的超时时间。
MaxIdlePerEndPoint 是针对每台服务器能够保留最多的空闲连接数。
MaxIdleTime 是当从 Pool 中取出一个 Socket 的时候,如果这个 Socket 的空闲时间已经超过了 MaxIdleTime ,那么将废弃不用。

consistent hashing 算法主要体现在 EndPointTable  这个配置节中。
TableKeyMax 设定了一个集合 KeyHashSet 。
在上面的配置中,设定的 KeyHashSet 为 [0-999]
所有的 Server 从这个 KeyHashSet 中,认领一部分。
Server0 认领了 [0-199] ,Server1 认领了 [200-399] ,如此类推。
当需要对一个 key 进行操作的时候,首先对这个 key 做一次 hash 运算得到一个 HashValue 。
通过 HashValue mod TableKeyMax 得到一个在 KeyHashSet 集合内的 KeyHash 值。
然后就可以根据各台 Server 认领的情况,找到对应的 Server 。

只要保证对 key 使用的 hash 算法不变,并且 TableKeyMax 不变,那么对于同一个 Key 就总是得到同一个 KeyHash 值。
当需要对 Server 做部分调整的时候,只影响调整的那部分 Server ,其他的 Server 将不受影响。
比如上面的 Server3 认领的 KeyHash 比其他的 Server 都多,那么将来如果要对 Server3 进行拆分,可以重新做如下的配置:

[EndPointTable]
TableKeyMax = 1000
Server0 = "0-199"   127.0.0.1:11211
Server1 = "200-399" 127.0.0.1:11212
Server2 = "400-599" 127.0.0.1:11213
Server3 = "600-799" 127.0.0.1:11214
Server4 = "800-999" 127.0.0.1:11215


在这这样拆分之后,原来保存在 Server0/Server1/Server2 上的数据都不受影响。
受影响的只是部分原来保存在 Server3 上的数据。

相关推荐

    memcached安装及java应用使用memcached

    NULL 博文链接:https://da-zhuang.iteye.com/blog/2234078

    Linux下Nginx搭建

    http://memcached.googlecode.com/files/memcached-1.4.10.tar.gz 本例使用的是1.4.10版本的memcached 4.其他相关下载 由于使用集群,所以tomcat 间的session 同步就显得尤为重要。 本例中使用memcached-session...

    Java面试 Java分布式知识点 Java微服务知识点 面试知识点

    memcached:// 7 redis:// 7 rest:// 7 服务之间的调用是阻塞的吗 7 同步调用 8 异步调用 8 Dubbo默认使用什么注册中心,还有别的选择吗? 9 Dubbo序列化 10 服务提供者能实现失效踢出是什么原理? 10 服务上线怎么不...

    memcached 双机热备

    memcached 双机热备详细安装过程,以及与spring集成过程

    常用Java Web应用软件 (LNMJ,LAMJ)安装

    为进一步配置和实现LNMJ和LAMJ架构(负载均衡与集中式Memcached集群)进行前期准备。本文记录了安装过程经常出现的错误,并提供了解决办法,具有很好的实用性,是居家旅行必备之良品。 主要内容有: VirtualBox4.0的...

    Alcinoe_4_02_25

    很牛的WinInet封闭库,处理http/https/ftp/smtp等协议,当然能称得上Suite还有其他资源,最重要的是full source & free !! Compoments suite for Delphi: * Self-Balancing Binary Trees * Private Key ...

    dubbo技术介绍

    memcached:// redis:// 注册中心参考手册 Multicast注册中心 Zookeeper注册中心 Redis注册中心 Simple注册中心 Simple监控中心 Telnet命令参考手册 ls ps cd pwd trace count invoke status log help clear exit ...

    [2022年]最新萝卜影视APP源码麻花金色UI最新原生版APP

    可以说这是目前以来很牛的一款源码,无论是流畅度,还是原生稳定性 测试环境 *APP环境:Android Studio,纯Java原生开发。 ...直接上传访问安装 ...前端模板海螺的 ...安装详情:http://ban.maonius.cn/app/158.html

    QzzmServer V1.0.4准正式版(集成nginx+php+mysq+memcached)

    QzzmServer V1.0.4准正式版(集成nginx+php+mysq+memcached) 1.0.3版传送门如下 第一部分 http://download.csdn.net/detail/qzzmcom/5696677 第二部分 http://download.csdn.net/detail/qzzmcom/5696679

    xmemcached-1.2.4源码

    XMemcached is a high performance, easy to use blocking multithreaded memcached client in java. It's nio based (using my opensource nio framework :yanf4j), and was carefully tuned to get top ...

    memcached全套安装资料,memcached库,libevent库, C/C++ memcached 客户端库:libmemcached

    memcached 安装文件,libevent库, C/C++ memcached 客户端库:libmemcached 全套工具:libevent-1.3.tar.gz,memcached-1.2.2.tar.gz,libmemcached-0.42.tar.gz 测试通过的

    意盟程序YimonServer(Nginx php绿色服务器软件)v0.1.0.zip

    7、如果在"扩展功能"中选择使用Memcached,它的端口为:11211   YimonServer集成一下软件:   Nginx 1.0.10 PHP  5.2.17 PHP  5.3.8 MySQL 5.1.60 MySQL 5.5.17 PHPMyAdmin 3.3.10.5 eAccelerator 0.9...

    php-memcached-3.1.3.tar.gz

    安装php-memcached扩展 https://github.com/php-memcached-dev/php-memcached tar -zxvf ...

    知识管理Mediawiki

    MediaWiki 是一套以GPL授权发行的Wiki引擎。...MediaWiki具有很高的相容性和可塑性,现在的版本支持memcached及Squid cache系统,亦支持TeX数学公式。其扩展系统允许用户自行添加他们需要的特性及客制化程式介面。

    spring整合memcached

    spring整合memcached 新手入门

    spnetkit:BSD 样式套接字的 C++ 包装器

    实现的应用层协议有 HTTP 客户端、SMTP 客户端、POP3 客户端和 memcached 客户端。 功能包括 inifile 阅读器、base64 编解码器。 SPNetKit 可通过 FreeBSD Ports Collection 获得。 变更日志: 0.3.0 版 (03.28....

    memcached1.2.6 & php_memcace.dll & php5.3 for windows

    Module compiled with module API=20090626, debug=0, thread-safety=0 ...These options need to match 试着百度很多资料都不行!谷歌后找到如下资料,附下网址,方便再次...网址二:http://downloads.php.net/pierre/

    memcached客户端工具

    TreeNMS是一款redis,Memcache可视化客户端工具,采用JAVA开发,实现基于WEB方式对Redis, Memcached数据库进行管理、维护。 功能包括:NoSQL数据库的展示,库表的展示,key,value的展示,新增,修改,删除等数据的...

    APMServ 5.2.6

    5.2.6、MySQL 5.1.28&4.0.26、Nginx、Memcached、phpMyAdmin、OpenSSL、 SQLite、ZendOptimizer,以及ASP、CGI、Perl网站服务器平台的绿色软件。 1、注意事项:APMServ程序所在路径不能含有汉字和空格。 2、MySQL...

    Linux下的Memcache安装方法

    下载:http://www.danga.com/memcached/dist/memcached-1.2.2.tar.gz另外,Memcache用到了libevent这个库用于Socket的处理,所以还需要安装libevent,libevent的最新版本是libevent-1.3。(如果你的系统已经安装了...

Global site tag (gtag.js) - Google Analytics