MySQL
- mysql
docker run -p 3306:3306 --name mysqlName01 -v /data/mysql/log:/var/log/mysql -v /data/mysql/data:/var/lib/mysql -v /data/mysql/conf:/etc/mysql -e MYSQL_ROOT_PASSWORD=root -d mysql:5.7
>> 005ba6481be8e568b032868dd537713a3b9bd71849fa91d33376893693ab99c2
- 修改mysql配置文件 (在 /etc/my.cnf 中设置默认的编码)
[client]
default-character-set = utf8
[mysqld]
default-storage-engine = INNODB
character-set-server = utf8
collation-server = utf8_general_ci #不区分大小写
collation-server = utf8_bin #区分大小写
collation-server = utf8_unicode_ci #比 utf8_general_ci 更准确
- docker启动自动启动mysql
docker update mysql --restart=always
Redis
- redis
docker run -p 6379:6379 --name redis \
-v /data/redis/data:/data \
-v /data/redis/conf/redis.conf:/etc/redis/redis.conf \
-d redis redis-server /etc/redis/redis.conf
>> e14d70b035e6ab268bee476aa4194660e2694a3218357d0c650f4e0919021eff
- 操作redis
docker exec -it redisName01 redis-cli
- 配置redis
appendonly yes # 将数据持久化
Nacos
1、部署
docker pull nacos/nacos-server
docker run -d --name nacos -p 8848:8848 \
-v /data/cloud/nacos/application.properties:/home/nacos/conf/application.properties \
-e PREFER_HOST_MODE=hostname \
-e MODE=standalone \
nacos/nacos-server
4a18e87ae161a821089f543489e913ebc4bf81bb8a2e07647f11a6c1a5513805
2、使用—注册中心
# 1、添加依赖
spring-cloud-starter-alibaba-nacos-discovery ---> 2.2.0.RELEASE
spring-boot-parent ---> 2.2.5.RELEASE
# 2、配置yml文件
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.88.120:8848
application:
name: member # 需要指定应用名称用于注册
# 3、给需要注册到nacos的应用的启动类添加注解
@EnableDiscoveryClient # 开启服务的注册与发现功能
3、使用—配置中心
# 1、添加依赖
# 2、添加bootstrap.properties文件
spring.application.name=sky-mall-coupon
spring.cloud.nacos.config.server-addr=192.168.88.120:8848
# 3、启动项目并观察项目启动的日志
Located property source: CompositePropertySource {name='NACOS', propertySources=[NacosPropertySource {name='coupon.properties,DEFAULT_GROUP'}, NacosPropertySource {name='coupon,DEFAULT_GROUP'}]}
4、在Controller中添加注解 这里一定要注意是在Controller层不是在启动类
package com.tian.sky.mall.coupon.controller;
@RefreshScope
@RestController
@RequestMapping("/v1/sky/coupon/homesubject")
public class HomeSubjectController {
@Autowired
private HomeSubjectService homeSubjectService;
@Value("${coupon.user.name}")
private String name;
@Value("${coupon.user.age}")
private String age;
@GetMapping("/index")
public SkyResult index() {
return Objects.requireNonNull(SkyResult.ok().put("name", name)).put("age", age);
}
}
1、使用
@Value
和@RefreshScope
获取配置和动态刷新配置2、如果配置中心和配置中都有了当前配置,优先使用配置中心
5、细节
- 命名空间:用于配置隔离的,默认的新增的都在public空间,可以使用
spring.cloud.nacos.config.namespace=命名空间Id
指定配置空间 - 配置集
- 配置集Id:类似于配置文件名(DataId)
- 配置分组:默认所有的配置集都是属于 DEFAULT_GROUP ,使用
spring.cloud.nacos.config.group
区分环境
spring.application.name=sky-mall-coupon
spring.cloud.nacos.config.server-addr=192.168.88.120:8848
spring.cloud.nacos.config.namespace=62f8e127-b923-4360-9005-67327e665fef
spring.cloud.nacos.config.group=prop
6、加载多个数据集
- 配置多个配置文件
-
修改配置
-
spring: application: name: sky-mall-coupon cloud: nacos: config: server-addr: 192.168.88.120:8848 namespace: 62f8e127-b923-4360-9005-67327e665fef # 配置要加载的yml文件 extension-configs[0]: data-id: datasource.yml group: dev refresh: true extension-configs[1]: data-id: mybatis.yml group: dev refresh: true extension-configs[2]: data-id: other.yml group: dev refresh: true
-
openfeign
1、使用
# 1、添加依赖
spring-cloud-starter-openfeign ---> 2.2.5.RELEASE
# 2、给需要远程调用别的服务的启动类上添加注解
@EnableFeignClients(basePackages = "com.tian.sky.mall.member") # // 开启远程调用
# 3、添加接口,并给接口设置注解
@FeignClient("coupon") # // coupon指注册到nacos上的服务名
Geteway
- 路由:匹配到断言,就可以路由到某个位置
- 断言
- 过滤器
1、添加依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Hoxton.SR8</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-gateway</artifactId>
<version>2.2.5.RELEASE</version>
<!--因为我当前项目的父模块中有spring-boot-starter-web依赖,会导致依赖冲突,所以要排除这两个依赖-->
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-webflux</artifactId>
</exclusion>
</exclusions>
</dependency>
2、数据源排除
@EnableDiscoveryClient // nacos注册发现
@SpringBootApplication(exclude= {DataSourceAutoConfiguration.class}) // 排除数据源
public class SkyMallGatewayApplication {
public static void main(String[] args) {
SpringApplication.run(SkyMallGatewayApplication.class, args);
}
}
因为这里没有使用数据库链接的东西,引入数据源以后就会报错,但是有不可避免的使用数据源所以这里可以让项目排除数据源。
3、添加nacos配置文件
spring:
application:
name: sky-geteway # 模块名字
cloud:
nacos:
config: # nacos作为配置中心的配置
server-addr: 192.168.88.120:8848
namespace: a84d6ad0-3d98-4e6b-bc0c-c7d9178d84ef
extension-configs[0]:
data-id: sky-gateway.yml
group: dev
refresh: true
4、添加gateway配置
spring:
cloud:
gateway:
routes:
- id: payment_routh #payment_routh #路由的ID,没有固定规则但要求唯一,简易配合服务名
uri: http://localhost:8001 #匹配后提供服务的路由地址
predicates:
- Path=/payment/get/** #断言,路径相匹配的进行路由
- id: payment_routh2 #payment_routh #路由的ID,没有固定规则但要求唯一,简易配合服务名
uri: http://localhost:8001 #匹配后提供服务的路由地址
predicates:
- Path=/payment/lb/** #断言,路径相匹配的进行路由
版本问题
[Spring Cloud Hoxton Release Notes · spring-cloud/spring-cloud-release Wiki · GitHub](https://github.com/spring-cloud/spring-cloud-release/wiki/Spring-Cloud-Hoxton-Release-Notes)
Hoxton.SR8
2020-08-28
See all of the included issues and pull requests at the GitHub project. Hoxton.SR8 is compatible with Spring Boot 2.3.x and 2.2.x.
Spring Cloud Starter Build Hoxton.SR8
Spring Cloud Netflix 2.2.5.RELEASE
Spring Cloud Openfeign 2.2.5.RELEASE (issues)
Spring Cloud Config 2.2.5.RELEASE
Spring Cloud Aws 2.2.4.RELEASE
Spring Cloud Kubernetes 1.1.6.RELEASE (issues)
Spring Cloud Gateway 2.2.5.RELEASE (issues)
Spring Cloud Gcp 1.2.5.RELEASE
Spring Cloud Commons 2.2.5.RELEASE (issues)
Spring Cloud Sleuth 2.2.5.RELEASE (issues)
Spring Cloud Vault 2.2.5.RELEASE