mysql负载均衡方案

一、直接连接

数据库的读写分离方案很多,这里介绍基于mysql数据库的读写分离方案。
比较常见的读写分离方案如下:
1 基于查询分离
最简单的分离方法是将读和写分发到主和从服务器上,这种策略很容易实现,但是仅限于一些能够容忍查询脏数据的操作。
举个例子来说,用户写入了一条评论,发往主库保存,查询的时候则是从从库拉取数据,由于主从数据库存在复制延迟,用户很可能看不到自己的最新评论,这就是脏数据。

2 基于脏数据分离
这种策略是基于查询分离方法的改进。需要做一些额外的工作,让应用检查复制延迟,以确定备库数据是否太旧。许多报表类应用都使用这个策略:只需要晚上加载的数据复制到备库即可,他们并不关心从库是不是100%跟上了主库。

3 基于会话分离
另一个决定能否从从库读取数据的稍微复杂一点的方法是判断用户自己是否修改了数据。用户不需要看到其他用户的最新数据,但需要看到自己的更新。可以再会话层设置一个标记位,表明做了更新,就将该用户的查询在一段时间内总是指向主库。这是推荐的一种做法,因为他是在简单和有效性之间的一种很好的妥协。
我们还可以把基于会话的分离方法和复制延迟监控结合起来,如果用户在10秒前更新了数据,而所有备库延迟在5秒内,就可以安全的从备库中读取数据,但为整个会话选择同一个备库是很好的主意,否则用户可能会奇怪有些备库的数据比较慢。

4 基于版本分离
这种策略与基于会话的分离方法相似,你可以跟踪对象的版本号或者时间戳,通过从备库读取对象的版本或时间戳来判断数据是否足够新。如果备库的数据太旧,可以从主库获取最新的数据。

5 基于全局版本/会话分离
这个办法是基于版本分离和会话分离的变种.当应用执行写操作时,在提交事务后,执行一次show master status操作。然后在缓存中存储主库日志坐标,作为被修改对象以及/或者会话的版本号。的那个应用连接到备库时,执行show slave status 并将备库上的坐标和缓存中的版本号对比,如果备库相比记录点更新,则可以安全的读取备库数据。

修改DNS域名

转移IP地址

一些负载均衡方案依赖于在服务器间转移虚拟地址,一般能够很好地工作。

可以通过ARP(地址解析协议)命令强制使IP地址更改快速而且原子性地通知到网络上。

二、引入中间件

HaProxy,mycat

Servlet3.0学习总结(一)——使用注解标注Servlet的更多相关文章

  1. Servlet3.0学习总结(二)——使用注解标注过滤器(Filter)

    Servlet3.0提供@WebFilter注解将一个实现了javax.servlet.Filter接口的类定义为过滤器,这样我们在web应用中使用过滤器时,也不再需要在web.xml文件中配置过滤器 ...

  2. Servlet3.0学习总结(四)——使用注解标注监听器(Listener)

    Servlet3.0提供@WebListener注解将一个实现了特定监听器接口的类定义为监听器,这样我们在web应用中使用监听器时,也不再需要在web.xml文件中配置监听器的相关描述信息了. 下面我 ...

  3. Servlet3.0学习总结——基于Servlet3.0的文件上传

    Servlet3.0学习总结(三)——基于Servlet3.0的文件上传 在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileu ...

  4. Servlet3.0学习总结(三)——基于Servlet3.0的文件上传

    在Servlet2.5中,我们要实现文件上传功能时,一般都需要借助第三方开源组件,例如Apache的commons-fileupload组件,在Servlet3.0中提供了对文件上传的原生支持,我们不 ...

  5. 【servlet3.0新特性】Annotation注解配置

    servlet3.0新特性Servlet3.0引入的若干重要新特性,包括异步处理.新增的注解支持.可插性支持等等,为读者顺利向新版本过渡扫清障碍.Servlet3.0新特性概述Servlet3.0作为 ...

  6. Servlet3.0新特性(从注解配置到websocket编程)

    Servlet3.0的出现是servlet史上最大的变革,其中的许多新特性大大的简化了web应用的开发,为广大劳苦的程序员减轻了压力,提高了web开发的效率.主要新特性有以下几个: 引入注解配置 支持 ...

  7. Servlet2.5版本和Servlet3.0版本

    在学习这节之前你需要在你自己的电脑进行如下配置: 配置Java运行环境:JDK+JRE的安装配置,参考博客Windows下配置Java开发环境: 安装Eclipse:参考博客Windows下配置Jav ...

  8. java web学习总结(二十一) -------------------模拟Servlet3.0使用注解的方式配置Servlet

    一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet- ...

  9. JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet

    一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet- ...

随机推荐

  1. SPFA&邻接表 PASCAL

    题目来自CODE[VS]-->热浪 1557 热浪 时间限制: 1 s 空间限制: 256000 KB 题目等级 : 钻石       题目描述 Description 德克萨斯纯朴的民眾们这个 ...

  2. 简单3d RPG游戏 之 004 攻击(一)

    功能:实现点击键盘F键,怪物血量条减少,并且假定是近战,需要对距离进行判断,距离小于一定值的时候按F才会减少怪物的血条. 新建c#脚本PlayerAttack,绑定到Player,并在unity里将敌 ...

  3. mysql分表与分区表

    mysql分表与分区表 转自:http://blog.51yip.com/mysql/949.html   一,什么是mysql分表,分区 什么是分表,从表面意思上看呢,就是把一张表分成N多个小表,具 ...

  4. tomcat集群时统计session与在线人数

    tomcat集群时,原来通过HttpSessionListener实现类监听session的创建和销毁来统计在线人数的方法不再有效,因为不是每个人登陆都会在同一个tomcat服务器上,而在另一台tom ...

  5. 你不需要jQuery(二)

    完全没有否定jQuery的意思,jQuery是一个神奇的.非常有用的工具,可以节省我们大量的时间. 但是,有些时候,我们只需要jQuery的一个小功能,来完成一个小任务,完全没有必要加载整个jQuer ...

  6. replace()替换文字扑获组做法

    var txt = "12312131283", str = txt.replace(/(12(.3))/g,"中文$2");//$1是针对前面的扑获组()的如 ...

  7. spoj 416

    又臭又长的烂代码 ...... #include <iostream> #include <cstdio> #include <cstring> #include ...

  8. hdu 4649 Professor Tian 反状态压缩+概率DP

    思路:反状态压缩——把数据转换成20位的01来进行运算 因为只有20位,而且&,|,^都不会进位,那么一位一位地看,每一位不是0就是1,这样求出每一位是1的概率,再乘以该位的十进制数,累加,就 ...

  9. cocos2d-x3.9 默认是 gnustl_static 配置,但是 这个库缺少c++的基础功能... c++_static 功能全面些

    最近的升级Cocos2d-x 3.2正式版.iOS不管是什么程序编译问题,使用结果cocos compile -p android编译APK计划.结果悲剧,出现以下错误. Android NDK: I ...

  10. 编程之美:1.9高效率安排见面会 图的m着色问题 回溯法

    原书问题,可以转换为图的m着色问题 ,下面该问题的代码 这里有参考ppt与code,免积分载 http://download.csdn.net/detail/u011467621/6341195 // ...