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

* 个人博客空间 : https://zggdczfr.cn/ *

Ribbon

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

Ribbon的特点

  • 和Eureka完美整合

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

  • 缓存/批处理

  • built in failure resiliency

具体请查看官方文档 : https://github.com/Netflix/ribbon/wiki

整合Ribbon实现客户端的负载均衡

前期准备

这里用到了上次的两个demo(服务注册中心和服务提供者)。
首先,添加服务提供者的服务,这里我将其端口号打印出来能够更加直观地观察到负载均衡的实现:

@RestController
public class PrintfController { @Value("${server.port}")
private String port; @RequestMapping("/service")
public String printf(){
System.out.println("服务消费者正在使用服务,端口号为 : "+port);
return "success";
}
}

接下来分别启动这两个工程,注意将服务提供者的端口号(原来为1111改为1112)修改后再启动一次.就整个项目而言,总共有三个微服务再运行着(一个注册中心,两个服务提供者)。PS:其实服务提供者你想弄多少都行。

创建服务消费者

像一个普通的 spring cloud 工程一样,创建后向注册中心注册自己的信息。
添加依赖:

        <dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>

添加消费调用接口:
这里涉及到一个类LoadBalancerClient,这个就是由 Netflix Ribbon 提供的工具类。他会根据 ServiceId (配置文件中的Service Name)向 Eureka (注册服务器)获取服务地址。

@RestController
public class ConsumerController { @Autowired
private LoadBalancerClient client; @RequestMapping("/test")
public String test(){
ServiceInstance instance = client.choose("service");
URI uri = instance.getUri();
System.out.println(uri);
return (new RestTemplate()).getForObject(uri+"/service",String.class);
}
}

配置文件信息:

# eureka client 配置
spring.application.name=ribbon-consumer
server.port=2222
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

注意:LoadBalancerClient返回的是已经注册的服务器地址。

启动服务消费者

启动工程后,我们可以看到如下注册信息:

Ribbon 实现负载均衡

多次访问 http://localhost:2222/test ,并查看控制台信息:

这样子,就实现了客户端的负载均衡了~

spring cloud学习(三)使用Ribbon实现客户端负载均衡的更多相关文章

  1. Spring Cloud(十四):Ribbon实现客户端负载均衡及其实现原理介绍

    年后到现在一直很忙,都没什么时间记录东西了,其实之前工作中积累了很多知识点,一直都堆在备忘录里,只是因为近几个月经历了一些事情,没有太多的经历来写了,但是一些重要的东西,我还是希望能坚持记录下来.正好 ...

  2. 一起来学Spring Cloud | 第三章:服务消费者 (负载均衡Ribbon)

    一.负载均衡的简介: 负载均衡是高可用架构的一个关键组件,主要用来提高性能和可用性,通过负载均衡将流量分发到多个服务器,多服务器能够消除单个服务器的故障,减轻单个服务器的访问压力. 1.服务端负载均衡 ...

  3. SpringCloud开发学习总结(四)—— 客户端负载均衡Ribbon

    通过上一章<SpringCloud开发学习总结(三)—— 服务治理Eureka>,我们已经搭建起微服务架构中的核心组件——服务注册中心(包括单点模式和高可用模式).同时还注册了一个服务,命 ...

  4. Ribbon实现客户端负载均衡

    什么是Ribbon? 客户端负载均衡组件. 前期准备: 搭建一个Eureka集群和一个注册服务 https://www.cnblogs.com/noneplus/p/11374883.html 创建服 ...

  5. 服务注册发现Eureka之三:Spring Cloud Ribbon实现客户端负载均衡(客户端负载均衡Ribbon之三:使用Ribbon实现客户端的均衡负载)

    在使用RestTemplate来消费spring boot的Restful服务示例中,我们提到,调用spring boot服务的时候,需要将服务的URL写死或者是写在配置文件中,但这两种方式,无论哪一 ...

  6. spring cloud学习笔记二 ribbon负载均衡

    Ribbon是Netflix发布的负载均衡器,它有助于控制HTTP和TCP的客户端的行为.为Ribbon配置服务提供者地址后,Ribbon就可基于某种负载均衡算法,自动地帮助服务消费者去请求.Ribb ...

  7. Spring Cloud入门教程-Ribbon实现客户端负载均衡

    简介 我们继续以之前博客的代码为基础,增加Ribbon组件来提供客户端负载均衡.负载均衡是实现高并发.高性能.可伸缩服务的重要组成部分,它可以把请求分散到一个集群中不同的服务器中,以减轻每个服务器的负 ...

  8. Spring Cloud Ribbon实现客户端负载均衡

    1.构建microservice-consumer-movie-ribbon项目,在pom.xml中引入ribbon依赖 在引入Eureka依赖的时候,默认里面含有ribbon依赖 2.添加@Load ...

  9. spring boot 2.0.3+spring cloud (Finchley)2、搭建负载均衡Ribbon (Eureka+Ribbon+RestTemplate)

    Ribbon是Netflix公司开源的一个负载均衡组件,将负载均衡逻辑封装在客户端中,运行在客户端的进程里. 本例子是在搭建好eureka的基础上进行的,可参考spring boot 2.0.3+sp ...

