IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Nacos的搭建使用以及遇到的问题 -> 正文阅读

[Java知识库]Nacos的搭建使用以及遇到的问题

环境准备

1、nacos版本:2.1.2,下载地址:https://github.com/alibaba/nacos/releases

2、JDK版本:jdk1.8.0_351,下载地址 http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

3、SpringBoot、SpringCloud、SpringCloudAlibaba版本

? 参考https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

SpringBoot版本spring.cloud.alibaba版本spring.cloud版本
2.4.22021.12020.0.1

一、部署Nacos

1、下载地址:

https://github.com/alibaba/nacos/releases

2、解压

unzip nacos-server-2.1.2.zip 或者 tar -xvf nacos-server-2.1.2.tar.gz

cd nacos/bin

3、启动

启动命令(standalone代表着单机模式运行,非集群模式):

sh startup.sh -m standalone

访问:http://192.168.129.128:8848/

4、常用命令

服务注册

curl -X POST ‘http://127.0.0.1:8848/nacos/v1/ns/instance?serviceName=nacos.naming.serviceName&ip=20.18.7.10&port=8080’

服务发现

curl -X GET ‘http://127.0.0.1:8848/nacos/v1/ns/instance/list?serviceName=nacos.naming.serviceName’

发布配置

curl -X POST “http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test&content=HelloWorld”

获取配置

curl -X GET “http://127.0.0.1:8848/nacos/v1/cs/configs?dataId=nacos.cfg.dataId&group=test”

5、关闭

sh shutdown.sh

二、项目使用

1、POM依赖

<!--nacos服务注册和配置文件-->
<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<dependency>
   <groupId>com.alibaba.cloud</groupId>
   <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<!--SpringBoot 2.4.x的版本之后,对于bootstrap.properties/bootstrap.yaml配置文件
(我们合起来成为Bootstrap配置文件)的支持,需要导入如下的依赖或者使用spring.cloud.bootstrap.enabled=true -->
<dependency>
   <groupId>org.springframework.cloud</groupId>
   <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

2、bootstrap.yml文件配置

#开启nacos日志
logging:
 level:
   com.alibaba.cloud.nacos.client.NacosPropertySourceBuilder: debug
#对应配置文件名称 ${spring.application.name}-${spring.profiles.active}.${file-extension}
spring:
 profiles:
   active: dev
 application:
   name: nacos-demo
 cloud:
   nacos:
     #服务相关
     discovery:
       server-addr: 192.168.129.128:8848
     #配置文件相关
     config:
       #enabled: false #完全关闭 Spring Cloud Nacos Config
       server-addr: 192.168.129.128:8848
       file-extension: yaml
       group: DEFAULT_GROUP
       namespace: 7f1a800b-6fb5-444e-baf9-ca17a7e3ce76 #不填默认public

3、在nacos控制台创建文件nacos-demo-dev.yaml

image-20221025164901813

4、创建并启动应用

@SpringBootApplication
@EnableDiscoveryClient
public class NacosDemoApplication {

   public static void main(String[] args) {
       ConfigurableApplicationContext applicationContext = SpringApplication.run(NacosDemoApplication.class, args);
       String userName = applicationContext.getEnvironment().getProperty("user.name");
       String userAge = applicationContext.getEnvironment().getProperty("user.age");
       System.err.println("user name :"+userName+"; age: "+userAge);
       String env = applicationContext.getEnvironment().getProperty("current.env");
       System.err.println("current.env value is " + env);
   }
}

出现以下日志说明配置文件加载成功

2022-10-25 16:47:22.580 DEBUG 23088 — [ main] c.a.c.n.c.NacosPropertySourceBuilder : Loading nacos data, dataId: ‘nacos-demo-dev.yaml’, group: ‘DEFAULT_GROUP’, data:
current.env: dev-env
user:
name: ‘哈哈’
age: 15

