文章目录
- 微服务为什么需要服务注册发现中心
- 怎么使用注册发现中心
- 1.本示例环境
- 2.nacos 安装
- 3.pom.xml
- 4.application.yml
- 5.NacosDiscoveryDemoController
- 6.ServerConfig
- 7.NacosNacosDiscoveryServiceImpl
- 8.启动用http工具测试结果
- 如果需要完整源码请关注公众号"架构殿堂" ,回复 "springcloud整合nacos实现注册发现中心"获得
- 写在最后
微服务为什么需要服务注册发现中心
- 高可用性:Nacos是一个高可用的注册中心,它支持多节点部署和集群模式,保证了服务的稳定性和可用性。当某个节点发生故障时,其他节点可以接管服务注册和发现的功能,确保系统的正常运行。
- 动态配置:Nacos不仅可以作为注册中心,还提供了配置中心的功能。Spring Cloud整合Nacos后,可以通过Nacos实现动态配置,实时更新配置信息。不需要重启服务,即可动态调整配置,提高了系统的灵活性和可维护性。
- 服务发现和负载均衡:Nacos提供了服务注册和发现的功能,可以简化服务间的调用和管理。通过Nacos注册中心,服务提供者可以将自己注册到注册中心,服务消费者可以从注册中心获取可用的服务实例列表,并实现负载均衡策略。这样,可以更方便地实现微服务架构下的服务调用和扩展。
- 健康检查:Nacos可以定期检查注册中心中的服务实例是否正常。通过健康检查,可以自动剔除故障节点,保证只向可用的节点进行服务调用,提高了系统的稳定性和容错性。
- 管理界面:Nacos提供了一个用户友好的管理界面,可以查看和管理注册中心的服务实例信息、配置信息和健康状态等。通过管理界面,可以方便地监控和管理系统中的服务,提高了开发运维效率。
Spring Cloud整合Nacos实现注册中心可以提供高可用性、动态配置、服务发现和负载均衡、健康检查等功能,帮助开发者更好地管理和调用服务,提高系统的可维护性和可扩展性。
怎么使用注册发现中心
1.本示例环境
JDK: 17
SpringBoot: 3.0.6
spring-cloud-starter-alibaba-nacos-config: 2021.0.4.0
nacos: 2.2.0-BATA
2.nacos 安装
参考我之前文章:Nacos 启动与配置
3.pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.6</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>springboot-nacos-discovery</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</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-actuator</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
<version>2021.0.4.0</version>
</dependency>
</dependencies>
4.application.yml
spring:
cloud:
nacos:
config:
server-addr: 127.0.0.1:8848
group: DEFAULT_GROUP
#指定文件名,没有则默认${spring.application.name}
#指定文件后缀
file-extension: yaml
namespace: dca4fe79-6c62-44df-aa7f-12f58de7e05c #这里是nacos的命名空间的id
config:
import:
- optional:nacos:${spring.application.name}.${spring.cloud.nacos.config.file-extension}
application:
name: nacos.cfg.test
server:
port: 8080
5.NacosDiscoveryDemoController
@RestController
@RequestMapping("/distoryDemo")
public class NacosDiscoveryDemoController {
@Autowired
NacosDiscoveryService demoService;
@GetMapping("hello")
public Object echo(String name){
return demoService.sayHello(name);
}
}
6.ServerConfig
@Component
public class ServerConfig implements ApplicationListener<WebServerInitializedEvent> {
private int serverPort;
public String getUrl() {
InetAddress address = null;
try {
address = InetAddress.getLocalHost();
} catch (UnknownHostException e) {
e.printStackTrace();
}
return "http://" + address.getHostAddress() + ":" + this.serverPort;
}
@Override
public void onApplicationEvent(WebServerInitializedEvent event) {
this.serverPort = event.getWebServer().getPort();
}
}
7.NacosNacosDiscoveryServiceImpl
@Service
public class NacosNacosDiscoveryServiceImpl implements NacosDiscoveryService {
@Autowired
ServerConfig serverConfig;
@Override
public String sayHello(String name) {
System.out.println("[" + new SimpleDateFormat("HH:mm:ss").format(new Date()) + "] Hello " + name +
", request from consumer: " + serverConfig.getUrl());
return "Hello " + name + ", response from provider: " + serverConfig.getUrl();
}
}
8.启动用http工具测试结果
以上整个示例就完成了
如果需要完整源码请关注公众号"架构殿堂" ,回复 "springcloud整合nacos实现注册发现中心"获得
写在最后
如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot,spring cloud等系列文章,一系列干货随时送达!