客户端实现负载均衡:springCloud Ribbon的使用

客户端实现负载均衡:springCloud Ribbon的使用

    Netfilx发布的负载均衡器,是一个基于http、tcp的客户端负载均衡工具,具有控制http、tcp客户端的行为,为ribbon配置服务提供者的地址后,ribbon就

可以经过springCloud的封装实现客户端负载均衡的服务调用。

 

服务端负载均衡

负载均衡主要是实现对系统的高可用、网络压力的缓解、处理能力的伸缩。对于数据流量过大,往往单一设备是无法承担的,需要多台的设计进行分流。

1.软负载均衡

  在一台机器上安装附加的某种软件,如nginx负载均衡,配置简单、成本低。根据部署的应用于系统的状态来分配资源进行负载、负载的能力不过受限于机器本身,性能越好,负载能力越大。

2.硬负载均衡

  通过服务器和外部网络间安装负载均衡的设备,称为"负载均衡器",硬件的负载均衡在功能想、性能上往往高于软负载均衡,不过价格昂贵,例:F5负载均衡器。能够通过智能交换机来实现负载,负载的能力与系统、应用无关,主要是通过网络层来判断,比如某时候系统处理能力已经不行了,但是可以通过网络来进行分配,成本高,除设备价格高昂,而且配置冗余.很难想象后面服务器做一个集群,但最关键的负载均衡设备却是单点配置;无法有效掌握服务器及应用状态。

 

使用springcloud ribbon实现与eureka的配合

 ribbon可从eureka服务注册表中获取服务提供者的地址列表,使用一定的负载均衡算法,Ribbon的工作主要分为2步。

1.先选择eureka service ,优先选择一个zone负载较小的service。

2.根据用户制定策,从service取得eureka 服务注册表中选择一个地址。

提供的策略:轮询Round Robin、随机Random、ResponseTime加权

复制代码
/*  使用属性自定义功能区客户端
    从版本1.2.0开始,Spring Cloud Netflix现在支持使用属性与Ribbon文档兼容来自定义功能区客户端。

    这允许您在不同环境中更改启动时的行为。

    支持的属性如下所示,应以<clientName>.ribbon.:

    NFLoadBalancerClassName:应该实施 ILoadBalancer

    NFLoadBalancerRuleClassName:应该实施 IRule

    NFLoadBalancerPingClassName:应该实施 IPing

    NIWSServerListClassName:应该实施 ServerList

    NIWSServerListFilterClassName 应实施 ServerListFilter
    在这些属性中定义的类优先于使用@RibbonClient(configuration=MyRibbonConfig.class)Spring 定义的bean 以及由Spring Cloud Netflix提供的默认值。
    描述:配置文件中定义ribbon优先代码定义
    */
复制代码

 

在微服务架构中使用客户端负载均衡使用。

1.服务提供者启动多个服务 注册到服务注册中心同一个实例。

2.服务消费者通过使用注解的方式修饰RestTemplate实现向服务的接口进行调用。

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

猜你喜欢

转载自blog.csdn.net/belalds/article/details/80481757