这是我参与「掘金日新计划 · 8 月更文挑战」的第6天,点击查看活动详情
什么是Nacos
Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现丶配置管理和服务管理平台,是使用java编写 需要依赖java环境.。
官方文档地址:nacos.io/zh-cn/docs/…
那么下面我们集成使用一下
第一步下载 nacos
下载nacos-server :地址 github.com/alibaba/nac…
直接下载zip那个包 当然liunx的话直接docker在线安装也没问题
将下载下来的文件解压进入到 bin目录双击于
startup.cmd
启动注册中心
启动成功后 访问地址 nacos可视化界面 账号密码默认都是nacos http://localhost:8848/nacos/#/login
第二步 我们在微服务中引入下依赖
//这里的版本和自己的一致就行 这是作为注册中心的
<cloud-alibaba.version>2.1.0.RELEASE</cloud-alibaba.version>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>${cloud-alibaba.version}</version>
</dependency>
复制代码
在配置文件中设置nacos的地址
spring:
cloud:
nacos:
discovery:
server-addr: 192.168.1.12:8848 //nacos的地址
application:
name: bugvip-boss //服务的名称 注意不设置 name不会注册到nacos
复制代码
在启动类上添加 注解开启服务的发现和注册 @EnableDiscoveryClient
最后我们启动服务进行测试
可以在服务列表看到 bugvip-boss 服务已经成功注册到nacos 下面将其他服务也注册到nacos 中去进行调用测试(这里我们远程调用使用的也是阿里巴巴维护 openFeign)
可以看到 网关 和 DB 服务也已经注册进来了 直接操作登录可以看到成功调用
这里的远程调用 简单说一下 这里
@FeignClient(value = "bugvip-base")
value就是服务的名称也就是注册到nacos中服务名称(我这个项目中所有的 远程调用抽离到了公共模块)
nacos 第三步作为配置中心
第一步还是引入依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
复制代码
第二步 在项目 resources 下创建 bootstrap.properties
文件 这个文件会优先于yml文件执行 在文件中添加 服务名称和nacos的地址
spring.application.name=bugvip-boss //服务的地址
spring.cloud.nacos.config.server-addr=192.168.1.12:8848 //nacos地址
复制代码
使用测试属性在配置文件中
xk:
name: xkk
age: 10
复制代码
下面我们在nacos 中创建一个此服务的配置文件 首先先创建一个dev的命名空间
在配置管理中创建配置文件
下面我们使用一下代码测试
/**
* @Author: Mr_xk
* @Description: 平台登陆处理类
* @Date: 2021/8/1
**/
@RestController
@RequestMapping("boss/acl")
@RefreshScope
public class LoginController {
@Value("${xk.name}")
private String name;
@Value("${xk.age}")
private String age;
@RequestMapping("test")
public R test(){
Map<String,Object> map = new HashMap<>();
map.put("name",name);
map.put("age",age);
return R.ok().data(map);
}
复制代码
注意: @RefreshScope
是动态刷新配置文件里的值 即在nacos中更新配置文件后 代码可以获取到最新的
初始数据:
动态更新后:
那么我们可以使用命名空间 和 配置分组 来进行 配置隔离(环境隔离以及服务隔离)
下面我们演示下 服务分组
先创建服务命名空间
然后在每个服务的命名空间下创建自己的 配置文件 并以group 为 环境隔离
然后在项目中配置多个配置文件的加载以及 自动刷新
spring.profiles.active=dev 设置启动加载配置文件
spring.application.name= bugvip-boss
spring.cloud.nacos.config.server-addr= 192.168.1.12:8848
spring.cloud.nacos.config.namespace= 120694d7-9815-4d3d-8150-d9c8bac82c11
spring.cloud.nacos.config.group= dev
spring.cloud.nacos.config.ext-config[0].data-id= spring.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= other.yml
spring.cloud.nacos.config.ext-config[1].group= dev
spring.cloud.nacos.config.ext-config[1].refresh= true
复制代码
ok 当然隔离的方式有很多这里只是简单的示范一下。
注意:nacos中有的配置文件是优先加载的nacos没有再加载项目中的配置文件 实践是检验真理的唯一标准,明天见咯。