32.JDBC代理
2025.07.31 需求
客户端使用jdbc proxy, 服务端才真正连接数据库.
资料
- mysql/mysql-proxyMySql官方代理中间件, 已停止维护
- sysown/proxysql: High-performance MySQL proxy,ProxySQL 是基于 MySQL 的一款开源的中间件的产品,是一个灵活的 MySQL 代理层,可以实现
读写分离,支持 Query 路由功能,支持动态指定某个 SQL 进行缓存,支持动态加载(无需重启 ProxySQL 服务),故障切换和一些 SQL 的过滤功能。 - jdbc-observations/datasource-proxy: Provide listener framework for JDBC interactions and query executions via proxy., 没有实现
JDBC, 而是拦截JDBC的调用 - rarnu/EasyJDBC, Kotlin模板, 很好的参考
- apache/calcite-avatica: Apache Calcite Avatica, Avatica 是一个能让“JDBC 协议”跑在 HTTP/JSON(或 Protobuf)上的框架;JDBC 则是 Java 里本地进程内、二进制接口的规范。
- jprante/jdbc-driver-csv: JDBC driver for CSV
- moshowgame/dbeaver-driver-all, dbeaver所有jdbc驱动都在这
测试参考-Vertx
<properties>
<mysql.version>8.0.28</mysql.version>
<agroal.version>1.16</agroal.version>
</properties>
<dependencies>
<!-- Test -->
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-jdbc-client</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>${mysql.version}</version>
<scope>test</scope>
</dependency>
<!-- 使用连接池需要 -->
<dependency>
<groupId>io.agroal</groupId>
<artifactId>agroal-pool</artifactId>
<version>${agroal.version}</version>
<scope>test</scope>
</dependency>
</dependencies>