• [Alibaba微服务技术入门]_服务的消费_第3讲


    这讲内容我们会演示基于nacos的服务消费方去访问服务的提供方,同时还会加入负载均衡的方式去访问

    服务提供方

    • 1-nacos-provider9001
    • 2-nacos-provider9002

    分别将这两个服务器实例启动,我们查看nacos实例发现会有两个服务实列

     

    服务消费方

    1、创建 3-nacos-consumer8001,项目的依赖 spring-cloud-starter-alibaba-nacos-discovery

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <parent>
            <artifactId>alibaba</artifactId>
            <groupId>com.liuyangjava</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <groupId>com.liuyangjava</groupId>
        <artifactId>3-nacos-consumer8001</artifactId>
    
        <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
        </dependencies>
    
    </project>

    2、创建 application.yml

    server:
      port: 8001
    
    spring:
      cloud:
        nacos:
          discovery:
            server-addr: 127.0.0.1:8848
      application:
        name: nacos-consumer
    
    management:
      endpoints:
        web:
          exposure:
            include: '*'
    
    service-url:
      nacos-provider: http://nacos-provider
    • service-url.nacos-provider:通过配置文件,设置服务提供者的地址,等待消费者接口调用
    • spring.application.name:设置消费者的应用程序的名称

    3、创建NacosConsumer8001主启动类

    package com.liuyangjava;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    @SpringBootApplication
    @EnableDiscoveryClient
    public class NacosConsumer8001 {
        public static void main(String[] args) {
            SpringApplication.run(NacosConsumer8001.class, args);
        }
    }

     4、创建配置类,主要完成消费方的负载均衡的访问配置

    • @Configuration:从Spring3.0,@Configuration用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法,这些方法将会被AnnotationConfigApplicationContext或AnnotationConfigWebApplicationContext类进行扫描,并用于构建bean定义,初始化Spring容器
    • @Bean:它是一个方法级别上的注解,主要用在@Configuration注解的类里,也可以用在@Component注解的类里。添加的bean的id为方法名
    • @LoadBalanced:在使用 RestTemplate 的时候,如果 RestTemplate 上面有这个注解,那么这个 RestTemplate 调用的远程地址,会走负载均衡器
    package com.liuyangjava.config;
    
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.client.RestTemplate;
    
    @Configuration
    public class ApplicationContextConfig {
    
        @Bean
        @LoadBalanced
        public RestTemplate getRestTemplate() {
            return new RestTemplate();
        }
    }

     5、创建 NacosConsumerController,通过此负载均衡方式去调用服务提供者接口

    package com.liuyangjava.controller;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    import javax.annotation.Resource;
    
    @RestController
    public class NacosConsumerController {
    
        @Value("${service-url.nacos-provider}")
        private String serverUrl;
    
        @Resource
        private RestTemplate restTemplate;
    
        @GetMapping("/nacos/consumer")
        public String getInfo() {
            return restTemplate.getForObject(serverUrl + "/nacos/provider", String.class);
        }
    
    }
  • 相关阅读:
    weblogic12c 2021.4.20 季度补丁 SPB
    一顿debug猛如虎,原来内存OOM
    JDK记录一下
    213. 打家劫舍 II-动态规划-中等
    5526. 最多可达成的换楼请求数目-回溯-困难
    1584. 连接所有点的最小费用-图/最小生成树-中等
    Java-泛型的限制
    Java-泛型-桥方法
    889. 根据前序和后序遍历构造二叉树-树-中等
    1109. 航班预订统计-差分数组-中等
  • 原文地址:https://www.cnblogs.com/liuyangjava/p/15411060.html
Copyright © 2020-2023  润新知