跨平台轻量级redis、ssdb代理服务器(C++ 11编写)
2015-11-20 09:45
363 查看
dbproxy 是我业余采用C++11编写的跨平台代理服务器(并使用lua和自己的网络库),以扩展系统负载,同时使用多个后端数据库,后端数据库支持redis和ssdb。
需要由用户自己编写lua脚本控制sharding。测试效率比codis略高,且占用更少的CPU和内存。
下面是github上的readme,我直接拷贝下来:
windows:打开根目录的DBProxy.sln编译即可。
linux:
1 : 在项目根目录执行
2 : 回到项目根目录执行
3 : 继续在根目录下执行
4 :直接运行 ./dbserver 即启动代理服务器。
redis或ssdb使用代理服务器跟使用redis 或ssdb几乎没有区别,使用任意的redis或ssdb客户端均可,代码不必做调整,只需要把ip和port指向代理服务器的地址即可。
后续:
效率上还能进一步提升和优化,感谢大家尝试,提出意见。
需要由用户自己编写lua脚本控制sharding。测试效率比codis略高,且占用更少的CPU和内存。
下面是github上的readme,我直接拷贝下来:
介绍
dbproxy是一个采用C++11编写的代理服务器,支持redis和 ssdb数据库。 其主要用于扩容和提高系统负载。使用lua控制sharding,把不同的key-value映射到不同的后端redis或ssdb服务器。构建
dbproxy支持windwos和linux。windows:打开根目录的DBProxy.sln编译即可。
linux:
1 : 在项目根目录执行
cd 3rdparty/luasrc/src/命令进入lua src目录,然后执行
make generic构建
liblua.so
2 : 回到项目根目录执行
cp 3rdparty/luasrc/src/liblua.so .将
liblua.so拷贝到当前目录。
3 : 继续在根目录下执行
make server构建
dbserver即可。
4 :直接运行 ./dbserver 即启动代理服务器。
配置文件
dbproxy的配置文件是Config.lua 其ProxyConfig的
backendskey配置后端服务器列表,其中的
sharding_function指示sharding函数。 作为示例,
test_sharding就是被指定的sharding函数,其根据key参数,返回对应的服务器号,这里返回0,意思是将key映射到
127.0.0.1:
6379这个服务器。
redis或ssdb使用代理服务器跟使用redis 或ssdb几乎没有区别,使用任意的redis或ssdb客户端均可,代码不必做调整,只需要把ip和port指向代理服务器的地址即可。
补充
目前dbproxy只作为代理映射,不包含读写分离以及额外缓存,也不解决分布式等问题。 当然其服务器C++代码主体并不涉及任何sharding方案,必须由用户自己在Config.lua里自己实现sharding函数 (当然,也可以从网上找现成的,譬如lua版的一致性hash lua-consistent-hash)感谢
一定程度上借鉴了redis-shatter和codis。后续:
效率上还能进一步提升和优化,感谢大家尝试,提出意见。
相关文章推荐
- 15天玩转redis —— 第六篇 有序集合类型
- Redis 学习整理
- php配置redis储存session
- 基于redis的多线程生产消费模式
- haproxy,tengine,redis,rpm 打包
- Redis集群
- Redis主备自动切换
- Redis主备复制
- Centos下搭建redis缓存数据库
- redis-cluster研究和使用(转)
- redis 3.0 cluster 集群 学习之路篇(资料汇总)
- 用脚本批量执行redis命令
- Redis主-从部署实践
- Resid 学习笔记1-基础命令
- PHP-Redis扩展使用手册(四)
- 【转】redis配置认证密码
- 15天玩转redis —— 第五篇 集合对象类型
- Nginx+Lua访问Redis
- debian7.7环境下 源码安装redis以及phpredis扩展
- redis优化配置和redis.conf说明(转)