细致教程:从安装到实战手把手教你玩懂Nacos
什么是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相关推荐
- 内网渗透-实战|手把手教你如何进行内网渗透
实战|手把手教你如何进行内网渗透 x00 Preface 内网渗透主要是基于前期外围打点getshell的webserver,通过收集webserver上的信息,然后对其他内网主机进行口令上的攻击,当 ...
- 手把手教你玩转OpenWRT路由器系统,视频教程合集
手把手教你玩转OpenWRT路由器系统,视频教程合集 以NewifiD2(新三)路由器为基础,录制了OpenWRT系列视频教程,欢迎观看. <[视频教程]手把手教你用虚拟机安装ubuntu操作系 ...
- [转帖]手把手教你玩转诺基亚N900
手把手教你玩转诺基亚N900 一直有这个想法,就是把N900从开箱到刷机,到软件安装,最后到玩转N900写个心得体会出来,可一直没有时间,现在休年假了,时间充裕的要死,加上我没有早睡的习惯,再加上我蠢 ...
- vscode angular智能提示_【线下活动】手把手教你玩转 VS Code 插件开发
感谢 Google Developer Group 的邀请,3 月 30 号下午,韩老师将手把手带你玩转 VS Code 插件开发. Angular 使用了 TypeScript,VS Code 使用 ...
- 手把手教你玩转CSS3 3D技术
手把手教你玩转 CSS3 3D 技术 要玩转css3的3d,就必须了解几个词汇,便是透视(perspective).旋转(rotate)和移动(translate).透视即是以现实的视角来看屏幕上的2 ...
- Shopify成功案例,手把手教你玩转独立站
Shopify成功案例,手把手教你玩转独立站 COVID-19的大流行对全球经济产生了较大的冲击,电子商务行业也不能幸免.我们的Shopify商店如何在这场全球灾难中生存?也许你可以在这些成功的Sho ...
- 手把手教你看懂电脑硬件测试软件CPU-Z(二)
建议请先看手把手教你看懂电脑硬件测试软件CPU-Z(一)~ 上一次给大家介绍了CPU-Z处理器界面的各参数含义,现在再回顾这张图,想必大家都不会陌生了. 这里简单总结下这台电脑的大致情况:这是一台笔记 ...
- android 自动化 微信,C#手把手教你玩微信自动化
原标题:C#手把手教你玩微信自动化 转自:初久的私房菜 cnblogs.com/MrChuJiu/p/13959383.html 介绍 本文主要讲的内容是 C# + Appium 自动化玩微信. Ap ...
- 【朝花夕拾】Android自定义View之(一)手把手教你看懂View绘制流程——向源码要答案
前言 原文:Android自定义View之(一)手把手教你看懂View绘制流程--向源码要答案 View作为整个app的颜值担当,在Android体系中占有重要的地位.深入理解Android View ...
最新文章
- ComplexHeatmap绘制热图(一)
- 锐捷服务器系统安全,锐捷网络平安城市解决方案满足室外监控的需求
- Kali Linux 2017中Scapy运行bug解决
- vonic 安装的坑
- 鼠标放上超链接显示背景效果
- python是面向对象还是过程_python编程:面向对象与过程是什么?
- 在Python3中将字符串转换为字节的最佳方法
- Java 嵌套类和内部类演示样例lt;二gt;
- golang 面向接口编程
- DeepEarth自定义图元的中心位置纠偏
- .NET文档生成工具ADB[更新至2.3]
- 施耐德c语言编程软件,施耐德PLC讲座 IEC语言梯形图
- 数据分析 | 异常数据识别小结
- CVPR 2019 Oral 论文解读 | 百度提出关于网络压缩和加速的新剪枝算法
- 绿幕抠图/蓝幕布抠图 自然背景抠图 Robust Video Matting 内容整理
- 海豚调度的安装和使用
- 图像形状及数量识别(matlab实现)
- 【傻瓜图文式】Win系统下制作U盘CLOVER引导+安装原版Mavericks10.9+安装问题总结
- 简单开发的android阅读器源码,包含了读取数据库和文件流处理功能
- 【头歌】旅游网站大数据分析-数据抓取
热门文章
- 链接:https://pan.baidu.com/s/1U-UlYoranUvpfj97XLrHvQ 提取码:ZMTD
- 写计算机老师的一封信200,写给老师的一封信200字7篇精选整合
- GDUFS 2018信息学院程序设计新手赛(正式赛)Java版题解
- 【R语言中如何去除替换NA相关操作】
- [分享] 新书推荐 -《黑莓(BlackBerry)开发从入门到精通》 | 黑莓时光
- 电子脑PHP动画制作,PS简单制作一个动态的字体动画
- 性能优化案例之:如何将TPS从60提升到2000?
- unity .obj文件的导出
- 计算机xp桌面没有下面的图标不见了,电脑图标不见了,下面的任务栏也不见了,怎么处理?XP系统...
- TK1上如何安装teamviewer,完结