`

rails 读写分离

阅读更多
开发环境下实现rails的读写分离:

首先: 一定要保证主从数据库的完全相同,这是以下的前提。
实现功能: select操作在slave数据库操作,而非select(insert、update、delete)操作在master数据库操作。



1: 安装masochism和master_slave_adapter插件

ruby script/plugin install git://github.com/technoweenie/masochism.git

ruby script/plugin install git://github.com/mauricio/master_slave_adapter.git

插件介绍:
  masochism 作用:  实现读写分离(注意:其实无法实现读写分离) 
  master_slave_adapter作用:  弥补masochism的不能实现分离的问题

2: 进入config/environments/development.rb

1》 打开缓存(production环境下缓存默认打开)
config.action_controller.perform_caching = true

2》 通过ActiveReload将读写分离操作分开

config.after_initialize do
  ActiveReload::ConnectionProxy.setup!
end

注意:  如果是production模式下进行数据库读写分离,则如下:

config.after_initialize do
  if Rails.env.production?
    ActiveReload::ConnectionProxy::setup!
  end
end



3:  配置database.yml(以一个实例的方式描述database.yml的配置)

development:
  host: 192.168.0.129
  adapter: master_slave
  master_slave_adapter: mysql
  database: readwrite1
  username: zhidu
  password: zhidu
  socket: /var/run/mysqld/mysqld.sock
  master:
    database: readwrite1
    username: zcy
    password: 1234
    host: 192.168.0.130
    adapter: mysql



配置介绍(只介绍其中一部分,例如encoding、reconnect等没有介绍,如果需要,请自己查找吧,顺便说一句,有一些有默认值的不需要配置):
  database(development): slave数据库名称
  username: 用户名称
  password:  用户密码
  socket:    指定mysqld.sock的位置
  adapter:   必须指定master_slave
  master_slave_adapter:  指定真正的适配器(mysql)
  host:  slave数据库的地址
  master: 主数据库的设置

  disable_connection_test: this will disable the connection test before use,can possibly improve the performance but you could also hit stale connections, default is false

  eager_load_connections:   connections are lazy loaded by default, you can load gem eagerly setting this to true

4: 成功
分享到:
评论
1 楼 notrace123 2012-09-07  
针对多表操作混有读写操作的代码段 可以加事务处理吗?

相关推荐

    active_record_sharding-old:基于模算法的ActiveRecord着色数据库库

    该库不支持Rails标准数据库管理/迁移功能。 因为,没有假定使用multidb。 使用推荐的。 用于着色数据库 分片对象是User类。 user片数据库(3节点)。 分片配置config/shards.yml development: # Rails.env user...

    nginx负载均衡

    总的来说,Nginx的负载均衡能力与MySQL的主从同步和读写分离相结合,能构建出高可用、高性能的Web服务架构。这不仅提高了系统的稳定性和抗压能力,也为大数据量、高并发的业务场景提供了有效的解决方案。

    互联网高并发架构技术实践

    - **读写分离**:针对数据库读写频率高的问题,通过读写分离和主从复制技术来降低单台数据库的压力。 - **优势**:可以灵活地调整从机数量,以适应不断变化的业务需求。 - **劣势**:架构变得更加复杂,维护难度...

    互联网时代,我眼中的架构变迁

    此时可以通过实施读写分离和主从复制来减轻单台数据库服务器的压力。这种方法的优点是可以灵活地增加从数据库的数量来应对读取压力,但同时也带来了架构复杂度的提升以及维护难度的增加。 #### 集群时代的到来 ...

    用于 SaaS 多租户,非常经典的OA部门管理模型设计

    可以使用缓存技术、数据库索引优化、读写分离等方式提升系统响应速度。 5. **可扩展性**:设计时要考虑系统的横向扩展能力,以适应租户数量的增长。例如,通过负载均衡和集群部署来处理高并发访问。 6. **升级与...

    Ruby-ActiveRecordTurntable是一个数据库分片的ActiveRecord扩展

    3. **Read/Write分离**:实现读写分离,提高系统性能。 4. **Elasticsearch集成**:可以与Elasticsearch搜索引擎配合,实现全文搜索。 5. **Scoping(作用域)**:定义分片的作用域,方便在代码中切换和操作不同的分...

    Seamless_database_pool:在ActiveRecord中添加对主从数据库集群的支持以提高性能

    然而,随着应用程序的增长,单一数据库服务器可能无法满足高并发和读写分离的需求。这时,引入主从数据库集群就显得尤为重要,而Seamless_database_pool gem就是为了实现这一目标。 Seamless_database_pool 是一个...

    6.19基于mvc的web开发

    3. 模型执行相应的业务逻辑,可能涉及到数据的读写,然后返回处理结果给控制器。 4. 控制器根据模型返回的数据,决定调用哪个视图进行数据展示。 5. 视图使用模型提供的数据渲染出页面,并返回给用户浏览器显示。 ...

    Ruby语言中文教程.rar

    Rails中的MVC架构模式(模型-视图-控制器)将业务逻辑、用户界面和数据访问分离开来,使代码结构清晰。此外,测试驱动开发(TDD)在Ruby社区中十分流行,Ruby提供了Rspec等测试框架,鼓励开发者编写高质量的代码。 ...

    博客空间Live Blog (多用户BLOG系统)-liveblog.zip

    12. **性能和可扩展性**:随着用户数量的增长,系统需要能够处理高并发请求,可能需要采用缓存策略、负载均衡、数据库读写分离等技术来保证性能。 13. **持续集成/持续部署(CI/CD)**:自动化测试、构建和部署流程...

    ruby with mongodb

    随着Web应用的成长和用户量的增加,还需要考虑到应用的扩展性,这通常涉及到数据库的读写分离、分片(Sharding)和复制(Replication)等。 值得一提的是,开发中还应考虑到安全性问题,如用户认证、授权、数据加密...

    摩托车_MVC

    这个模式的主要目标是将业务逻辑、用户界面和数据访问分离开来,以提高代码的可维护性和可扩展性。Ruby语言是 MVC 架构的一个常见实现平台,例如著名的 Rails 框架就是Ruby的MVC实现。 标题"摩托车_MVC"可能是指一...

    将复杂的SQL查询refactor成model形式

    首先,我们来看标题中的"将复杂的SQL查询refactor成model形式",这是为了将数据库操作与业务逻辑分离,使代码更加模块化。在Rails中,模型(Model)通常是用于处理数据存储和检索的对象,它们代表数据库中的表,并...

    MVC+Web开发学习实录

    在IT行业中,MVC(Model-View-Controller)架构模式是一种广泛应用于Web开发的设计模式,它将应用程序的逻辑分为三个主要部分,以实现良好的代码组织和职责分离。本篇文章将深入探讨 MVC 模式在 Web 开发中的应用,...

    html 后台框架代码

    6. RESTful API支持:方便构建和消费API,实现前后端分离。 二、HTML框架的选择 1. Django:Python语言的强力后盾,拥有丰富的功能和优秀的文档,适合大型项目。 2. Flask:轻量级的Python框架,易于上手,适用于...

    后端重做

    这包括合理规划数据模型、选择合适的索引策略、考虑读写分离和分布式存储等。 4. **API设计**:后端与前端的通信主要通过API接口,良好的API设计应遵循RESTful原则,保证接口清晰、简洁且易于理解。同时,需要考虑...

    gerenciadorzote:这是我第一次单独使用 PHP ! (后端),布局由

    开发者提到他们计划在未来的版本中采用 Rails,Rails 是 Ruby on Rails 的简称,是一个基于 Ruby 语言的开源 web 应用框架,以其 MVC(模型-视图-控制器)架构和“约定优于配置”的理念著称。这表明项目可能会有多个...

    shod:Sails+Handlebars+OrientDB 堆栈

    Sails.js的设计灵感来源于Ruby on Rails,旨在简化前后端分离的Web应用开发。其特点包括: 1. 自动化的API:Sails.js 提供了一种快速构建RESTful API的方式,可以通过配置文件轻松定义路由和模型。 2. 数据驱动的...

Global site tag (gtag.js) - Google Analytics