Spring-Cloud-Alibaba Nacos服务注册中心与配置中心
Nacos服务注册中心基本配置
- 添加 Nacos服务注册中心依赖
<!-- nacos 服务注册 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
- 下载运行nacos服务中心,在application.yml中配置服务名称和nacos服务中心地址
spring:
application:
name: gulimall-coupon #服务名称
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848 #nacos 服务地址
- 在需要加入服务注册中心的主启动类上添加注解 @EnableDiscoveryClient
//开启服务注册发现
@EnableDiscoveryClient
@MapperScan("com.fj.gulimall.coupon.dao")
@SpringBootApplication
public class CouponApplication {
public static void main(String[] args) {
SpringApplication.run(CouponApplication.class, args);
}
}
4. 启动各个微服务,访问Nacos服务注册中心 localhost:8848/nacos查看各个微服务情况
默认登录名密码都为nacos
Nacos配置中心基本配置
- 添加 Nacos配置中心依赖
<!-- nacos 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
- 在需要使用nacos配置中心的微服务模块下新建bootstrap.properties(或bootstrap.yml)文件,这个配置文件在springboot项目启动的时候会优先加载。在这个文件中配置nacos的服务地址和当前服务的名称。
spring:
application:
name: gulimall-couon #服务名称
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 #配置中心地址
- 在当前微服务的yml或properties配置文件中配置信息一个用户信息
couponuser:
name: 小明
age: 18
- 在需要使用的地方使用Spring的@Value注解进行赋值,并且在当前类上添加注解@RefreshScope,日后项目上线运行需要更改配置时,只需要在Nacos配置中心更改即可
@Value("${couponuser.name}")
private String name;
@Value("${couponuser.age}")
private Integer age;
- 如果是多个环境就通过namespace来指定加载哪一个环境的配置,默认是public。
spring:
application:
name: gulimall-coupon
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
namespace: df44c5c3-0256-485c-99c1-5b1e6dc4bef3
Nacos配置中心的命名空间和分组的使用
-
在分布式微服务项目中一般每个模块会有相应的配置,即application.yml中的内容。使用Nacos配置中心的分组和命名空间可以将各个模块的配置内容进行隔离,做到每个服务有自己配置命名空间,每个命名空间又可以有个多个分组。而每一个分组又可以再拆分成多个部分的配置,例如数据源相关配置,SSM框架相关配置以及其他配置。
-
利用这一点可以使每个服务的配置都放在一个命名空间中,每个命名空间又分为dev分组、test分组、prod分组。其实就和本地一样做了环境隔离。但是相比本地优势在于能够动态更改所有的配置内容。
-
针对多个服务的配置,将coupon模块的bootstrap.propertis文件内容修改如下:
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=3705896a-eaea-4ac1-91f8-78023e9561df
spring.cloud.nacos.config.group=dev
spring.cloud.nacos.config.ext-config[0].data-id=datasource.yml
spring.cloud.nacos.config.ext-config[0].group=dev
spring.cloud.nacos.config.ext-config[0].refresh=true
spring.cloud.nacos.config.ext-config[1].data-id=mybatis.yml
spring.cloud.nacos.config.ext-config[1].group=dev
spring.cloud.nacos.config.ext-config[1].refresh=true
spring.cloud.nacos.config.ext-config[2].data-id=orther.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true
把原本的application.yml配置文件拆分成了三个部分,一部分是数据源配置datasource.yml,一部分是mybatis相关配置mybatis.yml,另外一部分是其他相关配置other.yml。此配置文件主要是让当前模块启动的时候去nacos配置中心加载这几个配置文件。
4. Nacos配置中心响应的内容如下:
- 先给对应模块创建各自的命名空间
- 在配置列表中给对应的模块添加相应配置文件,配置文件给出相应的分组即可
这样就可以直接删掉coupon模块中的application.yml文件了,模块的所有配置都在这里动态管理,其他模块也是同理。