学习Sharding JDBC 从入门到出门-02:源码揣测
sjdbc有读写分离的功能,要使用这个功能,在创建数据源对象是要使用类:MasterSlaveDataSource,并且设置主备数据源和数据库名称
这个对象有下面的属性:
name:数据库的名称
masterDataSource:主数据源对象
slaveDataSources:备库数据源类别
slaveLoadBalanceStrategy:选从算法
/**
* 获取主或从节点的数据源名称.
*
* @param sqlStatementType SQL类型
* @return 主或从节点的数据源
*/
public DataSource getDataSource(final SQLStatementType sqlStatementType) {
if (SQLStatementType.SELECT != sqlStatementType || DML_FLAG.get() || HintManagerHolder.isMasterRouteOnly()) {
DML_FLAG.set(true);
return masterDataSource;
}
return slaveLoadBalanceStrategy.getDataSource(name, slaveDataSources);
}
以下三种情况下会走主库
(1)写走主库,读走从库
(2)当前线程,前面的操作走了主库,查询也要走主库。适用于进行了写的操作,然后接着查询的场景,这个时候如果读走从库,有可能会查询不到,因为主从的同步会有延迟
(3)使用Hint强制走主库
HintManager hintManager = HintManager.getInstance(); 
hintManager.setMasterRouteOnly();
学习Sharding JDBC 从入门到出门-02:源码揣测的更多相关文章
- 学习Sharding JDBC 从入门到出门-1
		
感觉大神已经写好了,自己膜拜下下, 送上大神地址:http://www.cnblogs.com/zhongxinWang/p/4262650.html 这篇博客主要是理论的说明了什么是分库分表,路由等 ...
 - MatrixOne从入门到实践02——源码编译
		
MatrixOne从入门到实践--源码编译  在部署MatrixOne前,我们可能会比较纠结使用哪个版本合适,MatrixOne在github上有各个版本的Releases,包含源码包和适用于Lin ...
 - Java并发包源码学习之AQS框架(四)AbstractQueuedSynchronizer源码分析
		
经过前面几篇文章的铺垫,今天我们终于要看看AQS的庐山真面目了,建议第一次看AbstractQueuedSynchronizer 类源码的朋友可以先看下我前面几篇文章: <Java并发包源码学习 ...
 - Springboot学习04-默认错误页面加载机制源码分析
		
Springboot学习04-默认错误页面加载机制源码分析 前沿 希望通过本文的学习,对错误页面的加载机制有这更神的理解 正文 1-Springboot错误页面展示 2-Springboot默认错误处 ...
 - Java并发包源码学习系列:阻塞队列实现之LinkedBlockingQueue源码解析
		
目录 LinkedBlockingQueue概述 类图结构及重要字段 构造器 出队和入队操作 入队enqueue 出队dequeue 阻塞式操作 E take() 阻塞式获取 void put(E e ...
 - Java并发包源码学习系列:阻塞队列实现之PriorityBlockingQueue源码解析
		
目录 PriorityBlockingQueue概述 类图结构及重要字段 什么是二叉堆 堆的基本操作 向上调整void up(int u) 向下调整void down(int u) 构造器 扩容方法t ...
 - Java并发包源码学习系列:阻塞队列实现之DelayQueue源码解析
		
目录 DelayQueue概述 类图及重要字段 Delayed接口 Delayed元素案例 构造器 put take first = null 有什么用 总结 参考阅读 系列传送门: Java并发包源 ...
 - Java并发包源码学习系列:阻塞队列实现之SynchronousQueue源码解析
		
目录 SynchronousQueue概述 使用案例 类图结构 put与take方法 void put(E e) E take() Transfer 公平模式TransferQueue QNode t ...
 - Java并发包源码学习系列:阻塞队列实现之LinkedTransferQueue源码解析
		
目录 LinkedTransferQueue概述 TransferQueue 类图结构及重要字段 Node节点 前置:xfer方法的定义 队列操作三大类 插入元素put.add.offer 获取元素t ...
 
随机推荐
- tensorflow  cnn+rnn基本结构
			
#CNN x = tf.placeholder(tf.float32,[None,input_node],name="x_input") y_ = tf.placeholder(t ...
 - 速查笔记(Linux Shell编程<下>)
			
转载自: http://www.cnblogs.com/stephen-liu74/archive/2011/11/04/2228133.html 五.BASH SHELL编程: 1. 初始化顺 ...
 - [转载]Install Opera 12.16 Web Browser in CentOS/RHEL and Fedora
			
FROM: http://tecadmin.net/install-opera-web-browser-in-centos-rhel-fedora/ Opera is an modern web br ...
 - Elasticsearch安装(四), elasticsearch head 插件安装和使用。
			
安装方式如下: 一.安装Elasticsearch-Head 1.插件安装方式(推荐) #在Elasticsearch目录下 $/bin/plugin -install mobz/elasticsea ...
 - Rails 状态码
			
Response Class HTTP StatusCode Symbol Informational 100 :continue Success 200 :ok Redirection 300 :m ...
 - C# Redis Server分布式缓存编程(一)
			
这篇文章我将介绍如果用最简洁的方式配置Redis Server, 以及如何使用C#和它交互编程 一. 背景介绍 Redis是最快的key-value分布式缓存之一 缺点: 没有本地数据缓冲, 目前还没 ...
 - flask的分页功能
			
分页是个很通用的东西,在flask中,有一个macro的语法,类似于宏,我们可以将通用的东西通过macro写入单独的html文件以方便维护,减少代码量.下面是我的分页的macro文件render_pa ...
 - Jmeter启动报注册表警告
			
启动Jmeter后,控制台出现如下的警告: 主要出现的原因是: java.util.prefs.WindowsPreferences需要保存信息到HKEY_LOCAL_MACHINE\Software ...
 - ES8新特性
			
Object.values/Object.entries Object.values和 Object.entries是在ES2017规格中,它和Object.keys类似,返回数组类型,其序号和Obj ...
 - AutoWare 使用
			
1.安装readme当中的要求,安装依赖库 52 sudo apt-get install ros-indigo-desktop-full ros-indigo-nmea-msgs ros-i ...