文章目录
1:nacos简介
Nacos是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台
功能:
1,动态配置服务
动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。
讲人话就是以前写在代码中的配置参数,可以不写死在代码中了;我们可以都提取到nacos中,并且当nacos中的参数变更时,可以不重启服务就可以当即生效
2:服务发现及管理
动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,您可以更容易地为您的服务实现断路器。
作为一个RPC调用的框架,当微服务A调用微服务B时,只需要提前B在nacos中注册了,就可以在服务A中像调用本地方法一样,直接注入,引用
3,动态DNS服务
通过支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。
2:nacos安装
1:环境准备
Nacos 依赖 Java 环境来运行。如果您是从代码开始构建并运行Nacos,还需要为此配置 Maven环境,请确保是在以下版本环境中安装使用:
- 64 bit OS,支持 Linux/Unix/Mac/Windows,推荐选用 Linux/Unix/Mac。
- 64 bit JDK 1.8+;Linux安装jdk的详细步骤
2:下载
- 可以从github上直接下载
- 或者直接从我的网盘下载
链接:https://pan.baidu.com/s/1HEZupQHEHCAQytpcSfEj6A
提取码:4wtv
3:安装
1:unzip nacos-server-1.4.1.zip
2: cd nacos/bin
3:sh startup.sh -m standalone #standalone代表着单机模式运行,非集群模式
4:查看
访问;http://ip:8848/nacos
注:8848是默认端口,可以在nacos\conf\application.properties中修改
3:nacos简单实用-Helloworld
1:导包
<!-- 配置中心 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
2:配置nacos
在bootstrap.yml中配置,他比application.yml加载的早
server:
port: 18080
servlet:
context-path: /
spring:
application:
name: nacos_config_test
cloud:
nacos:
config:
server-addr: 换成自己的ip:8848
namespace: 55f18581-f53b-4d17-b27a-d05d182fe1a9
group: DEFAULT_GROUP
name: nacos-test.yml
file-extension: yml
3:从nacos中获取数据
通过@Value 读取配置:
通过@RefreshScope刷新读取最新配置;
package com.java1234.controller;
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.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/*
* @description:
* @author: wangkanglu
* @date: 2022/8/25 21:09
* @param:
* @return:
**/
@RestController
@RequestMapping("/nacos")
@RefreshScope
public class NacosConfigController {
@Value("${java.name}")
private String name;
@Value("${java.age}")
private String age;
@GetMapping("/getConfigInfo")
public String getConfigInfo(){
return name+":"+age;
}
}