SpringCloud之Nacos服务治理组件的介绍和使用_后端开发基础免费分享的博客-程序员秘密

技术标签: SpringCloud组件  spring boot  java  后端  

Nacos是什么?

           Nacos(Dynamic Naming and Configuration Service) 是阿里巴巴2018年7月开源的项目。它专注于服务发现和配置管理领域 致力于帮助您发现、配置和管理微服务。Nacos 支持几乎所有

主流类型的“服务”的发现、配置和管理。

           一句话总结就是:Nacos = Spring Cloud注册中心 + Spring Cloud配置中心

Nacos的作用?

        两个核心功能:服务注册与发现,动态配置管理

什么时候使用Nacos?

        构建分布式项目或者说构建微服务时使用

怎么使用Nacos?

      Nacos作为服务治理组件的使用步骤:

                       1.下载安装nacos  https://github.com/alibaba/nacos/releases

                       2.启动nacos      windows下直接点击解压后文件中的“startup.cmd”运用

                       3.访问nacos所提供的管理后台: http://localhost:8848/nacos    登录名:nacos  密码:nacos

                       4.将微服务集成到nacos中

                              4.1 在服务的pom.xml文件中加入依赖

                              4.2 在application.yml文件中进行配置

 1.下载安装nacos

2.启动nacos 

 3.访问nacos所提供的管理后台: http://localhost:8848/nacos    登录名:nacos  密码:nacos

4.1 在服务的pom.xml文件中加入依赖

<!--nacos-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>0.2.2.RELEASE</version>
        </dependency>
        <dependency>
            <groupId>com.alibaba.nacos</groupId>
            <artifactId>nacos-client</artifactId>
            <version>1.1.0</version>
        </dependency>

4.2 在application.yml文件中进行配置

server:
  port: 8000   //不同服务使用不同端口号

spring:
  cloud:
    nacos:
      discovery:
        server-addr:  127.0.0.1:8848 # 配置nacos 服务端地址
  application:
    name: nacos-provider # 服务名称

 Nacos作为配置中心的使用步骤:

        先简单介绍一下配置中心,在微服务系统架构中为了保证系统的高性能高可靠性,每一个微服务在部署的时候采用的都是集群部署。

每一个服务中都存在自己所对应的配置文件。后期如果我们需要更改商品服务的配置信息,那么按照目前的部署架构来讲,就需要修改每一个服务中所对应的配置文件(application.yml)。当部

署的服务数量较小的时候,修改还是比较方便的,但是当服务变的越来越多,这种修改就变的非常的麻烦。太不利于后期的维护了。为了提高这个系统配置信息的维护性,我们可以使用一个

统一的配置中心,使用这个配置中心来统一存储配置文件。

        一句话:大大的提高了各个服务配置文件的维护性

            1.在nacos服务端创建一个配置文件:配置文件的唯一性是通过dataId + group确定的

            2.在服务中导入依赖

            3.创建配置文件(bootstrap.yml)

            4.加上实时刷新注解 为了不用重启服务器直接可以加载使用修改后的配置文件

            5.测试使用nacos服务端修改后的配置文件内容

  1.在nacos服务端创建一个配置文件:配置文件的唯一性是通过dataId + group确定

   dataId 的完整格式如下:

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

  •  spring.profile.active 即为当前环境对应的 profile, 注意:当 spring.profile.active 为空时,对应的连接符 - 也将不存在,dataId 的拼接格式变成 ${prefix}.${file-extension}

  •  file-exetension 配置文件的后缀名,可以通过配置项 spring.cloud.nacos.config.file-extension 来配置。目前只支持 propertiesyaml(yml) 类型

例:
nacos-config-module-dev.yml
代表服务的名称为nacos-config-module  环境为dev表示生产环境  文件格式为yml

     2.在服务中导入依赖

 <!-- 加入web的依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
		
        <!-- nacos作为配置文件的依赖包 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>

3.创建配置文件(bootstrap.yml,注意和application.yml同级层创建。啰嗦一句,bootstrap.yml和application.yml作用一样都可以被加载到,但是bootstrap属于系统级别的,比application的配置文件提前加载)

