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

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 上的数据。

相关推荐

    一个 python memcached 客户端库 .zip

    一个 python memcached 客户端库。概述该软件是 memcached 内存缓存守护程序的 100% Python 接口。它是客户端软件,允许将值存储在一个或多个(可能是远程的)memcached 服务器中。在 Google 上搜索 memcached 可...

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

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

    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 ...

    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

    memcached安装及java应用使用memcached

    3. **Java客户端库**:介绍常用的Java库,如spymemcached、xmemcached等,用于与memcached通信。 4. **配置Java应用**: - **添加依赖**:在Maven或Gradle项目中引入相应客户端库。 - **连接设置**:如何配置连接...

    Go Memcached 客户端库 #golang.zip

    关于这是用于 Go 编程语言 ( http://golang.org/ ) 的 memcache 客户端库。例子安装方式$ go get github.com/bradfitz/gomemcache/memcache然后像这样使用它import ( "github.com/bradfitz/gomemcache/memcache")...

    http://www.terracotta.org/

    标题 "http://www.terracotta.org/" 暗示我们关注的是Terracotta公司,这是一个专注于提供分布式数据管理解决方案的公司,特别是以其开源产品Ehcache和分布式内存计算平台Quintessa闻名。 Terracotta的技术使应用...

    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 测试通过的

    纯 Python Memcache 客户端实现的 Python3 端口.zip

    ---纯 Python Memcached 客户端库的 Python3 端口,已移植并正在通过https://github.com/eguven保持更新请报告问题并将代码更改提交至 github 存储库 https://github.com/eguven/python3-memcached以下是原始README...

    spring整合memcached

    注意,这里还需要Spring Data Redis库,因为Spring整合Memcached通常会借助Spring Data的抽象层。 2. **配置Memcached服务器**:在Spring的配置文件(如applicationContext.xml)中,定义Memcached服务器的连接...

    意盟程序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...

    Python库 | django_cache_url-0.5.0-py2.py3-none-any.whl

    **Python库 django_cache_url-0.5.0-py2.py3-none-any.whl** `django_cache_url` 是一个Python库,专为Django框架设计,用于简化和增强Web应用程序的缓存配置。这个库的核心功能是允许开发者通过URL样式的方式来...

    php-memcached-3.1.3.tar.gz

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

    redis-cpp17 是一个跨平台兼容的 redis 协议,具有多线程 c++17 客户端、服务器、代理.zip

    server详细测试方法参考 redis benchmarkhttps://redis.io/topics/benchmarks https://stackoverflow.com/questions/2873249/is-memcached-a-dinosaur-in-comparison-to-redisredis-cpp17 qq群324186207 qq ...

    CentOS 安装配置memcached

    /usr/local/memcached/bin/memcached -d -m 64 -u root -l 127.0.0.1 -p 11211 -c 128 -P /tmp/memcached.pid 其中,-d 选项是启动一个守护进程,-m 是分配给 Memcache 使用的内存数量,-u 是运行 Memcache 的用户...

    知识管理Mediawiki

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

Global site tag (gtag.js) - Google Analytics