【微服务架构】SpringCloud之Ribbon

一:Ribbon是什么?

Ribbon是Netfix发布的开源项目,主要负责客户端的软件负载均衡算法,将Netfix的中间层连接在一起,Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等。简单的说。就是在配置文件中列出Load Balancer(简称LB)后面所有的机器,Ribbon会自动的帮助你基于某种规则(如简单轮询,随即连接等)去连接这些机器、我们也很容易使用Riben实现自定义负载均衡算法;

二:LB方案分类

目前主流的LB方案可以分成两类,一类是集中式LB,即在服务的消费方和提供方之间使用独立的LB设施(可以是硬件,如F5,也可以是软件,如Nginx)由该设施负责,把访问请求通过某种策略转发至服务器的提供方。另一种是进程类的LB,将LB逻辑集成到消费方。消费方从服务器注册中心获取哪些地址是有用的,然后从这些地址中选择出一个合适的服务器。Ribbn就是后者,它只是一个类库,消费者通过它来获取到服务器提供方地址。

三:Ribbon的主要组件与工作流程

Ribbon的核心组件(均为接口类型)有以下几个:

ServerList 用于获取地址列表,它既可以是静态的(提供一组固定的地址)也可以是动态的(从注册中心定期查询地址列表)

ServerListFilter 仅当使用ServerList时使用。用于原始的服务列表中使用一定策略过滤到一部分地址。

IRule 选择一个最终的服务地址作为LB结果,选择策略有轮询,根据响应时间加权。短路器,等,

Ribbon在工作时首选会通过ServerList来获取所有可用的服务列表,然后通过ServerListFilte过滤掉一部分地址,最后在剩下的地址中通过IRule选择出一台服务器作为最终的结果。

四:Ribbon提供的主要负载均衡策略介绍

1.简单的轮询负载均衡。

以轮询的方式依次将请求调度不同的服务器,即每次调度执行i = (i + 1) mod n,并选出第i台服务器。

2:随机负载均衡 (Random)

随机选择状态为UP的Server

3加权负载均衡

根据相应时间分配一个Weight,响应时间越长,weight越小,被选中的可能性越低。

4,区域感知轮询的负载均衡(ZoneAvoidanceRule)

复合判断server所在区域的性能和server的可用性选择server

Ribbon自带负载均衡策略比较

五:Ribbon单独使用

建一个服务消费者

重新建立一个springboot工程,取名为:service-ribbon;

它的pom.xml 文件如下:

原文地址:https://www.cnblogs.com/jacksonxiao/p/8379750.html

时间: 2024-08-29 22:58:45

【微服务架构】SpringCloud之Ribbon的相关文章

微服务架构 SpringCloud(一)组件和概念介绍

一:什么是微服务(Microservice) 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯.它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩. 微服务架构需要的功能或使用场景 1:我们把整个系统根据业务拆分成几个子系统. 2:每个子系统可以部署多个应用,多个应用之间使用负载均衡. 3:需要一个服务注册中心,所有的服务都在注册中心注册

微服务架构之旅——《走进SpringCloud》

近十年国内互联网行业飞速发展,我们对软件系统的需求已经不再是过去"能用就行"这种很low的档次了,像618.双十一这样的活动 不断逼迫我们去突破软件系统的性能上限,传统的IT企业"能用就行"的开发思想已经不能满足互联网 高并发.大流量的性能要求 .系统架构 走向分布式 已经是服务器开发领域解决该问题唯一的出路,然而分布式系统由于天生的复杂度,并不像开发单体应用一样把框架一堆就能搞定,因此各大互联网公司都在投入技术力量研发自己的基础设施.这里面比较有名的如 阿里的开源

构建SpringBoot,SpringCloud微服务架构分布式电商项目实战

Spring Cloud 微服务总体架构图 上面图中技术名词理解: 1.Sleuth-链路跟踪 为服务之间调用提供链路追踪.通过Sleuth可以很清楚的了解到一个服务请求经过了哪些服务,每个服务处理花费了多长.从而让我们可以很方便的理清各微服务间的调用关系. 2.断路器(Hystrix) 在微服务架构中,根据业务来拆分成一个个的服务,服务与服务之间可以相互调用(RPC),在Spring Cloud可以用RestTemplate+Ribbon和Feign来调用.为了保证其高可用,单个服务通常会集群

