Nacos 是一个配置和注册中心,类似 Spring Cloud Config 和 Eureka、ZooKeeper、Consul
Sentinel 是一个流量控制框架,支持流量控制,熔断降级,系统负载保护,类似 Hystrix、resilience4j
spring-cloud-starter-alicloud-oss 是用于阿里云 OSS 的 SpringBoot Starter,通过封装 SDK 实现对 OSS 的操作
Dubbo 是一个远程调用框架,用于实现方法的远程调用
推荐使用 ZooKeeper 作为注册中心,当前使用 Nacos 会有各种问题
Seata 是一个分布式事务框架,可以通过 Seata 框架的注解实现非侵入性的分布式事务
- Spring Cloud 使用 Seata 实现分布式事务 - MyBatis
- Spring Cloud 使用 Seata 实现分布式事务 - JPA
- Spring Cloud 使用 Seata 实现分布式事务 - Mybatis/Nacos
- Spring Cloud 使用 Seata 实现分布式事务 - Mybatis/Nacos/Dubbo
- Spring Cloud 使用 Seata 实现分布式事务 - Mybatis/Eureka/Feign
- Spring Cloud 使用 Seata 实现分布式事务 - Mybatis多数据源
- Spring Cloud 使用 Seata 实现分布式事务 - Mybatis多数据源 & MyBatisPlus
MyBatis 和 JPA 通过 Seata 实现分布式事务都需要注入 io.seata.rm.datasource.DataSourceProxy
, 不同的是,MyBatis 还需要额外注入 org.apache.ibatis.session.SqlSessionFactory
MyBatis
@Configuration
public class DataSourceProxyConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DataSource dataSource() {
return new DruidDataSource();
}
@Bean
public DataSourceProxy dataSourceProxy(DataSource dataSource) {
return new DataSourceProxy(dataSource);
}
@Bean
public SqlSessionFactory sqlSessionFactoryBean(DataSourceProxy dataSourceProxy) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(dataSourceProxy);
return sqlSessionFactoryBean.getObject();
}
}
JPA
@Configuration
public class DataSourceProxyConfig {
@Bean
@ConfigurationProperties(prefix = "spring.datasource")
public DruidDataSource druidDataSource() {
return new DruidDataSource();
}
@Primary
@Bean
public DataSourceProxy dataSource(DruidDataSource druidDataSource) {
return new DataSourceProxy(druidDataSource);
}
}
相关的 Spring Boot, Spring Cloud 以及 Spring Cloud Alibaba 之间的对应关系可以参考 版本说明
组件 | 版本 | 说明 |
---|---|---|
Spring Boot | 2.1.5.RELEASE | |
Spring Cloud | Greenwich.SR1 | |
Spring Cloud Alibaba | 2.1.0.RELEASE | |
Seata | 0.7.1 | |
Dubbo | 2.7.3 |
Spring Cloud Alibaba 毕业后,Group-id 和部分 ArtifactId 有所变化,需要注意