您的位置:

阿里为什么放弃Druid连接池?

一、dubbo被阿里放弃原因

在阿里的技术栈中,Dubbo曾经是非常重要的一环, 但是随着时代的变迁,Dubbo出现了一些问题。相较于Spring Cloud,Dubbo的文档较为简单,并没有太多实践的案例示范。而且,它的社区与Spring Cloud相比比较小,问题的解决速度也相对较慢。除此之外,阿里较早的将Dubbo推向开源社区,追求技术的成熟和稳定性,相较于开源社区的基础设施构建,Dubbo大而全的特性也不再适应如今的快速迭代和微服务的发展。

二、阿里巴巴Druid连接池

在阿里对于连接池技术问题上,项目Druid连接池曾经是一个不错的选择。Druid连接池的知名度非常高,它是一款功能强大而且性能非常出色的Java数据库连接池。Druid连接池的开发人员之一付亮说道:“相比于其他连接池,Druid在性能和稳定性方面一直占据较高的位置。”Druid连接池提供了全面的监控和扩展方式,支持防篡改功能,并且由于其健壮的代码和良好的扩展性能稳定可靠地工作,因此非常适合作为中小型Web应用程序使用的数据库连接池。

三、阿里为什么弃用Druid

然而,随着大数据和云计算的不断普及,传统的数据库连接池技术已经不能满足高性能、高可靠、高并发的需求,并且Druid连接池也逐渐走向了瓶颈。一个单独的Druid连接池使用实例的负载不容易实现横向扩展,这也是Druid连接池的一个巨大弱点。同时,Druid连接池的管理和配置也相对复杂,这使得在大规模生产部署时需要耗费很多时间和人力。此外,精益创业的思想也在某种程度上影响了阿里巴巴在技术和架构上的取舍,拥抱云计算和轻量级的微服务架构被提上了日程。

因此,阿里选择放弃Druid连接池,探索云原生下的数据库连接池限制,比如HikariCP连接池,它是一款纯Java轻量型连接池库,速度极快,能极大地提升应用程序性能,也更适合目前的微服务时代。

四、完整的代码示例

//HikariCP连接池配置示例
package com.example;

import javax.sql.DataSource;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import com.zaxxer.hikari.HikariDataSource;

@Configuration
public class AppConfig {

    @Bean
    public DataSource dataSource() {
        HikariDataSource ds = new HikariDataSource();
        ds.setJdbcUrl("jdbc:mysql://localhost:3306/spring_test");
        ds.setUsername("root");
        ds.setPassword("password");
        ds.addDataSourceProperty("cachePrepStmts", "true");
        ds.addDataSourceProperty("prepStmtCacheSize", "250");
        ds.addDataSourceProperty("prepStmtCacheSqlLimit", "2048");
        return ds;
    }
}

通过以上示例可以看出,HikariCP连接池配置非常简单,在Spring Boot中只需加入相关的依赖,再在配置文件中添加相关配置即可轻松实现HikariCP连接池的使用。相较于Druid连接池,HikariCP连接池的配置可控性更高,使用更加方便。在云原生时代,越来越多的人开始选择HikariCP连接池,它也成为了许多企业中微服务时代下的首选连接池库。