2022-10-25 16:47:22.584 INFO 23088 — [ main] b.c.PropertySourceBootstrapConfiguration : Located property source: [BootstrapPropertySource {name=‘bootstrapProperties-nacos-demo-dev.yaml,DEFAULT_GROUP’}, BootstrapPropertySource {name=‘bootstrapProperties-nacos-demo.yaml,DEFAULT_GROUP’}, BootstrapPropertySource {name=‘bootstrapProperties-nacos-demo,DEFAULT_GROUP’}]

出现以下日志说明服务注册成功

2022-10-25 16:47:26.230 INFO 23088 — [ main] com.alibaba.nacos.client.naming : [BEAT] adding beat: BeatInfo{port=9000, ip=‘192.168.129.1’, weight=1.0, serviceName=‘DEFAULT_GROUP@@nacos-demo’, cluster=‘DEFAULT’, metadata={preserved.register.source=SPRING_CLOUD}, scheduled=false, period=5000, stopped=false} to beat map.
2022-10-25 16:47:26.230 INFO 23088 — [ main] com.alibaba.nacos.client.naming : [REGISTER-SERVICE] public registering service DEFAULT_GROUP@@nacos-demo with instance: Instance{instanceId=‘null’, ip=‘192.168.129.1’, port=9000, weight=1.0, healthy=true, enabled=true, ephemeral=true, clusterName=‘DEFAULT’, serviceName=‘null’, metadata={preserved.register.source=SPRING_CLOUD}}
2022-10-25 16:47:26.233 INFO 23088 — [ main] c.a.c.n.registry.NacosServiceRegistry : nacos registry, DEFAULT_GROUP nacos-demo 192.168.129.1:9000 register finished

项目启动成功之后,控制台会输入如下值:

user name :哈哈; age: 15
current.env value is dev-env

三、遇见的问题

1、ERROR: Please set the JAVA_HOME variable in your environment, We need java(x64)! jdk8 or later is better! !!

在顶部添加第一环节中的JAVA_HOME,并修改启动方式为单列,其中java环境变量必须得配置成自己的

image-20221021172458143

2、SpringBoot 不识别 bootstrap 文件

SpringBoot 2.4.x的版本之后添加依赖spring-cloud-starter-bootstrap才能识别

3、namespace 填写的是命名空间的ID不是名称

这个id在Nacos控制台命名空间导航栏的列表可以找到

4、加载不到配置文件

去Nacos控制台看一下配置文件Data Id是否正确

组成规则是: s p r i n g . a p p l i c a t i o n . n a m e ? {spring.application.name}- spring.application.name?{spring.profiles.active}.${spring.cloud.nacos.config.file-extension},不要写错,大小写保持一致

如不指定环境则是nacos-demo.yaml,指定dev环境则是nacos-demo-dev.yaml

Note${spring.profiles.active} 当通过配置文件来指定时必须放在 bootstrap.properties 文件中。

具体参考:https://github.com/alibaba/spring-cloud-alibaba/wiki/Nacos-config

5、连接配置中心的参数需要写在 bootstrap 里面,写在 application 里面无法连接配置中心

6、bootstrap 比 application 先执行,且内容无法覆盖,尽量用bootstrap文件

加载顺序:
bootstrap.yml` > `bootstrap.properties` > `application.yml` > `application.properties
   
一旦bootStrap.yml 被加载,则内容不会被覆盖,即便后期加载的application.yml的内容标签与bootstrap的标签一致,application 也不会覆盖bootstrap,而application.yml 里面的内容可以动态替换

7、Nacos Server地址注意

Notenacos 的地址是本地的话,写127.0.0.1,不写localhost; 注意当你使用域名的方式来访问 Nacos 时,spring.cloud.nacos.config.server-addr 配置的方式为 域名:port。 例如 Nacos 的域名为abc.com.nacos,监听的端口为 80,则 spring.cloud.nacos.config.server-addr=abc.com.nacos:80。 注意 80 端口不能省略。
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-10-31 11:40:47  更:2022-10-31 11:44:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 10:56:08-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码