【java、微服务、eureka】Robbon负载均衡

负载均衡流程

1.发起请求

  1. 获取url的服务id

3.拉取服务

4.返回服务列表,如localhost:8081、loclahost:8082

  1. 服务负载均衡

  2. 选择某个服务

  3. 修改url,发起请求

8.轮询到8081

策略

修改方法

方法一:

在application。java文件中添加方法

@Bean

public IRule randomRule(){

return new RandomRule();

}

例如:

java 复制代码
package cn.itcast.order;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RandomRule;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@MapperScan("cn.itcast.order.mapper")
@SpringBootApplication
public class OrderApplication {

    public static void main(String[] args) {
        SpringApplication.run(OrderApplication.class, args);
    }

    /**
     * Spring Boot中使用RestTemplate,我们通常需要注入它。我们可以通过使用@Bean注解来实现。
     */
    @Bean
    @LoadBalanced
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    @Bean
    public IRule randomRule(){
        return new RandomRule();
    }
}

方法二

在xml文件中添加

java 复制代码
userservice:
  ribbon:
    NFLoadBalancerRuLeCLassName: com.netflix.Loadbalancer.RandomRule

轮询(RoundRobinRule)

简单轮询服务列表来选择服务器。它是Ribbon默认的负载均衡规则。

随机(RandomRule)

随机选择一个可用的服务器。

AvailabilityFilteringRule

对以下两种服务器进行忽略:

(1)在默认情况下,这台服务器如果3次连接失败,这台服务器就会被设置为"短路"状态。短路状态将持续30秒,如果再次连接失败,短路的持续时间就会几何级地增加。

(2)并发数过高的服务器。如果一个服务器的并发连接数过高,配置了AvailabilityFilteringRule规则的客户端也会将其忽略。并发连接数的上限,可以由客户端的

<clientName>.<clientConfigNameSpace>.Active ConnectionsLimit.

WeightedResponseTimeRule

为每一个服务器赋予一个权重值。服务器响应时间越长,这个服务器的权重就越小。这个规则会随机选择服务器,这个权重值会影响服务器的选择。

ZoneAvoidanceRule

以区域可用的服务器为基础进行服务器的选择。使用Zone对服务器进行分类,这个Zone可以理解为一个机房、一个机架等。而后再对Zone内的多个服务做轮询。

BestAvailableRule

忽略哪些短路的服务器,并选择并发数较低的服务器。

RetryRule

重试机制的选择逻辑

饥饿加载

饥饿加载则会在项目启动时创建,降低第一次访问的耗时,通过下面配置开启饥饿加载:

java 复制代码
ribbon:
  eager-load:
    clients: userservice
    enabled: true
相关推荐
胡耀超几秒前
0.设计模式总览——设计模式入门系列
java·开发语言·设计模式
程序员iteng4 分钟前
Java是怎么处理死锁的
java·开发语言
脚步的影子1 小时前
.net core8 使用JWT鉴权(附当前源码)
java·开发语言·.netcore
游向大厂的咸鱼1 小时前
【Java EE】线程安全问题的原因与解决方案
java·安全·java-ee
Chase-Hart1 小时前
【每日一题】LeetCode 2374.边积分最高节点(图、哈希表)
java·数据结构·算法·leetcode·散列表
油丶酸萝卜别吃1 小时前
前后端数据加密与解密
java·javascript
coder what1 小时前
SSM+vue音乐播放器管理系统
java·vue·ssm·音乐播放器管理系统
胡耀超1 小时前
4.结构型设计模式 - 第1回:引言与适配器模式 (Adapter Pattern) ——设计模式入门系列
java·设计模式·适配器模式
刷帅耍帅1 小时前
java设计模式-适配器模式
java·设计模式·适配器模式
北方的尘中客2 小时前
类与对象
java