版本关系
我这一套用的是:
-
mySQL版本
5.5.15
-
boot版本
2.2.13.RELEASE
-
cloud版本
Hoxton.RELEASE
-
cloud alibaba版本
2.2.0
nacos openFeign Gateway sentinel seata的pom赖版本为cloudAlibaba默认的 -
nacos 客户端版本
1.1.4
-
sentinel dashboard版本
1.7.1
-
seata-server
1.0.0
springCloudAlibaba各个组件版本对应关系可参考: Spring Cloud Alibaba 版本发布说明
pom.xml 依赖
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.13.RELEASE</version><relativePath/></parent><properties><java.version>1.8</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-cloud.version>Hoxton.RELEASE</spring-cloud.version><spring-cloud-alibaba.version>2.2.0.RELEASE</spring-cloud-alibaba.version></properties><dependencyManagement><dependencies><!--springCloud的依赖--><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-dependencies --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!--springCloud-alibaba的依赖--><!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-alibaba-dependencies --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><dependencies><!-- lombok--><!-- https://mvnrepository.com/artifact/org.projectlombok/lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.16</version></dependency><!-- fastjson --><!-- https://mvnrepository.com/artifact/com.alibaba/fastjson --><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.56</version></dependency><!-- jdbc Connector--><!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java --><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency><!-- mybatis --><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.0</version></dependency><!-- spring-boo web启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- nacos客户端 服务注册与发现 --><!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-nacos-discovery --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- openfeign 微服务接口式调用 里面包含了Hystrix 和 ribbon的jar包 --><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-openfeign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><!-- sentinel --><!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-sentinel --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-sentinel</artifactId></dependency><!-- gateway网关 --><!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-gateway --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifactId></dependency></dependencies><!-- seata 分布式事务管理 包括了druid 的jar包--><!-- https://mvnrepository.com/artifact/com.alibaba.cloud/spring-cloud-starter-alibaba-seata --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId></dependency>
配置文件
server:port: 8081 #服务端口号
spring:application:name: service-product #服务名datasource: #数据源配置driver-class-name: com.mysql.jdbc.Driver # 如果数据库版本是8.0.x 这里需要写 com.mysql.cj.jdbc.Driverurl: jdbc:mysql:///shop?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8&useSSL=trueusername: rootpassword: 123456type: com.alibaba.druid.pool.DruidDataSource #seata 1.0.0需要配置这个 不然启动不起来cloud:nacos: #nacos配置discovery:server-addr: 127.0.0.1:8848 #去哪里注册和发现服务 这里应该写nacos服务所在的ip和端口号sentinel: #sentinel 配置eager: truetransport:dashboard: localhost:8080 #sentinel服务 的地址gateway: #网关配置 主要是路由和过滤器globalcors: #全局跨域配置 这里配置的 是所有服务都支持的 一般都配置全局配置cors-configurations:'[/**]':allowedOrigins: '*' # 支持的请求地址 allowedOriginsallowedMethods: # 支持的请求方式 '*' 代表支持所有请求方式- GETroutes:- id: order-route # 路由名uri: lb://service-order # 请求转发给哪一个服务 以负载均衡的策略predicates: # 路径断言- Path=/api/orderNacos/** # 访问路径 例如/api/order/createOrder 会转发给 service-order服务的 /api/order/createOrder#- IncludeParam=pid,3 #自定义路由断言规则测试#order: 0 # 优先级 数字越小 优先级越高
# metadata:
# cors: #全局跨域配置 这里配置的 是只有当前服务支持的
# allowedOrigins: '*' # 支持的请求地址
# allowedMethods: # 支持的请求方式
# - GET
# - POST
# allowedHeaders: '*'
# maxAge: 30filters:
# - OnceToken=X-Response-Token,uuid #自定义过滤器测试
# - Rewrite=/api/orderNacos/?(?<segment>.*),/$\{segment} # 路径重写 网关转发请求时 默认会原封不动的将路径转发 添加此项后会进行路径重写 例如 这里就是讲路径中的 /api/orderNacos 去掉 也就是将/api/orderNacos/abc转换为 /abc再发送至 service-order服务- AddResponseaHeader=X-Response-Abc,123 #给响应头添加内容 加一个X-Response-Abc 属性值为123- id: product-routeuri: lb://service-productpredicates:- Path=/api/product/**
# default-filters: #默认过滤器 所有的路由都会生效
# - AddResponseaHeader=X-Response-All,all #给所有的响应头添加内容
feign:sentinel:enabled: true # 配置 feign接口 也能 被 sentinel 识别
nacos、openFeign等组件支持的开启
//nacos
@EnableDiscoveryClient//openFeign
@EnableFeignClients//seata进行事务管理时需要开启事务
@EnableTransactionManagement