栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

快速掌握Nacos

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

快速掌握Nacos

目录
  • 1、是什么?
  • 2、干什么?
  • 3、怎么用
    • 3.1 下载nacos-server
    • 3.2 启动nacos-server
    • 3.3 将模块注册到nacos中
    • 3.4 Nacos 作为配置中心

1、是什么?

Nacos 是阿里巴巴开源的一个更易于构建云原生应用的动态服务发现、配置管理和服务管理 平台。他是使用 java 编写。需要依赖 java 环境

2、干什么?

一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。作为我们的注册中心和配置中心。

3、怎么用 3.1 下载nacos-server

Nacos 文档地址

下载地址:Releases · alibaba/nacos · GitHub

3.2 启动nacos-server

双击 bin 中的 startup.cmd 文件

访问 http://localhost:8848/nacos/

使用默认的账号密码 nacos/nacos 进行登录

3.3 将模块注册到nacos中

1、加入Nacos依赖


com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-discovery


2、在application.properties文件中配置Nacos Server 地址

spring.application.name=shopping-coupon
spring.cloud.nacos.config.serveraddr=10.69.49.137:8848

3、使用@EnableDiscoveryClient 开启服务注册发现功能

@SpringBootApplication
@EnableDiscoveryClient
public class ShoppingCouponApplication {

    public static void main(String[] args) {
        SpringApplication.run(ShoppingCouponApplication.class, args);
    }
}

4、启动应用,观察 nacos 服务列表是否已经注册上服务

5、注册更多的服务上去,测试使用 feign 远程调用

Nacos 使用三步

1、导包 nacos-discovery

2、写配置,指定 nacos 地址,指定应用的名字

3、开启服务注册发现功能@EnableDiscoveryClient

Feign 使用三步

1、导包 openfeign

2、开启@EnableFeignClients 功能

3、编写接口,进行远程调用

@FeignClient("shopping-coupon")
public interface CouponFeignService {
    @RequestMapping("/coupon/coupon/member/list")
    public R membercoupons();
}

countroller里

 @Autowired
    CouponFeignService couponFeignService;

    @RequestMapping("/member/list")
    public R membercoupons() {
        MemberEntity memberEntity = new MemberEntity();
        memberEntity.setNickname("张三");
        R membercoupons = couponFeignService.membercoupons();
        return R.ok().put("coupons", memberEntity).put("coupons", membercoupons.get("coupons"));
    }

运行结果

3.4 Nacos 作为配置中心

1、引入依赖


com.alibaba.cloud
spring-cloud-starter-alibaba-nacos-config

2、在bootstrap.properties 配 置文件中配置 Nacos Config 元数据

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

3、在 nacos 中添加配置

在 nacos 中创建一个 应用名.properties配置文件并编写配置

Nacos Config 数据结构 Nacos Config 主要通过 dataId 和 group 来唯一确定一条配置。 Nacos Client 从 Nacos Server 端获取数据时,调用的是此接口 ConfigSerrvice.getConfig(String dataId, String group, long timeoutMs).

Spring Cloud 应用获取数据

dataID:

在 Nacos Config Starter 中,dataId 的拼接格式如下

${prefix} - ${spring.profiles.active} . ${file-extension} prefix 默认为 spring.application.name 的值,也可以通过配置项 spring.cloud.nacos.config.prefix 来配置。

spring.profiles.active 即为当前环境对应的 profile 注意,当 activeprofile 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 p r e f i x . {prefix}. prefix.{file-extension}

file-extension 为配置内容的数据格式,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。 目前只支持 properties 类型。

Group:

Group 默认为 DEFAULT_GROUP,可以通过 spring.cloud.nacos.config.group 配置

spring.application.name=shopping-coupon
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.namespace=97306cd5-bce0-4d84-8a1c-1309b5495fc4
#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

4、在应用中使用@Value 和@RefreshScope

完成上述两步后,应用会从 Nacos Config 中获取相应的配置,并添加在 Spring Environment 的 PropertySources 中 。 这 里 我 们 使 用 @Value 注 解 来 将 对 应 的 配 置 注 入 到 SampleController 的 userName 和 age 字段,并添加 @RefreshScope 打开动态刷新功能

@RefreshScope
@RestController
@RequestMapping("coupon/coupon")
public class CouponController {
    @Autowired
    private CouponService couponService;

    @Value("${coupon.user.name}")
    private String name;
    @Value("${coupon.user.age}")
    private Integer age;

5、核心概念

命名空间: 用于进行租户粒度的配置隔离。不同的命名空间下,可以存在相同的 Group 或 Data ID 的 配置。Namespace 的常用场景之一是不同环境的配置的区分隔离,例如开发测试环境和生 产环境的资源(如配置、服务)隔离等。

**配置集:**一组相关或者不相关的配置项的集合称为配置集。在系统中,一个配置文件通常就是一个配 置集,包含了系统各个方面的配置。例如,一个配置集可能包含了数据源、线程池、日志级 别等配置项。

配置集 ID: Nacos 中的某个配置集的 ID。配置集 ID 是组织划分配置的维度之一。Data ID 通常用于组 织划分系统的配置集。一个系统或者应用可以包含多个配置集,每个配置集都可以被一个有 意义的名称标识。Data ID 通常采用类 Java 包(如 com.taobao.tc.refund.log.level)的命名 规则保证全局唯一性。此命名规则非强制。

配置分组: Nacos 中的一组配置集,是组织配置的维度之一。通过一个有意义的字符串(如 Buy 或 Trade )对配置集进行分组,从而区分 Data ID 相同的配置集。当您在 Nacos 上创建一个 配置时,如果未填写配置分组的名称,则配置分组的名称默认采用 DEFAULT_GROUP 。配置 分组的常见场景:不同的应用或组件使用了相同的配置类型,如 database_url 配置和 MQ_topic 配置

自动注入: NacosConfigStarter 实现了 org.springframework.cloud.bootstrap.config.PropertySourceLocator 接口,并将优先级设置成了最高。 在 Spring Cloud 应用启动阶段,会主动从 Nacos Server 端获取对应的数据,并将获取到的 数据转换成 PropertySource 且注入到 Environment 的 PropertySources 属性中,所以使用 @Value 注解也能直接获取 Nacos Server

动态刷新: Nacos Config Starter 默认为所有获取数据成功的 Nacos 的配置项添加了监听功能,在监听 到服务端配置发生变化时会实时触发 org.springframework.cloud.context.refresh.ContextRefresher 的 refresh 方法 。 如果需要对 Bean 进行动态刷新,请参照 Spring 和 Spring Cloud 规范。推荐给类添加 @RefreshScope 或 @ConfigurationProperties 注

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/352201.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号