![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Druid源码
文章平均质量分 60
PayneWoo
这个作者很懒,什么都没留下…
展开
-
Day10 Druid 小结2
一、druid.pool.ha 小结Druid 中 ha 的数据源选择器有:NamedDataSourceSelectorRandomDataSourceSelectorStickyRandomDataSourceSelector数据源节点的变更的监听和通知,是一个观察者模式,可以及时的监听 zk 中数据源节点信息的变更,从而观察者——poolUpdater可以及时的更新数据源连接池。HighAvailableDataSource 初始化时便会通过选择器去选择数据源,同时通过 2 个线程异步原创 2022-05-21 08:01:12 · 216 阅读 · 0 评论 -
Day09 ha数据源节点的变更的监听和通知
一、数据源节点的变更的监听和通知NodeEventTypeEnum 类定义了两种数据源节点变更事件类型:增加节点、删除节点。NodeEvent 定义数据源节点更新事件的详细信息。NodeListener 是一个抽象类,负责监听数据源节点信息的改变,并会在 init 方法中,添加 PoolUpdater 作为观察者。 /** * Add the given PoolUpdater as the Observer. * * @see #setObserver(Obser原创 2022-05-20 01:15:13 · 214 阅读 · 0 评论 -
Day08 Druid——HighAvailableDataSource 中的数据源维护
Day08 Druid——HighAvailableDataSource 中的数据源维护HighAvailableDataSource 是一个包含多个数据源对象的数据源类。一、HighAvailableDataSource 的初始化在获取高可用数据源的连接的时候,便会进行初始化操作: public Connection getConnection() throws SQLException { // 初始化 init(); // 通过选择器获取原创 2022-05-19 00:31:50 · 358 阅读 · 0 评论 -
Day07 Druid ha中的数据源选择器——DataSourceSelector
DataSourceSelectorDruid 中的数据源选择器都会实现 DataSourceSelector 接口:public interface DataSourceSelector { /** * Return a DataSource according to the implemention. */ DataSource get(); /** * Set the target DataSource name to return.原创 2022-05-18 01:00:19 · 392 阅读 · 0 评论 -
Day06 Druid 的事务实现
Day06 Druid 的事务实现今天分析下 pool 下的 xa 包:package com.alibaba.druid.pool.xa;一、XA 协议XA 协议是由 X/Open 组织提出的分布式事务处理规范,主要定义了事务管理器 TM 和局部资源管理器 RM 之间的接口。Mysql 从 5.0 版本开始,InnoDB 存储引擎已经支持 XA 协议。1. 两阶段提交分布式事务的两阶段提交是把整个事务提交分为 prepare 和 commit 两个阶段: 第一阶段,事务协调者向事务参与者发原创 2022-05-17 00:54:04 · 907 阅读 · 0 评论 -
Day05 Druid 小结
一、小结Druid 连接池是阿里巴巴开源的数据库连接池项目。Druid 连接池为监控而生,内置强大的监控功能,监控特性不影响性能。监控功能依托于StatFilter、LogFilter,Druid 中常用的过滤器还有Filter、StatFilter等。另外Druid 连接池对于连接的各种处理的考虑也是非常全面:连接池对象、连接对象的创建和初始化连接的获取连接的释放和回收连接获取、回收等异常情况的处理ExceptionSorter :在数据库服务器重启、网络抖动、连接被服务器关原创 2022-05-15 00:01:42 · 543 阅读 · 0 评论 -
Day04 Druid 中的一些异常处理
分析一下 Druid 中对于异常情况的一些处理。一、Druid 中自定义了哪些异常?pool 包下比较关键的一些异常有:DataSourceClosedExceptionDataSourceDisableExceptionDataSourceNotAvailableExceptionGetConnectionTimeoutException当获取连接时,如果数据源是处于关闭状态,那么就会抛DataSourceClosedException异常,当数据源不可用时,就会抛 DataSource原创 2022-05-14 00:39:22 · 1252 阅读 · 0 评论 -
Day03 Druid 中过滤器链的装载和使用
一、过滤器的装载Druid 中过滤器的管理工作,主要是在 FilterManager 类中实现。其中 FilterManager#loadFilter() 负责加载 filter 并放入 filter集合中。public static void loadFilter(List<Filter> filters, String filterName) throws SQLException { if (filterName.length() == 0) { return; }原创 2022-05-13 00:17:04 · 389 阅读 · 0 评论 -
Day02 Druid 如何初始化、添加、销毁、获取连接
Druid 如何初始化、添加、销毁、获取连接一、Druid 如何初始化创建数据库连接在执行 DruidDataSource#init() 方法时,会初始化存放连接的数组conections,然后启动两个线程(1)CreateConnectionThread,动态在 connections 数组中添加连接(2)DestroyConnectionThread,动态删除activeConnections很久不用的连接。初始化连接:while (poolingCount < initialSize原创 2022-05-12 00:20:31 · 1084 阅读 · 0 评论 -
Spring生态中如何使用 Druid & Druid 如何初始化数据库连接池
一、使用 DruidSpring Boot 项目中配置数据库连接池为 Druid 并启动项目,Spring 上下文初始化完成后会初始化 DruidDataSource, 如下图:核心类:DruidDataSourceAutoConfigure 负责初始化 DruidDataSourcecom.alibaba.druid.pool.DruidDataSource 负责创建高效可管理的数据库连接池二、 druid-spring-boot-starter 源码DruidDataSourceA原创 2022-05-11 01:17:41 · 2270 阅读 · 0 评论