什么是Nacos?
Nacos是阿里巴巴开源的项目,是一个更易于帮助构建云原生应用的动态服务发现、配置管理和服务管理平台。英文全称 Dynamic Naming and Configuration Service,Na为naming/nameServer即注册中心,co为configuration即注册中心,service是指该注册/配置中心都是以服务为核心。
Nacos功能介绍
1、动态配置服务:动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。
2、服务发现及管理:动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,您可以更容易地为您的服务实现断路器。
3、动态DNS服务:通过支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。
为什么选择Nacos?
1、易于使用:动态配置管理、服务发现和动态的一站式解决方案;20多种开箱即用的以服务为中心的架构特性;基本符合生产要求的轻量级易用控制台。
2、更适应云架构:无缝支持Kubernetes和Spring Cloud;在主流公共云上更容易部署和运行(例如阿里云和AWS);多租户和多环境支持。
3、生产等级:脱胎于历经阿里巴巴10年生产验证的内部产品;支持具有数百万服务的大规模场景;具备企业级SLA的开源产品。
4、丰富的应用场景:支持限流、大促销预案和异地多活;直接支持或稍作扩展即可支持大量有用的互联网应用场景;流量调度和服务治理。
环境
SpringBoot 2.3.3.RELEASE
nacos-server-2.0.3
apache-maven-3.6.3
jdk1.8.0_131
1 启动 Nacos Server 并添加配置
1.下载地址:
直接下载: Nacos Server 下载页
源码构建: Github 项目页面
2.启动
cd [文件位置]/nacos/bin/
Linux/Unix/Mac 操作系统,执行命令 bash sh startup.sh -m standalone &
Windows 操作系统,执行命令 cmd startup.cmd
默认账户密码:nacos
查看日志
cd [文件位置]/nacos/logs
tail -200f start.out
启动成功界面
3.添加配置
Data ID: nacos-config-example.properties
Group: DEFAULT_GROUP
配置内容:user.name=shiyue
<properties>
<java.version>1.8</java.version>
<cloud.version>Hoxton.SR6</cloud.version>
</properties>
<!--nacos整合配置中心-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
<!--nacos 服务注册-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>0.2.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
application.yml
server:
port: 8888
spring:
application:
name: nacos-config-example
cloud:
nacos:
discovery:
server-addr: localhost:8848
config:
server-addr: localhost:8848
group: DEFAULT_GROUP
file-extension: properties
启动配置
@EnableDiscoveryClient //连接Nacos 注册中心需要的
@SpringBootApplication
@EnableTransactionManagement
@EnableAsync // 开启异步处理
@EnableCaching
public class StarterUser {
public static void main(String[] args) {
SpringApplication.run(StarterUser.class, args);
}
}
控制层
package com.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("config")
// 实时热点更新
@RefreshScope
//@ConfigurationProperties(prefix = "nacos-config-example")
public class ConfigController {
@Value("${user.name}")
String userName;
@RequestMapping("/getConfig")
public String getConfig() {
System.out.println(userName);
return userName;
}
}
参考