• 五、springcloud之客户端负载均衡Ribbon


    一、简介

      在微服务架构中,业务都会被拆分成一个独立的服务,服务与服务的通讯是基于http restful的。Spring cloud有两种服务调用方式:

        一种是ribbon+restTemplate

        另一种是feign

      ribbon是一个负载均衡客户端,可以很好的控制htt和tcp的一些行为。Feign默认集成了ribbon

      ribbon核心组件有三个

      • Rule - 从服务列表中如何获取一个有效服务
      • Ping - 后台运行线程用来判断服务是否可用
      • ServerList - 服务列表

    二、准备

      1.服务注册中心

      2.服务提供方:多个service

    三、使用Ribbon实现客户端负载均衡的消费者

      1.pom.xml

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>1.3.5.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-ribbon</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-eureka</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-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>Brixton.RELEASE</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        </dependencies>
    </dependencyManagement>
    View Code

      2.@EnableDiscoveryClient注解来添加发现服务能力

      3.通过@LoadBalanced注解表明这个restRemplate开启负载均衡的功能。

       RestTemplate 构建RestTemplate对应的bean,在method上使用注解@LoadBalanced表示restTemplate使用LoadBalancerClient执行请求

    @Configuration
    public class RibbonConfig {
        /**
         * LoadBalanced 注解表明restTemplate使用LoadBalancerClient执行请求
         */
        @Bean
        @LoadBalanced
        public RestTemplate restTemplate() {
            RestTemplate template = new RestTemplate();
            SimpleClientHttpRequestFactory factory = (SimpleClientHttpRequestFactory) template.getRequestFactory();
            factory.setConnectTimeout(3000);
            factory.setReadTimeout(3000);
            return template;
        }
    }

      4.controller直接注入resttemplate,调用服务,即可

    注:如果使用了feign,Feign默认集成了ribbon,无须任何配置,调用服务,请求会自动轮询到每个服务端来处理。

  • 相关阅读:
    STM32F407Discovery开发板使用环境搭建
    NIO初识
    Mac下Boost环境搭建
    Android Studio增加NDK代码编译支持--Mac环境
    LNMP平台搭建---PHP安装篇
    LNMP平台搭建---MySQL安装篇
    支付系统流程
    从html字符串中获取div内容---jquery
    记一次进入新公司快速融入开发团队经历
    DataTable复制自身行
  • 原文地址:https://www.cnblogs.com/soul-wonder/p/9214144.html
Copyright © 2020-2023  润新知