Nacos 入门应用

Nacos入门应用

一、概述

Nacos提供了统一配置管理、服务发现与注册。 其中服务注册和发现的功能,相当于dubbo里面使用到的zookeeper、 或者spring cloud里面应用到的eureka。

之前在Spring Cloud Eureka 原理中说过服务注册中心原理
在这里插入图片描述
服务配置中心原理
在这里插入图片描述
二、Nacos注册中心应用

本地启动之后,访问url: http://localhost:8848/nacos
默认的端口8848,帐号密码是:nacos/nacos

api模块中,定义接口

public interface IHelloService {
String sayHello();
}

provider模块中,实现IHelloService接口

@Service
public class HelloServiceImpl implements IHelloService{
@Override
public String sayHello() {
return "Hello GuPao";
}
}

添加 @EnableDiscoveryClient 注解

@EnableDiscoveryClient
@SpringBootApplication
public class SpringCloudDubboSampleProviderApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudDubboSampleProviderApplication.class,
args);
}
}

配置dubbo提供方信息

# dubbo 服务扫描基础包路径
dubbo.scan.base-packages=com.gupaoedu.dubbo.springclouddubbosampleprovider
dubbo.protocol.id=dubbo
# Dubbo 服务暴露的协议配置,其中子属性 name 为协议名称,port 为协议端口( -1 表示自增端
口,从 20880 开始)
dubbo.protocol.name=dubbo
dubbo.protocol.port=-1
spring.cloud.nacos.discovery.server-addr=192.168.149.128:8848
  • dubbo.scan.base-packages : 指定 Dubbo 服务实现类的扫描base包
  • dubbo.protocol : Dubbo 服务暴露的协议配置,其中子属性 name 为协议名称, port 为协议端口( -1 表示自增端口,从 20880 开始)
  • spring.cloud.nacos.discovery : Nacos 服务发现与注册配置,其中子属性 server-addr指定 Nacos 服务器主机和端口

服务消费者

spring.application.name=spring-cloud-dubbo-sample-consumer
dubbo.application.name=spring-cloud-dubbo-sample-consumer
dubbo.cloud.subscribed-services=spring-cloud-dubbo-sample-provider
spring.cloud.nacos.discovery.server-addr=192.168.149.128:8848

除应用名称 spring.application.name 存在差异外, spring-cloud-dubbo-client-sample 新
增了属性 dubbo.cloud.subscribed-services 的设置。并且该值为服务提供方应用 “springcloud-dubbo-sample-provider”。

它的主要作用是服务消费方订阅服务提供方的应用名称的列表,若需订阅多应用,使用 “,” 分割。
不推荐使用默认值为 “*”,它将订阅所有应用。

@RestController
@EnableDiscoveryClient
@SpringBootApplication
public class SpringCloudDubboSampleConsumerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringCloudDubboSampleConsumerApplication.class,args);
}


@Reference
IHelloService helloService;
@GetMapping("/say")
public String say(){
return helloService.sayHello();
}
}

pom依赖

<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-dubbo</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.gupaoedu.dubbo</groupId>
<version>1.0-SNAPSHOT</version>
<artifactId>spring-cloud-dubbo-sample-api</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

三、Nacos配置中心应用

添加jar包依赖

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

bootstrap.properties
需要注意,配置中心的ip,需要放在bootstrap.properties文件中,因为需要保证优先级。

spring.cloud.nacos.config.server-addr=192.168.149.128:8848

自动更新配置

@RefreshScope
@RestController
public class NacosController {
@Value("${info:hello Nacos}")
private String info;
@GetMapping("/get")
public String get(){
return info;
}
}

dataId 可以认为是一个配置集,一个系统可以有多个配置集,一般我们可以使用包名来命名,从而很好的达到数据分类的目的groupId 配置分组,这个和dataId类似,但是它的纬度更高一些,可能是基于项目层面进行划分

测试过程

  • 启动服务,访问http://localhost:8080/get ,浏览器会显示info的默认值,因为这个时候nacos还没有配置info的key
  • 进入控制台,增加配置,dataid=example,groupid=spring-cloud-dubbo-sample-provider, 并且增加 info = xx的value属性
  • 再次刷新url,就可以读取到值的变化

Nacos Config配置解释
在 Nacos Spring Cloud 中, dataId 的完整格式如下: ${prefix}-${spring.profiles.active}.${file-extension}

  • prefix 默认为 spring.application.name 的值,也可以通过配置项spring.cloud.nacos.config.prefix 来配置
  • spring.profiles.active 即为当前环境对应的 profile(dev、sit、prd)注意:当spring.profiles.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成${prefix}.${file-extension}
  • file-exetension 为配置内容的数据格式,可以通过配置项spring.cloud.nacos.config.file-extension 来配置。目前只支持 properties 和 yaml 类型
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值