栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

Ribbon负载均衡

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Ribbon负载均衡

目录

1、简介

1.1、功能:

1.2、LB(Load Balance)负载均衡:

1.3、集中式与进程式

2、Ribbon负载均衡演示

2.1、架构说明

2.1.1、Ribbon工作步骤

2.1.2、Ribbon架构

2.2、POM文件导入依赖

2.2.1、netflix-eureka-clientserver 自动引入 Ribbon 依赖

2.2.2、手动导入ribbon依赖

2.3、RestTemplate

2.3.1、GET请求方法

2.3.2、POST请求方法

2.4、Ribbon核心组件IRule

2.4.1、IRule默认自带的负载均衡规则

2.4.2、配置IRule负载均衡规则


1、简介

负载均衡+RestTemplate调用

1.1、功能:

      Ribbon主要功能是提供客户端的软件负载均衡算法和服务调用。

      即,在配置文件中列出Load Balancer 的所有机器,Ribbon会自动的基于某种规则(如简单轮询,随机连接等)去连接这些机器

1.2、LB(Load Balance)负载均衡:

        将用户的请求平摊分配至多个服务上,从而达到系统的HA(高可用)。

1.3、集中式与进程式

集中式:在服务消费方和提供方间使用独立的LB设施(如Nginx),负责把访问请求转发至提供方

进程式:将LB逻辑集成到消费方,消费方从服务注册中心获知有哪些地址可用,然后从中选择

Nginx:服务器负载均衡,客户端所有请求都会交给Nginx,然后由Nginx实现转发请求。即负载均衡是由服务端实现 (集中式LB)

Ribbon:本地负载均衡,在调用微服务接口时,会在注册中心上获取注册信息服务列表之后缓存到JVM本地,从而在本地实现RPC远程服务调用技术。(进程内LB)

2、Ribbon负载均衡演示

2.1、架构说明

2.1.1、Ribbon工作步骤

        1)先选择 Eureka Server,其优先选择在同一个区域内负载较少的server。

        2)在根据用户指定的策略,从server取到的服务注册列表中选择一个地址。

        Ribbon提供了多种策略,如轮询、随机和根据响应时间加权

2.1.2、Ribbon架构

2.2、POM文件导入依赖

2.2.1、netflix-eureka-clientserver 自动引入 Ribbon 依赖

    org.springframework.cloud
    spring-cloud-starter-netflix-eureka-client

        client: 

         server:

2.2.2、手动导入ribbon依赖

    org.springframework.cloud
    spring-cloud-starter-netflix-ribbon

2.3、RestTemplate

2.3.1、GET请求方法

1)getForObject:返回对象为响应体中数据转化成的对象,可以理解为Json

2)getForEntity:返回对象为ResponseEntity对象,包含了响应中的一些重要信息,如响应头、状态码、响应体等

2.3.2、POST请求方法
    @GetMapping("/consumer/payment/create")
    public CommonResult create(Payment payment) {
//        return restTemplate.postForObject(PAYMENT_URL + "/payment/create", payment, CommonResult.class);
        return restTemplate.postForEntity(PAYMENT_URL + "/payment/create", payment, CommonResult.class).getBody();
    }

2.4、Ribbon核心组件IRule

2.4.1、IRule默认自带的负载均衡规则

1)轮询:com.netflix.loadbalancer.RoundRobinRule

2)随机:com.netflix.loadbalancer.RandomRule

3)先按照RoundRobinRule的策略获取服务,如果获取服务失败则在指定时间内会进行重试:com.netflix.loadbalancer.RetryRule

4)响应速度越快的实例选择权重越大,越容易被选择:WeightedResponseTimeRule

5)会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务:BestAvailableRule

6)先过滤掉故障实例,再选择并发较小的实例:AvailabilityFilteringRule

7)默认规则,复合判断server所在区域的性能和server的可用性选择服务器:ZoneAvoidanceRule

2.4.2、配置IRule负载均衡规则

注意项:

        自定义配置类,不能放在 @ComponentScan 所扫描的当前包下以及子包下,否则自定义的配置类会被所有的 Ribbon 客户端所共享,达不到特殊化定制的目的

1)新建package (将配置类放在不扫描的包下)

2)新建包下,创建 MySelfRule 规则类

@Configuration
public class MySelfRule {
    @Bean
    public IRule myRule() {
        return new RandomRule();    //定义为随机方法
    }
}

3)主启动类添加@RibbonClient

@EnableEurekaClient
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@RibbonClient(name = "cloud-order-service", configuration = MySelfRule.class)
public class OrderMain80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderMain80.class, args);
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/881700.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号