Nacos配置启动
报错
https://juejin.im/entry/5cd39b4de51d453a59418b8e
删除报错信息中的’/data/nacos/data/derby-data’目录,重新启动。
注册中心 服务发现
1.添加pom依赖
放在gulimall-common中,作为公共服务
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
2.在application.yml中添加nacos配置
image-20200406172113014
3.将服务注册的注册中心
image-20200406172249856
配置中心
com.atguigu.gulimall.coupon.GulimallCouponApplication
- 一、如何使用nacos作为配置中心统一管理配置
- 1.在common中引入依赖
-
<groupId>com.alibaba.cloud</groupId>
-
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
- 2.创建配置文件 bootstrap.properties
- spring.application.name=gulimall-coupon
- spring.cloud.nacos.config.server-addr=192.168.0.100:8848
- 3.在nacos客户端,给配置中心添加一个数据集
- gulimall-coupon.properties
- 格式为 应用名称.properties
- 4.在 应用名称.properties中添加所需要的配置
- 5.动态获取配置
- 添加注解
- @RefreshScope:动态刷新并获取配置
- @Value("${配置项名称}")
- 如果配置中心和当前应用的配置文件中配置了相同的配置项,优先使用配置中心的配置
- 二、细节
- 1.命名空间:作用 做配置隔离
- 默认:public(保留空间);默认新增的所有配置都在public空间内
- ①开发、测试、生产 分别配置
- 在bootstrap.properties里配置想要使用的命名空间的配置项
- spring.cloud.nacos.config.namespace=8a4f21ba-3ef2-4754-8b2f-ef3b3c2ed8c8
- ②每一个微服务之间相互隔离,每一个微服务创建自己的命名空间,只加载自己命名空间下的所有配置
- 2.配置集
- 3.配置集ID
- 4.配置分组
- 一般实践:
- 每个微服务创建自己的命名空间,使用配置分区区分环境:dev、test、prod
命名空间
- 在nacos界面添加新命名空间
- 默认使用public命名空间
- 修改使用命名空间
image-20200406181100706
image-20200406181128637
Feign远程调用
com.atguigu.gulimall.member.GulimallMemberApplication
image-20200406175610142
调用方
com.atguigu.gulimall.member.controller.MemberController
服务方
com.atguigu.gulimall.coupon.controller.CouponController
image-20200406175829343
网关
性能对比
引入common时排除数据库相关
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
报错
spring initializr error
取消代理即可
包冲突
网上查是gateway和web包冲突,解决方案:common的pom替换掉
<?xml version="1.0" encoding="UTF-8"?>
gulimall
com.atguigu.gulimall
0.0.1-SNAPSHOT
4.0.0
<artifactId>gulimall-common</artifactId>
<description>每一个微服务公共的依赖,bean,工具类等</description>
<dependencies>
<!-- mybatis-plus-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.httpcomponents/httpcore -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.12</version>
</dependency>
<dependency>
<groupId>commons-lang</groupId>
<artifactId>commons-lang</artifactId>
<version>2.6</version>
</dependency>
<!-- 导入mysql驱动 -->
<!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.17</version>
</dependency>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
<!-- 服务注册/发现-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!-- 配置中心来做配置管理-->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
<groupId>javax.validation</groupId>
<artifactId>validation-api</artifactId>
<version>2.0.1.Final</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.0.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>