spring cloud alibaba nacos
首先去下载nacos服务端
下载解压后
进入目录下的bin目录
执行单机模式
sh startup.sh -m standalone
然后就可以访问
http://192.168.200.130:8848/nacos
我用的是nacos-server-1.4.8.zip
nacos账号密码默认是nacos
maven 父工程
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.4.RELEASE</version>
<relativePath />
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Greenwich.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-alibaba-dependencies</artifactId>
<version>2.1.2.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
子工程
<?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>springcloudalibaba</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>nocas</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Nacos Discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
</project>
启动文件
package org.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class NacosApplication {
public static void main(String[] args) {
SpringApplication.run(NacosApplication.class,args);
}
}
配置文件名要是bootstrap.yml(确保Nacos的配置放在了正确的配置文件中。对于Spring Cloud应用,Nacos的配置应该放在bootstrap.properties或bootstrap.yml文件中,而不是application.properties或application.yml中。这是因为bootstrap配置文件中的配置会在应用上下文初始化之前加载,确保在应用启动时就能正确连接到Nacos服务器)
server:
port: 18080
spring:
application:
name: nacos-test1
cloud:
nacos:
discovery:
server-addr: 192.168.200.130:8848 # Nacos服务地址
然后就可以成功把服务注册到nacos注册中心了

nacos是利用ribbon来做负载均衡的
验证:
首先把配置文件中的端口号不写死,用个变量代替
server:
port: ${PORT}
spring:
application:
name: nacos-test1
cloud:
nacos:
discovery:
server-addr: 192.168.200.130:8848 # Nacos服务地址
加两个实例

发现服务名为
nacos-test1只有一个,而实例数有两个,所以可以负载均衡
负载均衡我们可以用ribbon来做,也可以用NacosRule来做,
,另外
从Spring Cloud 2020版本开始,Spring Cloud官方推荐使用Spring Cloud LoadBalancer来替代Ribbon作为负载均衡器。这是因为Ribbon已经停止更新维护,而Spring Cloud LoadBalancer是Spring Cloud官方提供的负载均衡组件,它与Spring Cloud的其他组件更加紧密集成,提供了更好的易用性和稳定性。Spring Cloud LoadBalancer支持响应式编程的方式异步访问客户端,依赖于Spring Web Flux实现客户端负载均衡调用。
在Spring Cloud Hoxton.M2版本中,Spring Cloud LoadBalancer首次被整合进来作为Ribbon的替代品。因此,如果您使用的是Spring Cloud 2020版本或更高版本,应当使用Spring Cloud LoadBalancer来实现负载均衡。在使用时,您只需要在需要负载均衡的RestTemplate或WebClient上添加@LoadBalanced注解即可。
我这里使用的老版本,所以使用ribbon来做实验
新创建一个模块,来测试ribbon
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>springcloudalibaba</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<artifactId>ribbon</artifactId>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-ribbon</artifactId>
</dependency>
<!-- Nacos Discovery -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>
</dependencies>
</project>
代码
ribbon测试模块代码
@RestController
@RequestMapping("/re")
public class RequestTestController {
private final RestTemplate restTemplate;
@Autowired
public RequestTestController(RestTemplate restTemplate) {
this.restTemplate = restTemplate;
}
@GetMapping("look")
public Integer look(){
return restTemplate.getForObject("http://nacos-test1/test", Integer.class);
}
}
nacos-test1 代码
@RestController
@RequestMapping("/test")
public class TestController {
@Value("${server.port}")
private String serverPort;
@GetMapping
public String findById(){
return serverPort;
}
}
启动类
package org.example;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
@SpringBootApplication
@EnableDiscoveryClient
public class RibbonTestApplication {
public static void main(String[] args) {
SpringApplication.run(RibbonTestApplication.class,args);
}
@Bean
@LoadBalanced //启动负载均衡
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
请求后发现打印的端口会变,代表负载均衡成功

以上就是nacos作为注册中心的简单使用
配置中心
添加依赖
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>
配置文件详情
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848 # Nacos服务器地址
namespace: your-namespace # Nacos命名空间ID(如果需要)
group: DEFAULT_GROUP # 配置分组,默认为DEFAULT_GROUP
data-id: your-application-name.yml # 配置文件的数据ID
file-extension: yml # 配置文件的后缀,这里是YAML格式
我的配置
server:
port: ${PORT}
spring:
application:
name: nacos-test1
cloud:
nacos:
discovery:
server-addr: 192.168.200.131:8848 # Nacos服务地址
config:
server-addr: 192.168.200.131:8848
file-extension: yml #nacos远程配置文件的后缀
key: 99999
添加一个配置

data-id要写
${data-id}.${file-extension}
我这里就是服务名.yml
然后发布前是99999

发布后
自动刷新需要再bean上加这个注解
@RefreshScope

浙公网安备 33010602011771号