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

概要

  1. 什么是Spring Cloud Netflix Ribbon?

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

Spring Cloud Netflix Ribbon是什么?

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

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

  1. 负载均衡分为两种:

服务器端负载均衡

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

  1. 客户端负载均衡

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

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

  1. 和Eureka完美整合

  2. 支持多种协议-HTTP,TCP,UDP

  3. caching/batching

  4. 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地址

关键字:java, ribbon, 负载, 均衡


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部