什么是nacos?

首先看下官方的简介:

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

nacos的特性

  • 服务发现和服务健康监测
  • 动态配置服务
  • 动态DNS服务
  • 服务及元数据管理

nacos脑图

nacos的安装

对于nacos的安装,本文不作详细介绍,因为官网文档里面已经介绍的十分全面了,若有需要可以直接参考官网快速开始。安装完成之后,打开nacos后台管理页面如下:

可以发现左侧菜单有我们今天需要用到的配置管理和服务管理选项。

使用nacos作注册中心和配置中心

在使用nacos之前,本人所在公司注册中心使用的是eureka,配置中心是携程的apollo。nacos由国内公司阿里巴巴开源出品,集成了注册中心和配置中心两大功能,并且有强大的社区支持,符合国人使用习惯。

创建spring cloud项目

在父工程下创建module,创建服务提供者cloud-nacos-provider和服务消费者cloud-nacos-consumer,依赖信息如下:

org.springframework.cloud            spring-cloud-starter-alibaba-nacos-discovery        org.springframework.cloud            spring-cloud-starter-openfeign            2.0.0.RELEASEcom.alibaba.cloud            spring-cloud-starter-alibaba-nacos-config            2.2.1.RELEASEcom.yezi            cloud-nacos-api            1.0-SNAPSHOTcompile

cloud-nacos-provider

创建启动类

package com.yezi;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.client.discovery.EnableDiscoveryClient;import org.springframework.cloud.openfeign.EnableFeignClients;/** * @Description: * @Author: yezi * @Date: 2020/7/22 14:17 */@EnableFeignClients(basePackages = {"com.yezi"})@EnableDiscoveryClient@SpringBootApplicationpublic class ProviderApplication {    public static void main(String[] args) {        SpringApplication.run(ProviderApplication.class, args);    }}

@EnableDiscoveryClient将服务注册到注册中心

@EnableFeignClients(basePackages = {"com.yezi"})本文使用了feign,开启feign包扫描

服务提供api

package com.yezi.controller;import com.yezi.api.ProviderApi;import org.springframework.beans.factory.annotation.Value;import org.springframework.cloud.context.config.annotation.RefreshScope;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;import org.springframework.web.bind.annotation.RestController;/** * @Description: * @Author: yezi * @Date: 2020/7/22 15:01 */@RefreshScope@RestControllerpublic class ProviderApiController implements ProviderApi {    @Value("${name:123}")    private String name;    @Override    public String say(@PathVariable("msg") String msg) {        System.out.println("【---------from---------】" + msg);        return "hello,consumer1";    }    @GetMapping("/config")    public String config() {        System.out.println("【---------from---------】" + name);        return name;    }}
@RefreshScope 局部刷新注解,开启实时更新配置信息@Value("${name:123}") 最常用的配置信息注入直接,默认为123,如果配置文件有信息,则从配置文件获取。本文本地application.yml中没有这个属性,在配置中心中放置name配置

在配置中心创建配置信息

nacos的配置data id默认以服务的 spring.application.name 加上 .yml ,因此这里创建2个配置文件,分别为nacos-provider.yml、nacos-consumer.yml。

nacos-provider.yml内容:

server:  port: 8082name: y好卡机SD卡

nacos-consumer.yml内容:

server:  port: 8081

配置bootstrap.yml

创建bootstrap.yml

spring:  application:    name: nacos-provider  cloud:    nacos:      config:        enabled: false        server-addr: 192.168.18.244:8848        file-extension: yml      discovery:        server-addr: 192.168.18.244:8848

config.enabled 是否开启使用配置中心配置

config.server-addr 配置中心地址,也就是nacos地址

discovery.server-addr 注册中心地址(nacos地址)

笔者这里一开始用的application.yml,发现配置中心的数据没有生效,查看官方之后发现官网直接使用的bootstrap.yml然后就生效了。所以这里一定注意要使用bootstrap.yml。bootstrap.yml与application.yml两者区别如下:

  • bootstrap.yml(bootstrap.properties)用来程序引导时执行,应用于更加早期配置信息读取,如可以使用来配置application.yml中使用到参数等
  • application.yml(application.properties) 应用程序特有配置信息,可以用来配置后续各个模块中需使用的公共参数等。

由此知道bootstrap.yml 先于 application.yml 加载,使用spring cloud的时候,配置信息一般是从配置中心加载的,因此,把配置中心信息放在 bootstrap.yml,用来加载真正需要的配置信息。

创建config文件夹

在resources目录下创建config目录,在config目录中创application.yml配置文件,这里创建配置文件的目的是用作本地配置,当config.enabled=false时,将不会去读取配置中心细心,会直接读取config下配置文件信息。

cloud-nacos-consumer

服务消费者与提供者所有的文件模式是一样的,这里只提供一个消费者的延时controller:

package com.yezi.controller;import com.yezi.api.ProviderApi;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;/** * @Description: * @Author: yezi * @Date: 2020/7/22 15:03 */@RestControllerpublic class ConsumerController {    @Autowired    private ProviderApi providerApi;    @GetMapping("/say")    public String test() {        return providerApi.say("hello,provider");    }}

这里解释下为什么要把api层单独提供一个module,在使用feign的时候,服务消费者要使用服务提供者的api,需要构造一个与提供者一个一样的feign的client,为了节省这部分代码,把这部分单独提取一个module,在provider和consumer两边引入即可。

api信息如下:

