dbproxy 是我业余采用C++11编写的跨平台代理服务器(并使用lua和自己的网络库),以扩展系统负载,同时使用多个后端数据库,后端数据库支持redis和ssdb。

需要由用户自己编写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 其ProxyConfigbackendskey配置后端服务器列表,其中的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-shattercodis

后续:

效率上还能进一步提升和优化,感谢大家尝试,提出意见。

最新文章

  1. 【poj3744】 Scout YYF I
  2. Oracle数据库
  3. Python for Infomatics 第12章 网络编程二(译)
  4. sqoop笔记
  5. CLR via C# 3rd - 03 - Shared Assemblies and Strongly Named Assemblies
  6. Microsoft Azure开发体验 – 网络报名系统
  7. CIO的职责、条件及价值
  8. FQ 也要使用 Telegram
  9. 设计模式之——单例模式(Singleton)的常见应用场景
  10. 【leetcode❤python】 36. Valid Sudoku
  11. 正确答案 全国信息学奥林匹克联赛( ( NOIP2014) 复 赛 模拟题 Day1 长乐一中
  12. Seajs demo
  13. Objective C静态代码扫描和代码质量管理 OClint + SonarQube
  14. 【转】树莓派学习笔记——I2C Tools 学习笔记
  15. where can I find source of com.android.internal.R.styleable.AlertDialog_multiChoiceItemLayout?
  16. MvcMovieStore mvc5.0,EF6.01
  17. hibernate---一对一单向主键关联(不重要)
  18. Spring Boot启动过程(二)
  19. [国嵌攻略][137][DM9000网卡驱动编程]
  20. 自己实现HashSet

热门文章

  1. 树上的DP
  2. maven缺少依赖包,强制更新命令
  3. uestc oj 1218 Pick The Sticks (01背包变形)
  4. getConnection 区别
  5. Java 理论与实践: 非阻塞算法简介——看吧,没有锁定!(转载)
  6. HDU 1392 Surround the Trees 构造凸包
  7. 为什么 Apple 开发者网站关闭是件好事?
  8. tableviewcell 系统工具删除:左滑删除,选中多个删除
  9. Unity3d:编辑器中运行正常,发布后的exe提示找不到文件
  10. 配置Redis主从复制