栏目分类:
子分类:
返回
文库吧用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
文库吧 > IT > 软件开发 > 后端开发 > Java

分布式负载均衡和熔断器

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

分布式负载均衡和熔断器

负载均衡

服务器为了提高并发性能、可用性一般会以集群方式部署。

负载均衡是将流量均匀的分配到每一台服务器上,从而实现集群作用的最大化。

负载均衡的分类:

服务器端实现:Nginx(软件)、F5(硬件)

 客户端实现:Ribbon基于注册中心实现,服务消费者调用服务提供者集群时,Ribbon通过注册中心拉取服务地址,通过特定的负载均衡策略实现服务调用。

 Ribbon的使用

1.引入Ribbon依赖,已经包含在Eureka-Client依赖中。

2.在配置类里面的RestTemplate加@LoadBalanced。


@Configuration
public class RestTemplateConfig {
    @LoadBalanced
    @Bean
    public RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

3.调用提供者时自动生效。

Ribbon负载均衡的策略

Ribbon的负载均衡策略,都实现com.netflix.loadbalancer.IRule接口。

配置方法:

全局:
ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.策略名称
局部:
服务名.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.策略名称类名
Hystrix的使用

Netflix提供的熔断器,能在服务出现长时间等待或崩溃的情况下提供一系列处理方法,解决服务雪崩的问题。

方法有:

熔断:当失败率达到一定的阈值,会触发熔断,进行快速失败。

降级:降级处理,返回兜底数据

缓存:对请求进行缓存、请求合并处理

实时监控、报警、控制等

使用步骤:

1.引入hystrix依赖

2.在启动类加 @EnableHystrix

3.在需要熔断降级的方法上添加注解 @HystrixCommand(fallbackMethod="降级方法名")

4.在同一个类中添加降级方法,返回兜底数据

@Service
public class ProductService {

    @Autowired
    private RestTemplate restTemplate;

    //熔断和降级
    @HystrixCommand(fallbackMethod = "getProductByIdFallback")
    public Product getProductById(Long id){
        //商品服务查询商品
        ResponseEntity entity =
                restTemplate.getForEntity("http://product-service/product/" + id, Product.class);
        return entity.getBody();
    }

    //降级方法
    public Product getProductByIdFallback(Long id){
        //兜底的商品对象
        return new Product(0L,"兜底商品",new BigDecimal("0"));
    }
}
Hystrix的资源隔离模式

Hystrix会为每个调用的方法(@HystrixCommand)分配一定的资源,资源之间相互隔离。

分为两种:

1.线程池隔离

2.信号量隔离

线程池隔离

服务消费者调用每个服务提供者时,都分配单独的线程池,进行远程的调用。

 线程池隔离的优缺点:

优点:1. 可以配置线程池的长度,从而对流量进行限流。
           2. 线程异步执行,并发效率高。

缺点:1.消耗系统资源较多。2.线程池的控制相对复杂。

信号量隔离

为每个调用方法设置信号量,当请求数超过信号量后就被丢弃。

信号量隔离的优缺点:

优点:1.占用资源少,2.控制简单。

缺点:功能相对简单。

配置:

线程池
hystrix.command.default.execution.isolation.strategy=THREAD
信号量
hystrix.command.default.execution.isolation.strategy=SEMAPHORE

 

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

版权所有 (c)2021-2022 wk8.com.cn

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