springcloud整合nacos实现注册发现中心

微服务为什么需要服务注册发现中心

  1. 高可用性:Nacos是一个高可用的注册中心,它支持多节点部署和集群模式,保证了服务的稳定性和可用性。当某个节点发生故障时,其他节点可以接管服务注册和发现的功能,确保系统的正常运行。
  2. 动态配置:Nacos不仅可以作为注册中心,还提供了配置中心的功能。Spring Cloud整合Nacos后,可以通过Nacos实现动态配置,实时更新配置信息。不需要重启服务,即可动态调整配置,提高了系统的灵活性和可维护性。
  3. 服务发现和负载均衡:Nacos提供了服务注册和发现的功能,可以简化服务间的调用和管理。通过Nacos注册中心,服务提供者可以将自己注册到注册中心,服务消费者可以从注册中心获取可用的服务实例列表,并实现负载均衡策略。这样,可以更方便地实现微服务架构下的服务调用和扩展。
  4. 健康检查:Nacos可以定期检查注册中心中的服务实例是否正常。通过健康检查,可以自动剔除故障节点,保证只向可用的节点进行服务调用,提高了系统的稳定性和容错性。
  5. 管理界面: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工具测试结果

image-20230716173203036

以上整个示例就完成了

如果需要完整源码请关注公众号"架构殿堂" ,回复 "springcloud整合nacos实现注册发现中心"获得

写在最后

如果大家对相关文章感兴趣,可以关注公众号"架构殿堂",会持续更新AIGC,java基础面试题, netty, spring boot,spring cloud等系列文章,一系列干货随时送达!

猜你喜欢

转载自blog.csdn.net/jinxinxin1314/article/details/131752870