什么是Nacos

Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。

Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

简单来说,Nacos给我们提供了服务的注册与发现、配置中心、服务总线等,Nacos一个组件相当于Eureka、Config、Bus三个组件

Nacos安装

版本选择

进入 github.com/alibaba/nac… 后选择相应的版本后下载。

这里我采用的是1.3.1的Windows版本

修改配置

1、打开conf/application.properties文件

将33-41行配置修改为自己的数据库配置

spring.datasource.platform=mysql
### Count of DB:
db.num=1
### Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user=root
db.password=root
复制代码

2、导入SQL

conf/nacos-mysql.sql的sql导入到上面配置的nacos数据库中

3、启动

配置完成后,进入到bin/startup.cmd,双击运行

出现这个界面,如果没有报错,说明启动成功

我们访问Console的地址

用户名和密码都是:nacos

登陆成功后即可看到下图效果

服务提供者

搭建工程

搭建父工程:spring-cloud

我们需要在父工程中管理所有子项目的依赖版本

pom.xml

<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.10.RELEASE</version>
</parent>
<properties><spring-cloud-alibaba.version>2.2.3.RELEASE</spring-cloud-alibaba.version><spring-cloud-gateway.version>2.2.5.RELEASE</spring-cloud-gateway.version><spring-cloud-openfeign.version>2.2.5.RELEASE</spring-cloud-openfeign.version>
</properties><dependencyManagement><dependencies><!-- spring cloud alibaba --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!-- gateway 服务网关 --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-gateway-dependencies</artifactId><version>${spring-cloud-gateway.version}</version><type>pom</type><scope>import</scope></dependency><!-- openfeign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-openfeign-dependencies</artifactId><version>${spring-cloud-openfeign.version}</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
复制代码

搭建provider工程:spring-cloud-alibaba-nacos-discovery-provider

pom.xml 文件加入以下依赖

<parent><artifactId>spring-cloud-alibaba</artifactId><groupId>io.mvvm</groupId><version>1.0-SNAPSHOT</version>
</parent>
<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>
</dependencies>
复制代码

application.yml

spring:application:name: spring-cloud-alibaba-nacos-discovery-providercloud:nacos:discovery:server-addr: 127.0.0.1:8848
server:port: 8888
复制代码

NacosDiscoveryProviderApplication.java

我们这里使用了 @EnableDiscoveryClient注解来开启服务注册与发现

package io.mvvm;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;@SpringBootApplication
@EnableDiscoveryClient  //开启服务注册与发现
public class NacosDiscoveryProviderApplication {public static void main(String[] args) {SpringApplication.run(NacosDiscoveryProviderApplication.class, args);}
}
复制代码

测试启动

启动后,我们查看Nacos中的服务列表

可以看到,我们的服务已经成功的注册进 nacos

服务消费者

搭建工程:spring-cloud-alibaba-nacos-discovery-consumer

pom

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- openfeign --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>
</dependencies>
复制代码

application.yml

spring:application:name: spring-cloud-alibaba-nacos-discovery-consumercloud:nacos:discovery:server-addr: 127.0.0.1:8848
server:port: 8899
复制代码

NacosDiscoveryConsumerApplication.java

package io.mvvm;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;@SpringBootApplication
@EnableDiscoveryClient  //开启服务注册与发现
@EnableFeignClients     // 开启OpenFeign
public class NacosDiscoveryConsumerApplication {public static void main(String[] args) {SpringApplication.run(NacosDiscoveryConsumerApplication.class, args);}
}
复制代码

ConsumerClient.java

这里我们调用上面写的服务提供者的echo接口

@FeignClient中的value填入${spring.application.name}即可,openfeign底层采用了ribbon做负载均衡

package io.mvvm.client;import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;@FeignClient("spring-cloud-alibaba-nacos-discovery-provider")
public interface ConsumerClient {@GetMapping("/echo/{string}")String echo(@PathVariable String string);}
复制代码

ConsumerController.java

package io.mvvm.controller;import io.mvvm.client.ConsumerClient;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;@RestController
public class ConsumerController {@Resourceprivate ConsumerClient consumerClient;@GetMapping("/get/{str}")public String echo(@PathVariable("str") String string){return consumerClient.echo(string);}}
复制代码

