一、nacos介绍
Nacos /n:ks/ 是 Dynamic Naming and Configuration Service的首字母简称,一个更易于构建云原生运用的动态服务发现、装备办理和服务办理渠道。
Nacos 致力于协助您发现、装备和办理微服务。Nacos 供给了一组简略易用的特性集,协助您快速实现动态服务发现、服务装备、服务元数据及流量办理。
Nacos 协助您更灵敏和容易地构建、交付和办理微服务渠道。 Nacos 是构建以“服务”为中心的现代运用架构 (例如微服务范式、云原生范式) 的服务基础设。施。
二、环境建立
选用docker-compose建立测验环境。具体装备如下:
# docker-compose参考:https://github.com/nacos-group/nacos-docker/blob/master/example/standalone-mysql-5.7.yaml
# Nacos文档:https://nacos.io/zh-cn/index.html
version: '3'
# 网桥 -> 方便彼此通讯
networks:
nacos:
driver: bridge
services:
nacos:
image: registry.cn-hangzhou.aliyuncs.com/zhengqing/nacos-server:2.2.0 # 原镜像`nacos/nacos-server:2.2.0`
container_name: nacos_server # 容器名为'nacos_server'
restart: unless-stopped # 指定容器退出后的重启策略为一直重启,但是不考虑在Docker看护进程发动时就现已中止了的容器
volumes: # 数据卷挂载路径设置,将本机目录映射到容器目录
- "./nacos/logs:/home/nacos/logs"
environment: # 设置环境变量,相当于docker run命令中的-e
- PREFER_HOST_MODE=hostname # 假如支撑主机名可以运用hostname,否则运用ip,默许也是ip
- MODE=standalone # 单机形式发动
- SPRING_DATASOURCE_PLATFORM=mysql # 数据源渠道 仅支撑mysql或不保存empty
# TODO 修正mysql衔接信息
- MYSQL_SERVICE_HOST=10.11.68.77 # 注:这儿不能为`127.0.0.1`或`localhost`方式!!!
- MYSQL_SERVICE_DB_NAME=nacos_config # 所需sql脚本位于 `nacos/nacos-mysql.sql`
- MYSQL_SERVICE_PORT=3306
- MYSQL_SERVICE_USER=root
- MYSQL_SERVICE_PASSWORD=root
# TODO 修正JVM调优参数
- JVM_XMS=128m #-Xms default :2g
- JVM_XMX=128m #-Xmx default :2g
- JVM_XMN=64m #-Xmn default :1g
- JVM_MS=32m #-XX:MetaspaceSize default :128m
- JVM_MMS=32m #-XX:MaxMetaspaceSize default :320m
ports:
- "8848:8848"
depends_on:
- mysql
networks:
- nacos
mem_limit: 1000m # 最大运用内存
mysql:
image: registry.cn-hangzhou.aliyuncs.com/zhengqing/mysql:5.7
container_name: nacos-mysql
restart: unless-stopped
volumes:
- "./nacos/mysql5.7/my.cnf:/etc/mysql/my.cnf"
- "./nacos/mysql5.7/data:/var/lib/mysql"
- "./nacos/mysql5.7/log/mysql/error.log:/var/log/mysql/error.log"
environment:
TZ: Asia/Shanghai
LANG: en_US.UTF-8
MYSQL_ROOT_PASSWORD: root # 设置root用户密码
MYSQL_DATABASE: nacos_config # 初始化数据库
ports:
- "3306:3306"
networks:
- nacos
发动环境
# tips: 先修正装备与导入`nacos/nacos-mysql.sql`
docker-compose -f docker-compose.yml -p nacos up -d
拜访地址:ip地址:8848/nacos
登录账号密码默许:nacos/nacos
新增装备dataId 为test
server.port=8086
useLocalCache=false
三、代码工程
maven依赖
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>springboot-demo</artifactId>
<groupId>com.et</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>nacos</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<!-- 2.1.2版本以上支撑纯净版客户端 -->
<nacos.version>0.2.7</nacos.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-autoconfigure</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-config-spring-boot-starter</artifactId>
<version>${nacos.version}</version>
</dependency>
</dependencies>
</project>
controller
package com.et.nacos.controller;
import com.alibaba.nacos.api.config.annotation.NacosValue;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import static org.springframework.web.bind.annotation.RequestMethod.GET;
@Controller
@RequestMapping("config")
public class ConfigController {
@NacosValue(value = "${useLocalCache:false}", autoRefreshed = true)
private boolean useLocalCache;
@RequestMapping(value = "/get", method = GET)
@ResponseBody
public boolean get() {
return useLocalCache;
}
}
装备文件
nacos:
config:
server-addr: 127.0.0.1:8848
发动类
package com.et.nacos;
import com.alibaba.nacos.spring.context.annotation.config.NacosPropertySource;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
@NacosPropertySource(dataId = "test", autoRefreshed = true)
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
代码仓库
四、测验
-
拜访 http://localhost:8080/config/get
,回来内容是false
。 - 通过nacos控制台修正装备:dataId 为
example
,内容为useLocalCache=true
- 再次拜访
http://localhost:8080/config/get
,此时回来内容为true
,阐明程序中的useLocalCache
值现已被动态更新了。