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协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。
修改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