1.介绍
官方介绍
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。
个人理解
nocos将每一个微服务联系起来,比如有多个订单服务和多个库存服务,当用户下订单时,订单服务就需要与库存服务建立联系,但是现在存在多个库存服务,应该如何建立联系?我们可以让多个库存服务在nacos中注册id,就相当于在nacos配置中心起了一个别名,当订单服务也需要在nacos中注册,这样当订单需求进来时,只需要在配置中心查找库存服务的id,这样就可以找到当前的库存服务。
2.nacos配置中心
当有多个微服务需要修改配置文件时,我们不可能修改每一个微服务的配置文件,这个时候我们可以使用nacos配置中心做统一管理,一次修改多次配置文件
3.使用
1.引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2.创建一个bootstrap.properties。
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
3.添加数据集gulimall-coupon.properties。默认规则,应用名.properties
4.我们在controller类里面创建一个test方法
@RefreshScope
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
@Autowired
private CouponService couponService;
@Value("${coupon.user.name}")
private String name;
@Value("${coupon.user.age}")
private Integer age;
@RequestMapping("/test")
public R test(){
return R.ok().put("name",name).put("age",age);
}
application.properties里面的属性为:
coupon.user.name=zhangsan2
coupon.user.age=20
可以看到页面显示为
结论:如果配置中心和当前应用的配置文件中都配置了相同的项,优先使用配置中心的配置。记得@RefreshScope注解:动态获取并刷新配置
4.现在我们操作把数据源,mybaties等配置文件在配置中心进行配置。
1.首先编写application.yml里面的配置信息
spring:
datasource:
username: root
password: 123456
url: jdbc:mysql://localhost:3306/gulimall_sms
driver-class-name: com.mysql.jdbc.Driver
cloud:
nacos:
discovery:
server-addr: 127.0.0.1:8848
application:
name: gulimall-coupon
mybatis-plus:
mapper-locations: classpath:/mapper/**/*.xml
global-config:
db-config:
id-type: auto
server:
port: 7000
2.创建一个分组,当前分组只用来编写当前服务的配置信息
3.在当前分组中创建多个yml文件,每一个文件匹配对应的配置信息
4.编写bootstrap.properties文件
spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=f96301a6-6f17-4375-9db5-5782d61defa5
#spring.cloud.nacos.config.group=prod
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=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true
namespace对应当前分组创建时所生成的ID名
在代码中把相关的配置文件代码注释,然后开启nacos服务,如果运行不报错则表示配置成功
此代码来自于尚硅谷中的实战项目。