下载nacos到本地,可以双击startup.cmd进行启动,默认为8848端口
作为注册中心
首先导入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-nacos-discovery</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
在配置文件中配置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
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
<version>2.2.1.RELEASE</version>
</dependency>
2.编写接口,编写接口告诉springcloud需要调用远程服务
@FeignClient("nacos1") //对应服务名
public interface feigndemo {
//找到想要调用其他服务的方法复制过来
@RequestMapping("/lzq/testfeign") //路径要写全
public R testfeign();
}
此时我们在当前方法调用接口时,就会自动在注册中心找到对应的服务访问对应的接口
还需在主类加入注解@EnableFeignClients,开启客户端的远程调用
同时可以指定对应接口包的全类名,只要服务启动就会自动扫描
@EnableFeignClients(basePackages = "com.lzq.feign")
配置中心
首先引入依赖建立连接
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
<version>2.1.0.RELEASE</version>
</dependency>
在项目中创建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
版权归原作者 远走与梦游 所有, 如有侵权,请联系我们删除。