一、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連接池,它也成為了許多企業中微服務時代下的首選連接池庫。