文档介绍:2012/07/06
轻量级分布式key/value存储系统在360的应用
议程
背景介绍
发展历程
单机方案
分布式方案
多集群方案
经验心得
2
背景介绍–应用场合
主要应用场合
数据离线流式生产(写)、海量在线检索(读)
木马/恶意网址云查杀
推荐系统
背景介绍–系统需求
系统需求
key/value的数据存储,平均value长度小于1K
低延迟
7*24小时在线
性能要求高
一致性要求
无节点失效时:强一致性
节点失效后:可以暂时停止写操作
发展历程– KVDB 0. 1
09年初– 10年底
10亿数量item
发展历程– KVDB 0. 1
单机内存哈希表存储引擎
在Memcached基础上做二次开发
内存利用率(将LRU特性做成可选:item结构中的time、exptime等成员)
比较多个关联容器实现:std::map、ext/hash_map、stlport::hash_map、google sparse_hash
hash_map的rehash问题
协议扩展:dump、load支持
大量只存储有无标识item:使用布隆过滤器支持,写时拷贝
发展历程– KVDB 1. 0
10年12月– 11年9月
超过30亿数量item
分布式内存哈希表存储引擎
考虑Membase
发展历程– KVDB 1. 0
分布式内存哈希表存储引擎
考虑Membase
问题:
存储引擎满足不了要求(SQLite)
改进:存储引擎可定制化
Memcached Proxy(Moxi)
问题1:对下游存储节点的超时处理过于暴力
问题2:没有短暂屏蔽失效节点的功能,下游存储节点故障会阻塞client
分布式Key/Value存储–性能
5台机器
key长度32bytes,value长度为32bytes。随机选取key,测试单机的情况:
单次读:get 45000
批量读(每笔100个key):gets 400000
写:set 42000
访问延迟:1万次查询(每笔100个key),
分布式Key/Value存储–单集群架构
单集群架构