数据库 大家的 rails 项目里的读写分离怎么做的?

iceskysl · 2012年02月24日 · 最后由 string2020 回复于 2015年07月01日 · 8474 次阅读

看到两个方案

  1. 用类似 use_db 这样的插件,实现针对 model 的读写分离(其实这个不是真正意义上的读写分离,但是可以凑合用)
  2. 用类似 master_slave_adapter 和 masochism 插件实现真正意思上的读写分离,配置稍微麻烦点,有的可能还需要一些 hard code~

大家用过哪种方案?

为毛要读写分离?麻烦普及一下先。

@zfjoy520 通俗点来说, 把压力分散了. 让系统更轻松. 干起活来更快更好更有劲.

看到楼主这个问题,我上网查了一下,发现解决方案不是很多。
master_slave_adapter 和 masochism 这个两个东西都几年没更新了。不知道是不是还能用。
后来仔细想了一下,这个实现起来应该不复杂,只要拦截一下 activerecord 的方法,在读操作和写操作时重新设置 connection,每次操作前都打开两个数据库连接,这个就不会产生切换 connection 带来的性能损耗。
关键就是读的方法太多,只能拦截那个底层的方法,我看了一下源码,activereocrd 的大多操作都在 ActiveRecord::Relation 和 ActiveRecord::FinderMethods,至于怎么搞,还没想到,还需要多看看源码。。
刚又看了下,好像直接拦截 connections 中的方法就可以了。

Fork @kevinxu 推荐的

我用过 data_fabric

data_fabric 有 ha 功能嘛

#8 楼 @Lucifer 那为啥不用 mysql-proxy 呢?

用 mysql-proxy 要多台机

#5 楼 @kevinxu 看了一下,db-charmer,还真不错

#5 楼 @kevinxu 这个好像不错,仔细看看先~

#5 楼 @kevinxu WARNING: The Project Has Been Suspended

楼主这个问题解决了吗?我现在也要搞这个

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册