spring:
  application:
    name: nacos-config-module			# 应用的名称(如果没有指定spring.cloud.nacos.config.prefix配置,这个应用名称需要和nacos配置文件的前缀一致)
  cloud:
    nacos:
      config:
        server-addr: 127.0.0.1:8848		# nacos服务端的ip地址以及端口号
        file-extension: yml				# 配置文件的后缀名
  profiles:
    active: dev							# 环境配置

注意:一般有了bootstrap配置文件后,只需要在application中配置一下当前的配置环境即可,例如(dev,pro等),在bootstrap中配置nocas作为服务中心和配置中心等。。。

4.加上实时刷新注解 为了不用重启服务器直接可以加载使用修改后的配置文件

默认情况下,当nacos服务端配置文件的内容发送更新了以后。应用方是无法获取到最新的配置。要想在应用方获取最新的配置信息可以使用spring cloud提供的注解:@RefreshScope

该注解需要使用在读取配置文件的类上:

@RestController
@RequestMapping(value = "/nacos")
@RefreshScope  //实时刷新
public class NacosController {

    @Value("${userName}")
    private String userName ;

    @RequestMapping(value = "/findAll")
    public ResponseEntity<Map<String , Object>> findAll() {
        System.out.println("findAll.....");
        Map<String , Object> hashMap = new HashMap<String , Object>() ;
        hashMap.put("result" , userName) ;
        return ResponseEntity.ok(hashMap) ;
    }

}

5.测试使用nacos服务端修改后的配置文件内容

@RestController
@RequestMapping(value = "/nacos")
@RefreshScope
public class NacosController {

    @Value("${userName}")
    private String userName ;

    @RequestMapping(value = "/findAll")
    public ResponseEntity<Map<String , Object>> findAll() {
        System.out.println("findAll.....");
        Map<String , Object> hashMap = new HashMap<String , Object>() ;
        hashMap.put("result" , userName) ;
        return ResponseEntity.ok(hashMap) ;
    }

}

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_45675378/article/details/113096909

智能推荐

HTML侧边栏菜单_html侧边菜单_Hysea.的博客-程序员秘密

HTML侧边栏菜单用div做一个侧边菜单栏样式,没有导航功能,还没学会,大家不要介意。HTML:&lt;div class="sidebar"&gt; &lt;div class="tab" id="cate0"&gt;&lt;i class="reorder"&gt;&lt;/i&gt; 全部教程&lt;/div&gt; &lt;div class="design" id=...

BigDecimal.setScale用法例子_setscale(0, roundingmode.half_up)_清北_的博客-程序员秘密

mysql是BigDecimal类型存两位小数,前端显示百分数private BigDecimal money;public String money_str() { if (money!= null) { return money.multiply(new BigDecimal(100)).setScale(0, RoundingMode.HALF_UP).toString().concat("%"); } return "";}...

使用Java语言开发微信公众平台(五)——获取access_token_绝影邪的博客-程序员秘密

在前四期的文章中,我们分别学习了“环境搭建与开发接入”、“文本消息的接收与响应”、“被关注回复与关键词回复”、“图文消息的发送与响应”等环节。那么,从本篇博文开始,我们将进去更高级的开发层面,调用微信公众平台提供的各种接口。       今天,我们来学习一下微信公众平台最基础的一个接口——access_token,access_token是公众号的全局唯一票据,公众号调用各接口时都需使用acc...

Latex表格(更新ing)_\tabincell_暖色小猪的博客-程序员秘密

