nacos介绍
nacos官网,nacos是阿里那套微服务中的一个组件,可以单独使用可以,配合其他的组件一起使用。我们用的最多还是nacos的动态配置,这个对与其他可替代的微服务组件来说,这个比价简单,使用也非常的方便。
什么是nacos
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。
启动nacos服务
本地电脑运行可以直接去官网下载,直接下载解压运行就可以了,也可以自己去找最新版本。
服务启动
Linux/Unix/Mac
启动命令(standalone代表着单机模式运行,非集群模式):
sh startup.sh -m standalone
如果您使用的是ubuntu系统,或者运行脚本报错提示[[符号找不到,可尝试如下运行:
bash startup.sh -m standalone
Windows
启动命令(standalone代表着单机模式运行,非集群模式):
startup.cmd -m standalone
访问
启动服务之后直接访问 http://127.0.0.1:8848/nacos ,初始账户密码是nacos/nacos.
添加配置信息
添加对环境和服务配置信息,里面的data ID 可以根据服务信息生成也可以,在服务中指定。这里直接填写服务名就好了,其他的默认就可以了,直接“发布”就可以了。
可以查看配置文件历史记录,还提供回滚功能。
动态配置服务
动态配置服务让您能够以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。
添加依赖,不能使用最新版本的spingboot,nacos基于的版本比较低,建议使用比较低版本的springBoot。
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.10.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>nacos_client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>nacos_client</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>1.8</java.version>
<project-version>2.2.1.RELEASE</project-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-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>${project-version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
配置修改,直接添加bootstrap.properties文件因为springBoot的加载顺序,如果配置中初始化服务的配置就需要使用bootstrap文件。
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.group=DEFAULT_GROUP
#DataId
spring.cloud.nacos.config.name=nacos_client001
spring.application.name=nacosClient
使用@RefreshScope注解,具体项目不建议将此注解直接使用在普通bean,建议做一个配置bean进行动态刷新,这样会更加安全高效。
package com.example.nacos_client.controller;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope
public class TestController {
@Value("${testName}")
private String testName;
@RequestMapping("/test")
public String testPara(){
return testName;
}
}
服务发现及管理
动态服务发现对以服务为中心的(例如微服务和云原生)应用架构方式非常关键。Nacos支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现。Nacos也提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,您可以更容易地为您的服务实现断路器。可以参考官网直接使用,功能和eureka类似。
动态DNS服务
通过支持权重路由,动态DNS服务能让您轻松实现中间层负载均衡、更灵活的路由策略、流量控制以及简单数据中心内网的简单DNS解析服务。动态DNS服务还能让您更容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。
修改为mysql存储配置
修改conf/application.properties
server.contextPath=/nacos
server.servlet.contextPath=/nacos
server.port=8841
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://localhost:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true
db.user=root
db.password=840416