zoukankan      html  css  js  c++  java
  • springcloud Ribbon学习笔记二

    之前介绍了如何搭建eureka服务并开发了一个用户服务成功注册到了eureka中,接下来介绍如何通过ribbon来从eureka中获取用户服务;

    springcloud ribbon提供客户端的负载均衡算法,首先会从eureka中获取服务列表然后通过负载均衡的算法去调用指定的服务;接下来将开发一个登录的微服务通过整合ribbon来调用用户服务

    关键代码如下:

    pom.xml:

    <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
    
            <!-- 导入Eureka服务的依赖 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-eureka-server</artifactId>
            </dependency>
    
            <dependency>
                <groupId>com.squareup.okhttp3</groupId>
                <artifactId>okhttp</artifactId>
                <version>3.9.0</version>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-hystrix</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-feign</artifactId>
            </dependency>
    
            <!--<dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-ribbon</artifactId>
            </dependency>
    
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>-->
        </dependencies>
        <!-- 导入Spring Cloud的依赖管理 -->
        <dependencyManagement>
    
            <dependencies>
                <dependency>
                    <groupId>org.springframework.cloud</groupId>
                    <artifactId>spring-cloud-dependencies</artifactId>
                    <version>Edgware.SR4</version>
                    <type>pom</type>
                    <scope>import</scope>
                </dependency>
            </dependencies>
    
        </dependencyManagement>

     application.properties:

    server.port=8080
    #应用名称
    spring.application.name=loginServer
    
    # 是否需要将自己注册到注册中心中,默认值true
    eureka.client.registerWithEureka=false
    
    # 是否从注册中心中获取注册信息,默认值true
    eureka.client.fetchRegistry=true
    
    # 客户端和服务端进行交互的地址
    eureka.client.serviceUrl.defaultZone= http://127.0.0.1:7070/eureka/, http://127.0.0.1:7071/eureka/
    
    #将自己的ip地址注册到Eureka服务中
    eureka.instance.prefer-ip-address=true

    启动类:

    package com.darling.login;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    import org.springframework.cloud.netflix.feign.EnableFeignClients;
    import org.springframework.cloud.netflix.hystrix.EnableHystrix;
    import org.springframework.context.annotation.Bean;
    import org.springframework.http.client.OkHttp3ClientHttpRequestFactory;
    import org.springframework.web.client.RestTemplate;
    //@EnableFeignClients
    //@EnableHystrix
    @EnableDiscoveryClient
    @SpringBootApplication
    public class LoginApplication {
    
        @Bean
        @LoadBalanced  // 表示使用负载均衡算法
        public RestTemplate getRestTemplate(){
            return new RestTemplate(new OkHttp3ClientHttpRequestFactory());
        }
    
        public static void main(String[] args) {
            SpringApplication.run(LoginApplication.class, args);
        }
    }

    下面列举下上述代码的关键:

      1、pom中引入okhttp的依赖,当然也可以引入别的Http-client的依赖

      2、application中eureka.client.fetchRegistry=true表示从eureka中获取注册信息;eureka.client.serviceUrl.defaultZone的值填入我们之前开发好的两个eureka服务的地址

      3、启动类加@EnableDiscoveryClient注解表示自己是eureka的客户端

      4、最关键的,启动类中记得配置restTemplate,当然也可以通过@Configuration注解重新开发一个类进行配置

    上面的都实现了基本算是成功整合了ribbon了,下面看看如何进行调用,贴上调用用户服务的关键代码:

      @Autowired
        private RestTemplate restTemplate;
    
        public User checkUser(String name,String pwd){
            String serviceId = "USERSERVER"; // 关键,通过服务名调用而不是ip,因为我们有两个eureka服务
            User user = restTemplate.getForObject("http://"+serviceId+"/user/"+name,User.class);
            if(user != null) {
                if(pwd.equals(user.getPwd())) {
                    return user;
                }
            }
            return null;
        }

    至此,springcloud的eureka、ribbon的入门级demo算是学习完毕了,希望日后工作中能够用到!

  • 相关阅读:
    014-CallbackServlet代码
    PaymentServlet代码
    013-PaymentUtils工具类模板
    案例30-在线支付
    案例29-购物车提交订单
    案例28-清空购物车
    案例27-购物车删除单一商品
    案例26-购物车
    案例25-servlet的抽取
    在Eclipse或工作空间中 ,复制或修改项目后,把项目部署后发现还是原来的项目名称
  • 原文地址:https://www.cnblogs.com/darling2047/p/9528020.html
Copyright © 2011-2022 走看看