随机推荐

  1. VIM 使用心得

    序 到百度外卖任职以后,发现在我们部门无论 mac 还是 windows,程序员们清一色地都在使用 VIM 来编辑代码,期间穿插着各种插件.快捷键.眼花缭乱的命令.我在大学时只会极少的 VIM 命令, ...

  2. idata,xdata,pdata,code

    data       --->   可寻址片内ram bdata     --->  可位寻址的片内ram idata      --->   可寻址片内ram,允许访问全部内部ra ...

  3. 我在linux中使用的vundle 和 vimrc配置

    set nocompatible filetype off set rtp+=~/.vim/bundle/vundle/ call vundle#rc() Plugin 'gmarik/vundle' ...

  4. POJ 1222 EXTENDED LIGHTS OUT(高斯消元)题解

    题意:5*6的格子,你翻一个地方,那么这个地方和上下左右的格子都会翻面,要求把所有为1的格子翻成0,输出一个5*6的矩阵,把要翻的赋值1,不翻的0,每个格子只翻1次 思路:poj 1222 高斯消元详 ...

  5. shell:遍历目录和子目录的所有文件及匹配文件内容到日志

    过滤文件内网 #!/bin/bash function getdir(){ ` do dir_or_file=$"/"$element if [ -d $dir_or_file ] ...

  6. Oracle SQL Developer 中配置JDBC驱动程序连接

    此博客仅作为自己备忘,没有丝毫技术含量.把Postgres的JDBC驱动程序放在Oracle SQL Developer的JDBC的文件夹下,然后安装Oracle SQL Developer,添加新连 ...

  7. axis2框架用wsdl文件生成的服务端MessageReceiveInOut文件注意事项

    在用axis2生成服务端文件和客户端文件,当客户端文件调用服务端文件时,都是通过wsdl文件生成的 配置文件进行相互的调用. 在一开始做开发测试的时候,通过soapUI进行调用接口的时候,可以调用成功 ...

  8. C# WinCE项目 VS2008 单例窗体实现

    项目现有主界面FormMain,模板界面FormModel,其余5个子界面皆继承自模板. 现在想要实现在主界面下可以打开任意子界面,并且可以随时关闭.当打开的子窗体未执行Close事件时,要保证每次显 ...

  9. POJ 3162 Walking Race(树形dp+单调队列 or 线段树)

    http://poj.org/problem?id=3162 题意:一棵n个节点的树.有一个屌丝爱跑步,跑n天,第i天从第i个节点开始跑步,每次跑到距第i个节点最远的那个节点(产生了n个距离),现在要 ...

  10. UVa 1602 网格动物(回溯)

    https://vjudge.net/problem/UVA-1602 题意:计算n连通块不同形态的个数. 思路: 实在是不知道该怎么做好,感觉判重实在是太麻烦了. 判重就是判断所有格子位置是否都相同 ...