Spring Cloud实战(三)-Spring Cloud Netflix Ribbon

概要

  • 什么是Spring Cloud Netflix Ribbon?

  • 实战:整合Ribbon实现负载均衡

Spring Cloud Netflix Ribbon是什么?

Spring Cloud Netflix Ribbon 是一个客户端负载均衡的组件.

什么是负载均衡?
负载均衡就是分发请求流量到不同的服务器,目前的实现有软件(ngnix,apache,HA Proxy)和硬件(F5,NSX,BigIP).

  • 负载均衡分为两种:

    • 服务器端负载均衡
      服务器端负载均衡示意图

    如上图所示.服务器端负载均衡是对客户透明的,用户请求到LB服务器,真正的Application服务器是由LB服务器分发控制的.

    • 客户端负载均衡
      图片描述

    如图所示,它是客户端软件的一部分,客户端获知到可用的服务器列表按一定的均衡策略,分发请求.

Ribbon的特点
Ribbon就是这样一种客户端负载均衡的实现.

  • 和Eureka完美整合

  • 支持多种协议-HTTP,TCP,UDP

  • caching/batching

  • built in failure resiliency

实战:整合Ribbon实现负载均衡

目标:基于之前的例子,在sentence app中添加Ribbon负载均衡,启动两个noun app,使用不同的words数据,以验证Ribbon的效果.具体步骤如下:

  1. sentence服务添加依赖 spring-cloud-starter-ribbon (pom.xml)

  2. 替换DiscoveryClient为LoadBalancerClient及其使用的方法(getWord)

    public String getWord(String service) {
        ServiceInstance instance = loadBalancer.choose(service);
           return (new RestTemplate()).getForObject(instance.getUri(),String.class);
    }
  1. 查看http://localhost:8020/sentence,看其是否能正常启动

  2. 停掉量词服务,为了Eureka可以区分两个相同host的相同服务,在bootstramp.yml中添加实例号.

       # Allow Eureka to recognize two apps of the same type on the same host as separate instances:
       eureka:
         instance:
           instanceId: ${spring.cloud.client.hostname}:${spring.application.name}:${spring.application.instance_id:${random.value}}

5.先启动一个noun服务,再把noun服务中的words换为英文

    String words = “picture,movie,building,aninmal”;

6.查看http://localhost:8010,看其造句是否会一次中文一次英文(默认ribbon是轮训算法)
7.停掉其中一个noun服务,看其是否会一次成功一次失败

特别感谢 kennyk65
Spring Cloud 中文用户组 31777218
Spring-Cloud-Config 官方文档-中文译本 (本人有参与,哈哈)
Spring Cloud Netflix 官网文档-中文译本
本文实例github地址

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值