springCloud进阶(微服务架构&Eureka)

springCloud进阶(微服务架构&Eureka) 1. 微服务集群 1.1 为什么要集群 为了提供并发量,有时同一个服务提供者可以部署多个(商品服务).这个客户端在调用时要根据一定的负责均衡策略完成负载调用. 1.2 服务提供者集群-同一种服务(服务名)部署多个 实际生产就是同一种服务多部署几台服务器,开发时就是用端口来区分. 1) 拷贝一份8001 2) 修改主类-改名 3) 改8002yml,端口 4) 服务提供者 1.3 服务消费者负载均衡调用 1)常见的负载均衡技术 Ribbon

【微服务架构】SpringCloud组件和概念介绍(一)

一:什么是微服务(Microservice) 微服务英文名称Microservice,Microservice架构模式就是将整个Web应用组织为一系列小的Web服务.这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯.它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩. 微服务架构需要的功能或使用场景 1:我们把整个系统根据业务拆分成几个子系统. 2:每个子系统可以部署多个应用,多个应用之间使用负载均衡. 3:需要一个服务注册中心,所有的服务都在注册中心注册

springcloud微服务实战:Eureka+Zuul+Ribbon+Hystrix+SpringConfig

原文地址:http://blog.csdn.net/yp090416/article/details/78017552 springcloud微服务实战:Eureka+Zuul+Ribbon+Hystrix+SpringConfig 相信现在已经有很多小伙伴已经或者准备使用springcloud微服务了,接下来为大家搭建一个微服务框架,后期可以自己进行扩展.会提供一个小案例: 服务提供者和服务消费者 ,消费者会调用提供者的服务,新建的项目都是用springboot,附源码下载. coding仓库

SpringCloud微服务架构第三篇

原文链接:https://www.javazhiyin.com/5130.html 微服务开发专栏:https://www.javazhiyin.com/category/springcloud Ribbon是什么? Ribbon是基于Netflix Ribbon实现的一套客户端 负载均衡的工具. 简单的说,Ribbon是Netflix发布的开源项目,主要功能是提供客户端的软件负载均衡算法,将Netflix的中间层服务连接在一起.Ribbon客户端组件提供一系列完善的配置项如连接超时,重试等.

spring-boot+spring-cloud+maven-module 一个 maven多模块的微服务架构模版

spring-boot-cloud-module spring-boot+spring-cloud+maven-module 一个 maven多模块的微服务架构模版. 新手上路的绝佳模版,只有必要的配置文件和核心jar包,没有多余的其他增量配置,所有的配置和注解都有做解释的注解描述,方便新手一眼就懂,下载后基本上可以直接基于demo开发自己的项目 1,按照业务划分多maven模块: 2,spring-boot脚手架快速生成项目加上个jar包的作用描述: 3,spring-boot+spring-

Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析

Java生鲜电商平台-SpringCloud微服务架构中网络请求性能优化与源码解析 说明:Java生鲜电商平台中,由于服务进行了拆分,很多的业务服务导致了请求的网络延迟与性能消耗,对应的这些问题,我们应该如何进行网络请求的优化与处理呢? 到底有没有一些好的建议与方案呢? 下面这个文章将揭晓上面的问题,让你对SpringCloud微服务网络请求性能有一个全新的认识. 目录简介 01.网络请求异常分类 02.开发中注意问题 03.原始的处理方式 04.如何减少代码耦合性 05.异常统一处理步骤 06

基于SpringCloud 微服务架构下 广告系统设计与实现完整教程

var link="www.marenzy.top"//完整视频资源获取地址,复制链接在浏览器打开 var vx="aishangit666"//如链接失效可添加微信 基于Spring Cloud微服务架构 广告系统设计与实现 广告系统是互联网公司中的必备知识体系,但是关于怎样设计.实现广告系统的资料.课程却非常稀少 .本课程将从零开始逐步实现广告系统中最为核心的两个模块:广告投放系统与广告检索系统,并测试它们的可用性,让你在实战中学习广告系统的设计思想,实现方法,