• springcloud(5) nacos服务注册和发现


    一。Nacos下载

    Nacos依赖于Java环境,所以必须安装Java环境。然后从官网下载Nacos的解压包,安装稳定版的,下载地址:https://github.com/alibaba/nacos/releases

    下载完成后,解压,在解压后的文件的/bin目录下,windows系统点击startup.cmd就可以启动nacos。nacos的端口是8848

    启动成功,在浏览器上访问:http://localhost:8848/nacos,会跳转到登陆界面,默认的登陆用户名为nacos,密码也为nacos。

    登陆成功后,展示的界面如下:

    WX20190511-112054@2x.png

    从界面可知,此时没有服务注册到Nacos上。

    二。Nacos服务注册和发现

    1. nacos-provider 服务提供者

    pom.xml添加依赖,Spring boot版本为2.1.4.RELEASE,Spring Cloud 版本为Greenwich.RELEASE

    <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>0.9.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>

    application.yml 中配置 Nacos server 的地址

    server:
      port: 8762
    spring:
      application:
        name: nacos-provider
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848

     通过 Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能:

    @SpringBootApplication
    @EnableDiscoveryClient
    public class NacosProviderApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(NacosProviderApplication.class, args);
        }
    
        @RestController
        class EchoController {
            @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
            public String echo(@PathVariable String string) {
                return "Hello Nacos Discovery " + string;
            }
        }
    
    }

    2.nacos-consumer 服务消费端

    pom.xml和nacos-provider一样

    <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
                <version>0.9.0.RELEASE</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
           <!--  使用Feign-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-openfeign</artifactId>
            </dependency>

    application.yml

    server:
      port: 8763
    spring:
      application:
        name: nacos-consumer
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848

    通过 Spring Cloud 原生注解 @EnableDiscoveryClient 开启服务注册发现功能。调用服务两种方式:

    (1)给 RestTemplate 实例添加 @LoadBalanced 注解,开启 @LoadBalanced 与 Ribbon 的集成

    (2)使用@EnableFeignClients //启用feign进行远程调用

    @SpringBootApplication
    @EnableDiscoveryClient
    @EnableFeignClients  //启用feign进行远程调用
    public class NacosConsumerApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(NacosConsumerApplication.class, args);
        }
    
        @LoadBalanced
        @Bean
        public RestTemplate restTemplate(){
            return new RestTemplate();
        }
    
        @RestController
        public class TestController{
            @Autowired
            private RestTemplate restTemplate;
            @Autowired
            private ProviderClient providerClient;
    
            /**
             * RestTemplate方式调用接口
             * @param str
             * @return
             */
            @RequestMapping(value = "/echo/{str}", method = RequestMethod.GET)
            public String echo(@PathVariable String str){
                return restTemplate.getForObject("http://nacos-provider/echo/"+ str, String.class);
            }
    
           /**
             * Feign方式调用接口,providerClient为接口
             * @param str
             * @return
             */
            @RequestMapping(value = "/echo-feign/{str}", method = RequestMethod.GET)
            public String echoFeign(@PathVariable String str){
                return providerClient.echo(str);
            }
    
        }
    
    }

    写一个FeignClient,调用nacos-provider的服务

    @FeignClient("nacos-provider")
    public interface ProviderClient {
        @RequestMapping(value = "/echo/{string}", method = RequestMethod.GET)
        public String echo(@PathVariable String string);
    }

    启动服务后,nacos中注册了这两个服务

     访问http:8763/echo-feign/2222 就能看到页面显示

    参考:https://www.fangzhipeng.com/springcloud/2019/05/30/sc-nacos-discovery.html

                 https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html

  • 相关阅读:
    别让安全问题拖慢了 DevOps!
    精华阅读第 9 期 |滴滴出行 iOS 客户端架构演进之路
    微信小程序组件化开发框架WePY
    Web前端鼠标悬停实现显示与隐藏效果
    Web前端社交账号注册按钮
    微信小游戏2
    微信小游戏
    (2)
    Angular实战项目(1)
    一步HTML5教程学会体系
  • 原文地址:https://www.cnblogs.com/t96fxi/p/13771917.html
Copyright © 2020-2023  润新知