文章目录
- 微服务为什么需要服务注册发现中心
- 怎么使用注册发现中心
- 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等系列文章,一系列干货随时送达!



