测试

访问localhost:8899/get/123

查看打印的数据

配置中心

搭建工程

在父工程下搭建子工程:spring-cloud-alibaba-nacos-config

pom

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><!-- 服务注册 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- 配置中心 --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency>
</dependencies>
复制代码

bootstrap.yml

server:port: 9999
spring:application:name: spring-cloud-alibaba-nacos-configprofiles:active: devcloud:nacos:config:server-addr: 127.0.0.1:8848file-extension: yaml# 配置中心文件名称拼接方式
# ${prefix}-${spring.profiles.active}.${file-extension}
复制代码

NacosConfigApplication.java

package io.mvvm;import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@SpringBootApplication
@EnableDiscoveryClient  //开启服务注册与发现
public class NacosConfigApplication {public static void main(String[] args) {SpringApplication.run(NacosConfigApplication.class, args);}@RestController@RefreshScope       // 动态刷新配置信息class ConfigController {@Value("${config.version}")private String configVersion;@RequestMapping("/get")public String get() {return configVersion;}}
}
复制代码

添加配置

访问Nacos面板,进入到:配置管理->配置列表->+

其中Data ID一般为${prefix}-${spring.profiles.active}.${file-extension}

简单理解为:工程名称 + profile + 文件名称

例如上图中所展示:spring-cloud-alibaba-nacos-config-dev.yaml

分为了三部分

第一部分是:spring-cloud-alibaba-nacos-config为工程名称

第二部分是:dev即开发环境

第三部分是:yaml就是配置格式

注意:配置格式一般根据${spring.cloud.nacos.config.file-extension}决定

注意:后缀的yaml不要简写成yml,刚刚测试出错。

设置完毕后点击发布即可

测试

启动工程

访问url(忽略数据不一样,这是之前测试的图)

这里可以不断的修改nacos中配置的值,然后刷新测试是否可以拿到最新的配置

NAMESPACE & GROUP

在Nacos中有一个命名空间和分组的概念。

其中命名空间帮助我们实现了多租户的隔离作用

这里有很多种方案

命名空间以不同的环境进行管理,而分组以项目区分管理,

也可以将命名空间以项目作为管理,分组作为不同环境管理

添加命名空间

添加一个新在命名空间

其中ID一般留空即可,Nacos会使用UUID生成

命名空间名:我这里就以不同环境作为隔离,所以添加一个dev

描述:一些描述,避免一觉醒来忘记了

添加配置文件

首先要选择上方的dev环境,然后点击加号

这里的Group可以自定义,一般大写。

其他参考上面写的配置添加Demo

修改工程配置

  • namespace:这里是命名空间的ID,可以在命名空间列表中看到
  • group:就是刚刚在添加的时候自定义的,填进去就好了
server:port: 9999
spring:application:name: spring-cloud-alibaba-nacos-configprofiles:active: devcloud:nacos:config:server-addr: 127.0.0.1:8848  # nacos addressfile-extension: yamlnamespace: c686d204-8595-4bcb-acad-fad2693bc5aegroup: SPRINGCLOUDALIBABA_GROUP
复制代码

以上配置表示:在${namespace}命名空间中找到${group}分组中的${prefix}-${spring.profiles.active}.${file-extension}配置文件

测试

启动测试。

源码地址:gitee.com/aumu/spring…

原文地址:https://juejin.cn/post/7050702231628152846

如果你觉的本文对你有帮助,麻烦点赞关注支持一下

