fegin负载均衡策略示例

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    <version>2.2.3.RELEASE</version>
</dependency>

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
    <version>2.2.3.RELEASE</version>
</dependency>
@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
public class ExampleApplication {
    public static void main(String[] args) {
        SpringApplication.run(ExampleApplication.class, args);
    }
}

yam配置

spring.application.name=example-consumer

# 配置 Eureka 地址
eureka.client.service-url.defaultZone=http://localhost:8761/eureka

# 配置 Feign 负载均衡策略
# 可选的策略包括:随机(Random)、轮询(RoundRobin)和最小活跃数(LeastActive)
example.feign.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RoundRobinRule

代码实现

@FeignClient(name = "example-provider", fallback = ExampleFeignFallback.class)
public interface ExampleFeignClient {
    
    @GetMapping("/provider")
    String provider();
}

@Component
public class ExampleFeignFallback implements ExampleFeignClient {
    
    @Override
    public String provider() {
        return "fallback";
    }
}

当服务调用失败时,会使用 fallback 类中的方法返回默认值

Feign 是一个基于 HTTP 的 RESTful 服务客户端,它的负载均衡主要通过 Ribbon 来实现。
Ribbon 是 Netflix 开源的一个负载均衡组件,主要用于处理服务消费者和服务提供者之间的负载均衡。Ribbon 支持多种负载均衡策略,常用的负载均衡策略包括:

随机策略(RandomRule)
随机选择一个可用的服务实例进行访问。

轮询策略(RoundRobinRule)
按顺序选择一个可用的服务实例进行访问,如果选择的服务实例出现故障,则跳过该实例并继续选择下一个实例。

最少连接策略(WeightedResponseTimeRule)
在轮询的基础上,加入每个服务实例的权重,根据权重计算出实例的响应时间,响应时间越短的实例被选中的概率越大,从而优化了负载均衡的效果。

一致性Hash策略(ConsistentHashRule)
根据请求的哈希值来选择服务实例。这种策略保证同一个请求的地址一定会被路由到同一个服务实例上,适用于一些有状态的服务场景。

Ribbon 的原理实际上很简单,主要是通过向服务注册中心(如 Eureka)获取可用的服务实例列表,然后基于配置的负载均衡策略选择一个服务实例进行访问。Ribbon 还提供了多种配置项,可以优化负载均衡的效果。

总之,Ribbon 的负载均衡策略实现简单、易于扩展,并且能够提高服务的可用性和可靠性,是服务调用中常用的负载均衡组件之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值