Nacos注册中心和配置中心

310 阅读2分钟

注册中心

1.引入依赖和

  <dependency>    
      <groupId>com.alibaba.cloud</groupId>     
      <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> 
  </dependency>

2.在properties文件中配置服务地址和应用名称

Spring:
    cloud:
        nacos:
            discovery:
                server-addr: 127.0.0.1:8848
application:
    name: gulimall-coupon

3.在主程序中加入注解

@EnableDiscoveryClient 

远程调用

4.引入依赖openfeign

<dependency>    
    <groupId>org.springframework.cloud</groupId>    
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

5.在对应项目gulimall-coupon中编写好方法

@RequestMapping("/member/list")  
public R meberCoupons(){  
    CouponEntity couponEntity = new CouponEntity();  
    couponEntity.setCouponName("满300减50");  
    return R.ok().put("conpons",Arrays.asList(couponEntity)); 
}

6.编写接口,告诉SpringCloud这个接口需要调用远程服务
1)声明接口的每一个方法都是调用哪个远程服务的哪个请求。在gulimall-member项目中编写接口,新建文件CouponFeignService,如:

@FeignClient("gulimall-coupon")
public interface CouponFeginService { 
    @RequestMapping("/coupon/coupon/member/list")
    public R meberCoupons();
}

7.在gulimall-member调用另外一个项目中的方法

//将之前编写好的接口注入进来
@Autowired
CouponFeignService couponFeignService;

@RequestMapping("/coupons") 
public R test(){ 
    MemberEntity memberEntity=new MemberEntity(); 
    memberEntity.setNickname("rider"); 
    R meberCoupons = couponFeginService.meberCoupons(); 
    return R.ok().put("coupons",meberCoupons.get("conpons")).put("member",memberEntity); 
}

8.开启远程调用功能,在主项目中添加注解@EnableFeignClients(basePackages = "com.rider.gulimall.member.feign")

@EnableFeignClients(basePackages = "com.rider.gulimall.member.feign")
@EnableDiscoveryClient
@SpringBootApplication
@MapperScan("com.rider.gulimall.member.dao")
public class GulimallMemberApplication {
    public static void main(String[] args) {
        SpringApplication.run(GulimallMemberApplication.class, args);
    }
}

配置中心使用

9.引入依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

10.新建并在boostrap.properties中配置

spring.application.name=gulimall-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848

11.在配置中心添加数据集(Data Id)默认规则为应用名+properties,例如gulimall-coupon.priperties

12.在controller中加入注解@RefreshScope动态获取并刷新配置,@Value("${配置项的名字}")获取properties中的配置,项目和配置中心有相同的配置项,优先使用配置中心的文件
Tips:注意:项目加载时会优先使用配置中心的文件

nacos细节

13.命名空间:配置隔离。默认public配置空间,新增默认添加到public中。用来隔离开发、生产和测试等, 在bootstrap.properties中配置命名空间做配置隔离。namespace为他的UUID.

spring.cloud.nacos.config.namespace=5e252a0a-fc3d-447f-8964-933ab1f9d181

14.配置集配置id:配置集是指所有配置的集合,配置id就是Data Id

15.配置分组:默认所有的配置集都属于配置分组DEFAULT_GROUP

spring.cloud.nacos.config.group=DEFAULT_GROUP

16.项目规定:使用命名空间做每个微服务,用配置分组区分开发环境

17.利用配置中心。任何配置文件,任何配置信息,都可放在配置中心中。只要说明在配置中心加载那些值就好

spring.cloud.nacos.config.namespace=412a07e7-73d1-4169-9b58-68c7a743f3a9
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=other.yml
spring.cloud.nacos.config.ext-config[2].group=dev
spring.cloud.nacos.config.ext-config[2].refresh=true

配置中心有的优先使用配置中心的文件