下载nacos到本地,可以双击startup.cmd进行启动,默认为8848端口

作为注册中心

首先导入依赖

com.alibaba.cloud

spring-cloud-alibaba-nacos-discovery

2.1.0.RELEASE

在配置文件中配置Nacos Server地址

# 应用名称

spring.application.name=nacos1

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

在主类添加注解,将自己的服务注册进来

@EnableDiscoveryClient  //开启服务注册发现

此时启动nacos后,在启动项目就可以将项目注册进去

 

远程调用

Feign是一个声明式的Http客户端,提供了http请求模板,通过编写简单的接口和插入注解,就可以定义好http请求参数、格式、地址等信息。

Feign整合了Ribbon(负载均衡)和Hystrix(服务熔断),可以让我们不再需要显式的使用这两个组件

远程调用使用方式:

1.对项目添加依赖,引入feign

org.springframework.boot

spring-boot-starter-web

org.springframework.cloud

spring-cloud-starter-openfeign

2.2.1.RELEASE

2.编写接口,编写接口告诉springcloud需要调用远程服务

@FeignClient("nacos1") //对应服务名

public interface feigndemo {

//找到想要调用其他服务的方法复制过来

@RequestMapping("/lzq/testfeign") //路径要写全

public R testfeign();

}

此时我们在当前方法调用接口时,就会自动在注册中心找到对应的服务访问对应的接口

还需在主类加入注解@EnableFeignClients,开启客户端的远程调用

同时可以指定对应接口包的全类名,只要服务启动就会自动扫描

@EnableFeignClients(basePackages = "com.lzq.feign")

配置中心

 

首先引入依赖建立连接

com.alibaba.cloud

spring-cloud-starter-alibaba-nacos-config

2.1.0.RELEASE

在项目中创建bootstrap.properties文件,这个文件会优先于application.properties文件加载

在其中配置服务名称以及地址

spring.application.name=nacos1

spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848

动态修改配置文件

登陆nacos网址,在配置列表配置需要动态修改的信息

Data ID为服务名字+.properties,配置文件选择properties,编写好配置后点击发布

在对应方法中添加注解@RefreshScope注解

@RefreshScope

@RestController

public class Demo {

@Value("${shop.zhekou}")

private String zk;

}

此时通过代码获取对应值,就可以动态修改对应配置值

细节:命名空间、配置集、配置ID、配置分组

命名空间:默认public,主要作用配置隔离,(可以通过多个命名空间对应测试、生成环境),可以通过在bootstrap.properties中指定命名空间

spring.cloud.nacos.config.namespace=xxxxx

 

配置分组:相同命名空间可根据活动不同采取不同的配置,指定对应分组

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

 

查看原文