细致教程:从安装到实战手把手教你玩懂Nacos相关推荐

  1. 内网渗透-实战|手把手教你如何进行内网渗透

    实战|手把手教你如何进行内网渗透 x00 Preface 内网渗透主要是基于前期外围打点getshell的webserver,通过收集webserver上的信息,然后对其他内网主机进行口令上的攻击,当 ...

  2. 手把手教你玩转OpenWRT路由器系统,视频教程合集

    手把手教你玩转OpenWRT路由器系统,视频教程合集 以NewifiD2(新三)路由器为基础,录制了OpenWRT系列视频教程,欢迎观看. <[视频教程]手把手教你用虚拟机安装ubuntu操作系 ...

  3. [转帖]手把手教你玩转诺基亚N900

    手把手教你玩转诺基亚N900 一直有这个想法,就是把N900从开箱到刷机,到软件安装,最后到玩转N900写个心得体会出来,可一直没有时间,现在休年假了,时间充裕的要死,加上我没有早睡的习惯,再加上我蠢 ...

  4. vscode angular智能提示_【线下活动】手把手教你玩转 VS Code 插件开发

    感谢 Google Developer Group 的邀请,3 月 30 号下午,韩老师将手把手带你玩转 VS Code 插件开发. Angular 使用了 TypeScript,VS Code 使用 ...

  5. 手把手教你玩转CSS3 3D技术

    手把手教你玩转 CSS3 3D 技术 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上的2 ...

  6. Shopify成功案例,手把手教你玩转独立站

    Shopify成功案例,手把手教你玩转独立站 COVID-19的大流行对全球经济产生了较大的冲击,电子商务行业也不能幸免.我们的Shopify商店如何在这场全球灾难中生存?也许你可以在这些成功的Sho ...

  7. 手把手教你看懂电脑硬件测试软件CPU-Z(二)

    建议请先看手把手教你看懂电脑硬件测试软件CPU-Z(一)~ 上一次给大家介绍了CPU-Z处理器界面的各参数含义,现在再回顾这张图,想必大家都不会陌生了. 这里简单总结下这台电脑的大致情况:这是一台笔记 ...

  8. android 自动化 微信,C#手把手教你玩微信自动化

    原标题:C#手把手教你玩微信自动化 转自:初久的私房菜 cnblogs.com/MrChuJiu/p/13959383.html 介绍 本文主要讲的内容是 C# + Appium 自动化玩微信. Ap ...

  9. 【朝花夕拾】Android自定义View之(一)手把手教你看懂View绘制流程——向源码要答案

    前言 原文:Android自定义View之(一)手把手教你看懂View绘制流程--向源码要答案 View作为整个app的颜值担当,在Android体系中占有重要的地位.深入理解Android View ...

最新文章

  1. ComplexHeatmap绘制热图(一)
  2. 锐捷服务器系统安全,锐捷网络平安城市解决方案满足室外监控的需求
  3. Kali Linux 2017中Scapy运行bug解决
  4. vonic 安装的坑
  5. 鼠标放上超链接显示背景效果
  6. python是面向对象还是过程_python编程:面向对象与过程是什么?
  7. 在Python3中将字符串转换为字节的最佳方法
  8. Java 嵌套类和内部类演示样例lt;二gt;
  9. golang 面向接口编程
  10. DeepEarth自定义图元的中心位置纠偏
  11. .NET文档生成工具ADB[更新至2.3]
  12. 施耐德c语言编程软件,施耐德PLC讲座 IEC语言梯形图
  13. 数据分析 | 异常数据识别小结
  14. CVPR 2019 Oral 论文解读 | 百度提出关于网络压缩和加速的新剪枝算法
  15. 绿幕抠图/蓝幕布抠图 自然背景抠图 Robust Video Matting 内容整理
  16. 海豚调度的安装和使用
  17. 图像形状及数量识别(matlab实现)
  18. 【傻瓜图文式】Win系统下制作U盘CLOVER引导+安装原版Mavericks10.9+安装问题总结
  19. 简单开发的android阅读器源码,包含了读取数据库和文件流处理功能
  20. 【头歌】旅游网站大数据分析-数据抓取

热门文章

  1. 链接:https://pan.baidu.com/s/1U-UlYoranUvpfj97XLrHvQ 提取码:ZMTD
  2. 写计算机老师的一封信200,写给老师的一封信200字7篇精选整合
  3. GDUFS 2018信息学院程序设计新手赛(正式赛)Java版题解
  4. 【R语言中如何去除替换NA相关操作】
  5. [分享] 新书推荐 -《黑莓(BlackBerry)开发从入门到精通》 | 黑莓时光
  6. 电子脑PHP动画制作,PS简单制作一个动态的字体动画
  7. 性能优化案例之:如何将TPS从60提升到2000?
  8. unity .obj文件的导出
  9. 计算机xp桌面没有下面的图标不见了,电脑图标不见了,下面的任务栏也不见了,怎么处理?XP系统...
  10. TK1上如何安装teamviewer,完结