一、表格自动换页1、导言区输入宏包:\usepackage{supertabular}2、表格命令(示例)\begin{center} \bottomcaption{results of function\label{results of function}} \tablefirsthead{\hline number&amp;$x_0$&amp;$k$&amp;termina...

teamviewer访问校园网_teamviewer没有vpn选项_南阳北海的博客-程序员秘密

本文将介绍一种通过teamviewer的vpn功能实现外网访问内网的操作,简单来说,就是通过teamviewer的vpn实现外网访问内网的代理,再通过Proxifier辅助实现全局代理,即可实现外网访问内网的操作。这样的方法相对于proxychains4、端口转发等操作来说更方便,这里不做过多阐述。首先我们要有一部内网中的电脑,并且安装好teamviewer。一、安装teamviewer的vp...

php swoole redis订阅,执行Redis订阅后,无法执行其他操作了_图灵的追随者的博客-程序员秘密

### 问题描述执行Redis订阅后,无法执行其他操作了### Swoole版本,PHP版本,以及操作系统版本信息swoole-4.5.7php-7.4.12CentOS 8### 相关代码```phperror_reporting(0);if (php_sapi_name() !== 'cli') {die();}$a = swoole_get_local_ip();$ip = $a['ens3...

随便推点

hrbust 哈理工OJ 1918 M数【数位dp基础】_mengxiang000000的博客-程序员秘密

M数Time Limit: 1000 MSMemory Limit: 32768 KTotal Submit: 62(32 users)Total Accepted: 34(30 users)Rating: Special Judge: NoDescriptionMac最近YY了

SNMP配置示例_思科snmp配置实例_allway2的博客-程序员秘密

设备思科公司自适应安全设备(ASA)ASDM启动ASDM并连接到您的设备 转到配置&gt;管理访问&gt; SNMP 添加您的社区字符串 在“ SNMP主机访问列表”部分中添加您的LibreNMS服务器IP地址 单击应用并保存命令行界面# SNMPv2csnmp-server community &lt;YOUR-COMMUNITY&gt;snmp-server contact &lt;YOUR-CONTACT&gt;snmp-server location &lt

突破硬件瓶颈(三):旧时代的遗珠——并行流水线架构_刘爱贵 协程_刘爱贵的博客-程序员秘密

20年前,CPU的主流设计是流水线架构,增长流水线层级就可以提升性能。然而AMD的K8架构证明intel的发展方向是偏激的,它用更低的功耗和频率,战胜了使用31级流水线的Pentium 4 Intel被迫解散了NetBurst小组,承认了其失败,转而发展Core 2系列,借鉴了AMD将IMC加入CPU DIE的设计,大大加快内存的处理速度,解放了CPU性能。紧接着又转向了多核心处理器的研发,从单条流水线转向了并行流水线,打的AMD毫无还手之力。 十多年过去,截止目前的主流CP...

php怎么使用memcached,php memcached 使用教程_008972的博客-程序员秘密

php memcached 使用教程在php提供的用于与memcached交互的扩展模块中有memcached与memcache,前者提供方法getAllKeys用于遍历所有Memcached服务器上的key,但是并不保证原子操作,而后者却没有提供任何方法,虽然在PHP官方文档中有人给出使用方法getExtendedStats来间接获取Memcached服务器上的所有key,但是给出的代码是有不少...

【微信小程序】-- 页面导航 -- 编程式导航(二十三)_我是夜阑的狗的博客-程序员秘密

大家好,又见面了,我是夜阑的狗,本文是专栏【微信小程序开发教程】专栏的第23篇文章;今天开始学习微信小程序的第九天,开启新的征程,记录最美好的时刻,每天进步一点点。此专栏是我是夜阑的狗微信小程序开发过程的总结,希望能够加深自己的印象,以及帮助到其他的小伙伴。如果文章有什么需要改进的地方还请大佬不吝赐教。 也欢迎你,关注我。 !! 最后,本文仍有许多不足之处,欢迎各位认真读完文章的小伙伴们随时私信交流、批评指正!下期再见。

【驱动】linux设备驱动·入门_weixin_33965305的博客-程序员秘密

linux设备驱动 驱动程序英文全称Device Driver,也称作设备驱动程序。驱动程序是用于计算机和外部设备通信的特殊程序,相当于软件和硬件的接口,通常只有操作系统能使用驱动程序。 在现代计算机体系结构中,操作系统并不直接于硬件打交道,而是通过驱动程序于硬件通信。设备驱动介绍 驱动程序是附加到操作系统的一段程序,通常用于硬件...

推荐文章

热门文章

相关标签