分析型数据库Apache-Doris实战03-Spring微服务中应用
对于Spring Cloud应用和MyBatis-Plus来说,连接Doris集群就像连接一个普通的MySQL数据库一样简单。 不需要任何特殊的依赖或配置。
1. Spring Cloud 配置 (application.yml)
在的Spring Boot/Spring Cloud项目的 application.yml
(或 .properties
) 文件中,只需要配置一个标准的数据源(Datasource)即可。
关键点: 需要配置FE(Frontend)节点的地址,因为FE是整个集群的统一SQL入口。
场景A:连接单个FE节点 (简单,但不高可用)
这是最简单的配置,适用于开发测试环境。只需要指向当前搭建的那个FE节点即可。
1 | spring: |
172.22.0.10:9030
: 这是FE节点的IP和对外暴露的MySQL协议端口。your_database_name
: 需要在Doris中创建的数据库名,比如test_db
。username
/password
: 用于连接Doris的用户凭证。
场景B:配置FE集群实现高可用 (生产环境推荐)
Doris的JDBC驱动程序(本质上就是MySQL的JDBC驱动)原生支持故障转移 (Failover)。可以把所有FE节点(Master, Follower, Observer都可以)的地址都写在JDBC URL里,当一个FE挂掉时,驱动会自动尝试连接下一个。
假设部署了一个高可用的FE集群:
- FE1 (Master/Follower):
172.22.0.10:9030
- FE2 (Follower):
172.22.0.11:9030
- FE3 (Observer):
172.22.0.12:9030
的 application.yml
配置应该这样写:
1 | spring: |
这种配置的好处:
- 高可用: 如果
172.22.0.10
这个FE节点宕机了,的Spring应用不会报错,JDBC驱动会自动切换到172.22.0.11
或172.22.0.12
,服务不中断。 - 负载均衡:
roundRobinLoadBalance=true
参数会让应用在创建新连接时,轮流地连接到不同的FE节点,将查询解析的压力均匀地分摊到整个FE集群。
2. MyBatis-Plus 的使用
MyBatis-Plus可以100%无缝地与Doris一起工作。
因为Doris兼容MySQL协议和大部分MySQL的SQL语法,所以对于MyBatis-Plus来说,它根本“不知道”自己连接的是Doris还是MySQL。可以像往常一样使用MyBatis-Plus的所有功能:
a. 添加依赖
在的 pom.xml
中,确保有这两个依赖:
1 | <!-- MyBatis-Plus Starter --> |
b. 定义实体类 (Entity)
和操作MySQL完全一样,使用 @TableName
, @TableId
, @TableField
等注解。
1 | import com.baomidou.mybatisplus.annotation.TableName; |
c. 定义Mapper接口
继承 BaseMapper
即可拥有所有CRUD能力。
1 | import com.baomidou.mybatisplus.core.mapper.BaseMapper; |
d. 在Service中调用
1 |
|
总结
将Doris集成到Spring Cloud + MyBatis-Plus项目中,只需要做两件事:
- 在
application.yml
中配置一个指向FE节点的、标准的MySQL数据源。为了生产环境的健壮性,推荐在JDBC URL中列出所有FE节点以实现高可用。 - 像操作MySQL一样,正常使用MyBatis-Plus的所有功能,不需要做任何代码层面的改动。
这就是Doris对应用开发者如此友好的原因——它提供了强大的分布式能力,却没有增加上层应用开发的复杂性。