NACOS学习心得体会
作者:互联网
NACOS学习
下载
下载地址:https://pan.baidu.com/s/1-ZY4kca05VojJ_79yubP1A 提取码:ilcd
启动nacos
-
异常一
java.io.IOException: java.lang.IllegalArgumentException: db.num is null
创建一个名为 nacos 的数据库,在 nacos/conf 目录下找到 nacos-mysql.sql 文件,打开文件执行 nacos-mysql.sql 脚本里的 sql
修改 application.properties 文件里的 mysql 配置,修改为自己的数据库连接
-
异常二: Unable to start web server; nested exception is org.springframework.boot.web.server.WebServerException: Unable to start embedded Tomcat
方案:修改 nacos/bin 目录下的 startup.cmd 文件,修改为单机模式,默认是集群模式
原默认是 cluster 修改为 standalone set MODE="standalone"
访问NACOS管理网站
-
在浏览器中输入:http://localhost:8848/nacos
-
输入用户名:nacos,密码:nacos
Spring boot微服务注册到Nacos
-
在
pom.xml
文件中,引入相关依赖<?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.3.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>spring-boot2</name>
<description>Demo project for Spring Boot</description>
<properties>
<java.version>8</java.version>
<nacos-config-spring-boot.version>0.2.1</nacos-config-spring-boot.version>
<nacos-discovery-spring-boot.version>0.2.3</nacos-discovery-spring-boot.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- redis -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>${nacos-discovery-spring-boot.version}</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>28.2-jre</version>
</dependency>
<!--nacos客户端-->
<!--
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>0.1.2.RELEASE</version>
</dependency>-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--devtools热部署-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
<scope>true</scope>
</dependency>
</dependencies>
<build>
<defaultGoal>compile</defaultGoal>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<includeSystemScope>true</includeSystemScope>
</configuration>
</plugin>
</plugins>
</build>
</project> -
重点是引入
nacos-discovery-spring-boot-starter
依赖,实现对 Nacos 作为注册中心的自动化配置。 -
在application.properties中,添加 Nacos 配置,如下:
# 要注册的服务名
spring.application.name=example
# 端口
server.port=8080
# nacos server 地址信息
#spring.cloud.nacos.discovery.server-addr=localhost:8848
nacos.discovery.server-addr=127.0.0.1:8848
nacos.discovery.auto-register=true # 是否自动注册到 Nacos 中。默认为 false。
nacos.discovery.register.service-name=${spring.application.name} # 注册到 Nacos 的服务名
nacos.discovery.register.group-name=DEFAULT_GROUP # 使用的 Nacos 服务分组,默认为 DEFAULT_GROUP。
-
问题:配置pom文件,报错:Project build error: ‘dependencies.dependency.version’ fo
<properties>
<java.version>8</java.version>
<nacos-config-spring-boot.version>0.2.1</nacos-config-spring-boot.version>
<nacos-discovery-spring-boot.version>0.2.3</nacos-discovery-spring-boot.version>
</properties><dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>nacos-discovery-spring-boot-starter</artifactId>
<version>${nacos-discovery-spring-boot.version}</version>
</dependency>
ProviderController编写
package com.example.demo.controller;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/provider")
public class ProviderController {
@RequestMapping("/demo")
public String echo(HttpServletRequest request) {
return "echo:" + request.getParameter("name");
}
}
ConsumerController
package com.example.demo.controller;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;
import com.alibaba.nacos.api.annotation.NacosInjected;
import com.alibaba.nacos.api.exception.NacosException;
import com.alibaba.nacos.api.naming.NamingService;
import com.alibaba.nacos.api.naming.pojo.Instance;
@RestController
@RequestMapping("/consumer")
public class ConsumerController {
@NacosInjected
private NamingService namingService;
private RestTemplate restTemplate = new RestTemplate();
@GetMapping("/demo")
public String consumer() throws IllegalStateException, NacosException {
// <1> 获得实例
Instance instance = null;
if (false) {
List<Instance> instances = namingService.getAllInstances("demo-application");
// 获得首个实例,进行调用
instance = instances.stream().findFirst()
.orElseThrow(() -> new IllegalStateException("未找到对应的 Instance"));
} else {
instance = namingService.selectOneHealthyInstance("demo-application");
}
// <2> 执行请求
return restTemplate.getForObject("http://" + instance.toInetAddr() + "/provider/demo?name=nacos",
String.class);
}
}
运行测试
-
微服务启动后,在启动日志中会看到以下信息,表明微服务已经注册到nacos
2021-10-02 15:17:52.359 INFO 18516 --- [ restartedMain] c.a.b.n.d.a.NacosDiscoveryAutoRegister : Finished auto register service : demo-consumer, ip : 192.168.0.12, port : 8081
-
我起了两个为服务,8080端口的是provider,8081的是consumer.
-
在浏览器的中办入:http://127.0.0.1:8081/consumer/demo echo:nacos
-
nacos的服务列表中注册了两个微服务
-
demo-application DEFAULT_GROUP 1 1 1 false 详情|示例代码|订阅者|删除 demo-consumer DEFAULT_GROUP 1 1 1 false 详情|示例代码|订阅者|删除
标签:心得体会,spring,boot,nacos,springframework,NACOS,学习,import,org 来源: https://www.cnblogs.com/felixterry/p/15362037.html