Druid
文章平均质量分 50
Druid
LiveOrange
这个作者很懒,什么都没留下…
展开
-
Druid10-ZK动态配置数据源
1、ZooKeeper 注册数据源 通过创建 ZooKeeper 的临时节点,以此实现节点发现和下线,实现动态变更数据源信息,使用案例。 private void register() { //创建注册对象 ZookeeperNodeRegister register1 = new ZookeeperNodeRegister(); register1.setZkConnectString("127.0.0.1:2181"); reg原创 2022-05-20 21:23:09 · 598 阅读 · 0 评论 -
Druid09-选择器
1、选择器实例化 HighAvailableDataSource 通过选择器进行切换数据源,使用枚举维护了选择器,并且封装了反射实例化选择器。 public static DataSourceSelector getSelector(String name, HighAvailableDataSource dataSource) { for (DataSourceSelectorEnum e : DataSourceSelectorEnum.values()) {原创 2022-05-19 18:14:23 · 264 阅读 · 0 评论 -
Druid08-高可用数据源
1、初始化 HighAvailableDataSource 数据源的初始化,通过Double Check避免重复初始化。 public void init() { if (inited) { return; } synchronized (this) { if (inited) { return; } //dataSour原创 2022-05-18 19:47:34 · 260 阅读 · 0 评论 -
Druid07-高可用案例
1、简介 当系统并发越来高时数据库服务器的压力也是越来越大,最终成为性能的瓶颈,可以采用缓存、读写分离、分库分表等技术来降低服务器压力,Druid 提供了高可用数据源 ( HighAvailableDataSource ) 是基于Druid数据源之上进行了二次封装,通过名称选择数据源的高可用数据源配置。 @Bean(name = "masterDataSource", initMethod = "init", destroyMethod = "close") public DataSourc原创 2022-05-17 20:35:14 · 520 阅读 · 0 评论 -
Druid06-SQL执行
1、连接对象的封装 如果没有配置Filter 则生成具体的连接对象返回,否则将Connection对象包装成 ConnectionProxyImpl。 public Connection createPhysicalConnection(String url, Properties info) throws SQLException { Connection conn; if (getProxyFilters().isEmpty()) {原创 2022-05-16 21:29:47 · 1393 阅读 · 0 评论 -
Druid05-连接关闭
1、连接关闭 连接对象通过DruidPooledConnection 进行了包装,获取连接后都会进行连接的关闭或回收,如使用了类似 Mybatis、JPA 等开源框架通常会调用close方法,连接对象 DruidPooledConnection 重写了close()方法。public void close() throws SQLException { //已关闭状态 if (this.disable) { return; } DruidConnecti原创 2022-05-14 16:14:28 · 3654 阅读 · 0 评论 -
Druid04-获取连接
1、获取连接 获取连接的时候也会先去检查一下连接池是否已经初始化,如果没有初始化则先进行初始化。 public DruidPooledConnection getConnection(long maxWaitMillis) throws SQLException { //maxWaitMillis 从连接池获取连接最大等待时间(默认-1 一直等待) init(); if (filters.size() > 0) {原创 2022-05-13 14:05:55 · 1147 阅读 · 0 评论 -
Druid03-守护线程
1、CreateConnectionThread 线程1.1 线程创建 Druid连接池运行后,该线程大部分情况下都处于WAITING状态,通过 jstack -l PID 查看。protected void createAndStartCreatorThread() { if (createScheduler == null) { String threadName = "Druid-ConnectionPool-Create-" + System.identityHash原创 2022-05-12 20:56:32 · 340 阅读 · 0 评论 -
Druid02-初始化
1、初始化 Druid的初始化过程,使用都是创建DruidDataSource对象进行配置参数之后,调用init方法进行初始化。 方式一:Spring 配置初始化方法 @Bean(name = "dataSource", initMethod = "init", destroyMethod = "close") @Primary public DataSource dataSource() { DruidDataSource dataSource = new DruidD原创 2022-05-11 19:15:27 · 1034 阅读 · 0 评论 -
Druid01-简介
1、简介JAVA常用的连接池有dbcp、c3p0、tomcat-jdbc、druid和HiKariCP。dbcp、c3p0、tomcat-jdbc是第一代连接池,druid和HiKariCP是第二代连接池, 第一代连接池一般采用单线程同步的架构设计,第二代采用多线程异步架构,目前的大部分工程会使用Druid或HiKariCP。2、连接池 数据库连接池基于池化思想,实现了对连接资源灵活的管控。如果每次操作都需要 打开连接,操作,关闭连接,那么创建和销毁 会消耗大量的系统资源。可以通过复用创建好的连接池原创 2022-05-10 14:50:25 · 351 阅读 · 0 评论