栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Nacos服务发现实践

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Nacos服务发现实践

本文使用Nacos来实现服务发现

文章目录
  • 概述
  • 创建服务整合Nacos
    • service-provider
    • service-consumer
    • 启动测试
  • 服务调用
    • service-provider
    • service-consumer
    • 启动测试
  • 本文小结


概述

本文的目的是对SpringBoot服务整合Nacos,实现服务调用。


下面会创建2个 SpringBoot 项目:

  • service-provider
  • service-consumer

都整合Nacos,启动后可以自动注册到 Nacos 服务注册中心。

然后在service-consumer的Controller中实现对service-provider的接口调用。

步骤:

(1)创建service-provider与service-consumer,整合Nacos

(2)service-provider 中添加测试接口 “/hello”,service-consumer 中调用其 “/hello” 接口


创建服务整合Nacos service-provider

pom.xml



    
        org.springframework.boot
        spring-boot-starter-parent
        
        2.2.5.RELEASE
        
    
    com.example
    service-provider
    0.0.1-SNAPSHOT
    service-provider
    Demo project for Spring Boot

    
        1.11
    

    
        
            org.springframework.boot
            spring-boot-starter-web
        
        
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        

    

    
        
            
            
                org.springframework.cloud
                spring-cloud-dependencies
                Hoxton.SR3
                pom
                import
            
            
            
                com.alibaba.cloud
                spring-cloud-alibaba-dependencies
                2.2.1.RELEASE
                pom
                import
            
        
    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    

重点是 SpringBoot、SpringCloud、SpringCloud Alibaba 这3者的版本问题,这里使用的版本为:

  • SpringBoot 2.2.5.RELEASE
  • SpringCloud Hoxton.SR3
  • SpringCloud Alibaba 2.2.1.RELEASE

如何确定各自的版本呢?在 SpringCloud Alibaba 项目的 wiki 文档中有所说明,地址为:https://github.com/alibaba/spring-cloud-alibaba/wiki/%E7%89%88%E6%9C%AC%E8%AF%B4%E6%98%8E

页面效果:

添加好依赖之后,添加相关配置:

server:
  port: 8081 # 端口
spring:
  application:
    name: service-provider # 服务名
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos server 地址

然后在启动类中添加注解:

...
@SpringBootApplication
@EnableDiscoveryClient // 开启服务发现
public class ServiceProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(ServiceProviderApplication.class, args);
    }

}

service-consumer

依赖于 service-provider 中一致,还有添加的注解也是一样的。

只是配置有点不同,需要使用不同的端口,以及服务名称:

server:
  port: 8082 # 端口
spring:
  application:
    name: service-consumer # 服务名
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # nacos server 地址

启动测试

分别启动 service-provider 与 service-consumer,启动后即可在 Nacos 控制台的服务列表中看到:


说明整合Nacos成功。


服务调用 service-provider

在 service-provider 中添加一个测试接口 /hello:

...
@RestController
public class TestController {

    @GetMapping("hello")
    public String hello(@RequestParam String name){
        return "hello " + name;
    }
}

service-consumer

在 service-consumer 中进行调用,因为需要使用 RestTemplate,所以先配置一下:

...
@Configuration
public class ConsumerConfig {

    // 定义 RestTemplate Bean
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

下面开始调用:

...
@RestController
public class TestController {

    // 引入 RestTemplate 和 LoadBalancerClient
    @Autowired
    RestTemplate restTemplate;
    
    @Autowired
    LoadBalancerClient loadBalancerClient;

    @GetMapping("hello")
    public String hello(@RequestParam String name) {
    
        String result = "";

        // 根据服务名获取服务实例
        ServiceInstance serviceInstance = loadBalancerClient.choose("service-provider");

        // 发起调用,返回调用结果
        return restTemplate.getForObject(serviceInstance.getUri() + "/hello?name=" + name, String.class);
    }
}

启动测试

重启 service-provider、service-consumer,访问 service-consumer 的 /hello 接口,地址:

http://localhost:8082/hello?name=nacos

返回结果为 “hello nacos”,调用成功。


本文小结

本文简单使用Nacos和springboot整合来实现一个服务的注册和发现,创建了一个消费者和一个服务者。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/390034.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号