Sex Slave Cock

memcached : N.S.thoughts Realy Cocksuckerchamp Szh 2009 10 14 Download Livebrush To Create Artistic Graphics Sex Slave Cock Sucker Chapm

Realy Cocksuckerchamp Szh 2009 10 14 Download Livebrush To Create Artistic Graphics Sex Slave Cock Sucker Chapm

多Db
这是另一个有意思的东西,Redis支持不同的db空间,通过selectdb来切换到不同的db空间。从而实现数据的隔离。redis允许key在不同的db之间移动,也支持flush某个db。这个特性可以解决原来memcached中不支持tag/namespace的问题。

Sharding
和Flare不一样,Redis本身没有内置的sharding功能,而是需要通过client api来实现。比如和libmemcached一样通过实现consistent hashing来实现sharding。

Replication
仅支持简单master-slave。 slave支持只读查询,slave也可以通过上级slave来获得同步数据。

缺陷:
1. redis将所有数据放入内存中,而通过后台进程定时将数据dump到磁盘上,从而实现持久存储。这是redis为什么这么快的原因。因此,如果你的存储数据超过可用内存大小,就会导致OS使用swap文件。作者解释,鱼和熊掌不可兼得,既然要快,就多费点内存吧,反正现在内存也很便宜,呵呵。
2.由于只能通过client端实现sharding,而redis并不支持master之间的复制,因此如何实现动态节点添加和删除,只能由client端来实现。从这个方面说,redis还只能作为一个高级的memcached。

=====
我准备测试用Redis解决以下场景的问题:
1. 高速消息队列
2. 访客列表类
常见的最近来访啊,这篇文章谁看过啊,谁谁点评过啊,等等
3. SNS中常见的事件,最近发生了什么
4. 最近更新名单
虽然以上这些通过将数据结构unserialize为string后可以用memcached来实现,但既然redis是data structures server,那么会更加高效好用。
同时,这些数据也不是关键数据,即便丢失也无伤大雅,对于需要可靠保存的数据,要么使用flare,更为安全则应使用传统的数据库。

July 19, 2009 | Filed Under Technotes

2 Comments 

Flare-兼容Memcached协议的分布式(key/value store)键值存储系统

Flare, Green Lab开发的开源产品,底层使用TC, 完全兼容Memcached协议(ASCII,非binary)。主要有以下特性:

现在似乎大家都很关心好的key/value存储方案。作为传统数据库的补充。Memcached由于缺乏持久存储功能,因此无法作为一个可靠的key/value方案。
我之前关注过基于Memcached派生的一些方案,包括
memcachedb – 新浪团队的,bdb+memcached协议
tokyo tyrant – TC+memcached网络接口
LightCloud 在Tokyo Tyrant上实现了多节点的分布式管理。

repcached - 在memcached源码基础上增加复制功能
redist - 除了string,还允许存储list、set等类型

除了上述软件,还有一些用Erlang,Java的方案,我并没有考虑。首先,我的使用场景还没有大到那个地步,我希望选择一个性价比更高的中低端方案

这其中,最关注的是TT(Toyko tyrant)。 但TT令我不太满意的是对于memcached的协议的兼容性并不够好,比如不能正确处理过期,也不能处理flag。导致客户端无法正常解压缩和unserialize,虽然在client端都能处理,不过当时是打算作为一个session storage,无法自动过期就比较麻烦,解决方案是通过在TT端执行lua可以进行gc处理,总体感觉不够完满。
memcachedb 对于存储定长字段不错,但不固定长度记录的存储似乎不够好,也没有现行的例子。
repcached 仅仅是支持mm复制,但无法正面解决持久存储的问题。

redist 当初测试时缺乏我需要的api。不过目前已经有了PHP PECL版本的api。 redist的复制机制现在也有了很大的改进。redist的应用实例不多。但是,我认为它和mongoDb一样,值得持续关注。

flare 则是最后选择的。经过测试,虽然速度上没有其他那么快,但其良好的扩展能力让我非常满意。此外,对于memcached协议的兼容性也做的很好。
还有1个特性,flare的key可以超过256bytes,而value可以超过1mb。 传统memcached由于内存分配策略因此有上述限制。
flare的底层存储是可以扩展的,目前使用的是tc(tokyo cabinet)。
从这个结构上看,倒是一个tt的很好替代品。

flare的运行性能还是不错,目前在GREE中得到实际应用,摘自项目网站描述:

Flare is running at GREE (one of the major SNS services in Japan) w/ 6 masters and 6 slaves (over 2,000M keys), and 500-1,000 qps (load average is nearly 0.00…).

看起来很诱人。因为同样TT超过100M的key,性能会直线下降。plurk的lightclound通过多节点的负载均衡解决了这个问题。(btw,plurk.com目前是被和谐中,要想取得lightclound源码还需要穿墙,唉)

以下是在我的osx上进行的安装测试。

1. 首先下载源码

Top/OpenSource/Flare/Download-en.html

2. 使用port安装boost

$ port
install boost

3. 安装tc

4. 编译flare
tar zxvf flare-1.0.8.tgz
./configure –with-boost=/opt/local –prefix=/opt/flare
make install

flare编译后只有2个文件
flarei,flared
分别是index server和node server.
很清爽啊。

5.运行
flare sources下有一个etc目录,中间分别有index server, node server的配置。
可以直接复制到/opt/flare/etc
然后使用
flared –daemonize -f
flarei –daemonize -f

就可以跑起来了。

6.概念
Flare有几个概念,需要理解
index server
这是索引服务器,用于控制node server的状态
注意,client并不直接和index server进行交互。
node server
这是实际存储节点. node有3种role:
master/slave/proxy
master是主节点,slave是分流节点,用于同步复制master
proxy则将client的请求转发到当前合适的节点(包括master/slave)。
有的人不太理解为什么要用proxy,是否多此一举,而实际测试表明,
通过proxy转发的请求的确要比直接connect到实际节点速度差很多。
这是因为,flare是一个集群,其中的node server是可以动态添加,删除的。 r memcached : N.S.thoughts Realy Cocksuckerchamp Szh 2009 10 14 Download Livebrush To Create Artistic Graphics Sex Slave Cock Sucker Chapmf r Sex i i Chapm Chapm h memcached : N.S.thoughts Realy Cocksuckerchamp Szh 2009 10 14 Download Livebrush To Create Artistic Graphics Sex Slave Cock Sucker Chapmy Cock Cock