package com.yezi.api;import org.springframework.cloud.openfeign.FeignClient;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PathVariable;/** * @Description: * @Author: yezi * @Date: 2020/7/22 16:35 */@FeignClient("nacos-provider")public interface ProviderApi {    @GetMapping("/provider/say/{msg}")    String say(@PathVariable("msg") String msg);}

启动服务验证结果

查看nacos配置列表,如下

发现2个服务都注册到nacos中心。

测试一下用为注册中心服务调用:

访问consumer服务 http://127.0.0.1:8081/say地址,8081端口是我们在配置中心指定的,本地端口为8083,得到如下结果:

nacos作为注册中心,验证通过。

测一下用作配置中心:

访问provider服务 http://127.0.0.1:8082/config地址,8082端口是我们在配置中心指定的,本地端口为8084,配置中心中name配置为yezi,得到如下结果:

nacos作为配置中心,验证通过。

来源:https://www.tuicool.com/articles/auIvemi

欢迎关注微信公众号【慕容千语】

nacos 公共_技术分享——使用nacos作注册中心和配置中心相关推荐

  1. gateway nacos注册服务_使用Nacos作为微服务注册中心和配置中心

    使用Nacos作为微服务注册中心和配置中心 一.技术简介 Nacos是阿里系开发的兼容Spring Cloud的服务注册中心组件,是微服务国产化的先驱.Nacos作为与Eureka的对比,不仅具有Eu ...

  2. SpringCloudAlibaba注册中心与配置中心之利器Nacos实战与源码分析(上)

    Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https ...

  3. 6.SpringCloud -- 注册中心与配置中心 Nacos、网关 Gateway

    6.SpringCloud -- 注册中心与配置中心 Nacos.网关 Gateway 一.了解一下 SpringCloud Alibaba 1.1 SpringCloudAlibaba (1)简单说 ...

  4. 基于Nacos的注册中心与配置中心

    基于Nacos的注册中心与配置中心 Nacos简介 概述 Nacos全称是动态命名和配置服务,Nacos是一个更易于构建云原生应用的动态服务发现.配置管理和服务管理平台.Nacos主要用于发现.配置和 ...

  5. nacos 负载策略_Spring Cloud Alibaba:Nacos 作为注册中心和配置中心使用

    Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,Nacos 作为其核心组件之一,可以作为注册中心和配置中心使用,本文将对其用法进行详细介绍. SpringCloud实战 ...

  6. 使用Nacos搭建微服务注册中心和配置中心(一)

    Nacos用于替换Spring Cloud Eureka和Spring Cloud Config,集注册中心和配置中心功能于一体. 本地测试搭建使用的环境为:win10, JDK8, MySQL5.6 ...

  7. Windowns10配置安装Seata14.0(注册中心和配置中心用的都是nacos)

    翻来翻来csnd,倒腾了一天一夜,也没看到一篇关于Windowns10下安装配置nacos完整的解释,都是缺胳膊少腿的,废话不多说直接进入主题!!! 我的环境:window10+nacos2.0.2+ ...

  8. python nacos注册中心_Nacos —— 注册中心和配置中心

    在学习微服务的时候,我们都会听到两个词:注册中心.配置中心. 什么是注册中心呢? 解释这个问题前,要先了解下什么是微服务结构,就我个人的理解,以前一个大型项目,有许多模块,例如用户管理模块.系统管理模 ...

  9. python个人博客搭建说明书_技术分享|利用Python Django一步步搭建个人博客(二)...

    原标题:技术分享|利用Python Django一步步搭建个人博客(二) Hello,欢迎来到我们的"利用Python Django一步步搭建个人博客"系列的第二部分.在第一部分中 ...

最新文章

  1. codevs 1200:同余方程
  2. C++继承中的普通函数,纯虚函数、虚函数
  3. html 首行缩进2个汉字
  4. Android 底部导航 UI框架
  5. java流的应用_Java中I/O流的应用
  6. php curl 下载图片 花,PHP curl下载图片的方法
  7. 两个网段怎么设置网关
  8. HiddenHttpMethodFilter过滤器—SpringMVC
  9. tf.train.Example的用法
  10. [洛谷P2370]yyy2015c01的U盘
  11. js页面间通信方法实现
  12. Windows与Linux比较:相似与不同
  13. 加载不同库,同名函数引起的BUG一例
  14. 原子结构示意图全部_所有原子结构示意图
  15. 我的世界服务器物品箱子,我的世界:使用箱子储存物品居多,难不成他们很“鸡肋”?...
  16. linux curl证书错误,curl – SSL证书错误
  17. 清翔电子51单片机小结——可调表时钟
  18. Flink基础系列8-Flink on yarn运行wordcount程序
  19. 计算二维紧束缚模型费米面和nesting程序新思路
  20. 抽象语法树AST的全面解析(一)

热门文章

  1. kafka单机模式删除某一个topic的数据,并解决Topic xxxx is marked for deletion....报错
  2. pdfplumber解析pdf文件
  3. Scrapy 一些常用方法总结(调试,定时与测试)
  4. java 代码锁_Java 锁的知识总结及实例代码
  5. 【洛谷】【lca+结论】P3398 仓鼠找sugar
  6. c# 在winform中为DataGridView头部标题添加ContextMenuStrip菜单
  7. JVM笔记(一)数字在JVM中的表示
  8. 一步一步安装UEFI分区方式的windows 10 企业版
  9. 链表的简单操作-----删除,添加,查找(Xcode)
  10. 常见的排序算法五——堆排序