zoukankan      html  css  js  c++  java
  • spring cloud alibaba

    1.概况

      服务提供者9001和9002,他们是同一个服务,服务消费者83

    2.创建服务提供者

      9001和9002除了端口是一样的,这里只演示一个

    2.1项目结构

    2.2依赖

    nacos依赖

    <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>

    完整的

    <dependencies>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
    
            <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>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.62</version>
            </dependency>
        </dependencies>

    2.3配置文件

    server:
      port: 9001
    
    spring:
      application:
        name: nacos-payment-provider  #将会作为注册到注册中心的服务名称
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 #配置Nacos地址
    
    management:
      endpoints:
        web:
          exposure:
            include: '*'

    2.4主启动类

      注解使用的是@EnableDiscoveryClient

    package com.atguigu.springcloud;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    
    /**
     * @Classname PaymentMain9001
     * @Description TODO
     * @Date 2021/6/18 0018 下午 2:20
     * @Created by jcc
     */
    @SpringBootApplication
    @EnableDiscoveryClient
    public class PaymentMain9001 {
        public static void main(String[] args) {
            SpringApplication.run(PaymentMain9001.class,args);
        }
    }

    2.5业务类

    package com.atguigu.springcloud.controller;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RestController;
    
    /**
     * @Classname PaymentController
     * @Description TODO
     * @Date 2021/6/18 0018 下午 2:21
     * @Created by jcc
     */
    @RestController
    public class PaymentController {
        @Value("${server.port}")
        private String serverPort;
    
        @GetMapping(value = "/payment/nacos/{id}")
        public String getPayment(@PathVariable("id") Integer id)
        {
            return "nacos registry, serverPort: "+ serverPort+"	 id"+id;
        }
    }

    3.创建服务消费者

    3.1项目结构

     3.2依赖

    <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>

     完整

    <dependencies>
    
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            </dependency>
    
            <dependency>
                <groupId>com.atguigu.springcloud</groupId>
                <artifactId>cloud-api-commons</artifactId>
                <version>${project.version}</version>
            </dependency>
    
    
            <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>org.springframework.boot</groupId>
                <artifactId>spring-boot-devtools</artifactId>
                <scope>runtime</scope>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <optional>true</optional>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>1.2.62</version>
            </dependency>
        </dependencies>

    3.3配置文件

    server:
      port: 83
    
    spring:
      application:
        name: nacos-payment-consumer  #将会作为注册到注册中心的服务名称
      cloud:
        nacos:
          discovery:
            server-addr: localhost:8848 #配置Nacos地址
    
    service-url:
      nacos-user-service: http://nacos-payment-provider

    3.4主启动类

    package com.atguigu.springcloud.alibaba.controller;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    import javax.annotation.Resource;
    
    /**
     * @Classname OrderNacosController
     * @Description TODO
     * @Date 2021/6/18 0018 下午 2:58
     * @Created by jcc
     */
    
    @RestController
    @Slf4j
    public class OrderNacosController {
    
        @Resource
        private RestTemplate restTemplate;
    
        @Value("${service-url.nacos-user-service}")
        private String serverURL;
    
        @GetMapping(value = "/consumer/payment/nacos/{id}")
        public String paymentInfo(@PathVariable("id") Long id) {
    
            return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    
        }
    }

    3.5配置类和业务类

    nacos集成了Ribbon
    package com.atguigu.springcloud.alibaba.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;
    
    /**
     * @Classname ApplicationContextConfig
     * @Description TODO
     * @Date 2021/6/18 0018 下午 2:56
     * @Created by jcc
     */
    @Configuration
    public class ApplicationContextConfig {
    
        @Bean
        @LoadBalanced  //nacos集成了Ribbon,这里是开启ribbon负载均衡
        public RestTemplate getRestTemplate()
        {
            return new RestTemplate();
        }
    }
    package com.atguigu.springcloud.alibaba.controller;
    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.PathVariable;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    import javax.annotation.Resource;
    
    /**
     * @Classname OrderNacosController
     * @Description TODO
     * @Date 2021/6/18 0018 下午 2:58
     * @Created by jcc
     */
    
    @RestController
    @Slf4j
    public class OrderNacosController {
    
        @Resource
        private RestTemplate restTemplate;
    
        @Value("${service-url.nacos-user-service}")
        private String serverURL;
    
        @GetMapping(value = "/consumer/payment/nacos/{id}")
        public String paymentInfo(@PathVariable("id") Long id) {
    
            return restTemplate.getForObject(serverURL+"/payment/nacos/"+id,String.class);
    
        }
    }

    4.启动三个服务

      启动后,查看nacos管理页面,可以看到三个服务

      

       此时,访问服务消费者83,连续访问

      http://localhost:83/consumer/payment/nacos/13

      

     

      连续访问,发现 9001和9002轮询提供服务,因为Ribbon默认的策略是轮询

      关于ribbon的介绍:https://www.cnblogs.com/jthr/p/14694632.html

  • 相关阅读:
    2019春总结作业
    第二周作业
    第三周作业
    2019春第三次课程设计实验报告
    2019春第二次课程设计实验报告
    2019春第一次课程设计实验报告
    第十二周作业
    第十一周作业
    第十周作业
    第九周作业
  • 原文地址:https://www.cnblogs.com/jthr/p/14913443.html
Copyright © 2011-2022 走看看