Ribbon--负载均衡、IRule、自定义Ribbon

Ribbon负载均衡

在这里插入图片描述

Ribbon在工作时分成两步:

  • 第一步先选择EurekaServer,它优先选择在同一个区域内负载较少的server。
  • 第二部再根据用户指定的策略,在从server取到的服务注册列表中选择一个地址。

其中Ribbon提供了多种策略:比如轮询,随机和根据相应时间加权。

参考microservicecloud-provider-dept-8001,新建两份,分别命名为8002,8003

新建8002/8003数据库,各自微服务分别连各自的数据库

修改8002/8003各自YML:

server:
port: 8002
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml  #mybatis所在路径
type-aliases-package: com.atguigu.springcloud.entities #entity别名类
mapper-locations:
  - classpath:mybatis/mapper/**/*.xml #mapper映射文件
spring:
application:
name: microservicecloud-dept 
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.gjt.mm.mysql.Driver
url: jdbc:mysql://localhost:3306/cloudDB02
username: root
password: 123456
dbcp2:
min-idle: 5
initial-size: 5
max-total: 5
max-wait-millis: 200
eureka:
client: #客户端注册进eureka服务列表内
service-url: 
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: microservicecloud-dept8002   #自定义服务名称信息
prefer-ip-address: true #访问路径可以显示IP地址
info:
app.name: atguigu-microservicecloud
company.name: www.atguigu.com
build.artifactId: $project.artifactId$
build.version: $project.version$
server:
port: 8003
mybatis:
config-location: classpath:mybatis/mybatis.cfg.xml  #mybatis所在路径
type-aliases-package: com.atguigu.springcloud.entities #entity别名类
mapper-locations:
  - classpath:mybatis/mapper/**/*.xml #mapper映射文件
spring:
application:
name: microservicecloud-dept 
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: org.gjt.mm.mysql.Driver
url: jdbc:mysql://localhost:3306/cloudDB03
username: root
password: 123456
dbcp2:
min-idle: 5
initial-size: 5
max-total: 5
max-wait-millis: 200
eureka:
client: #客户端注册进eureka服务列表内
service-url: 
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
instance:
instance-id: microservicecloud-dept8003   #自定义服务名称信息
prefer-ip-address: true #访问路径可以显示IP地址
info:
app.name: atguigu-microservicecloud
company.name: www.atguigu.com
build.artifactId: $project.artifactId$
build.version: $project.version$

启动3个eureka集群配置

启动3个Dept微服务

启动microservicecloud-consumer-dept-80

客户端通过Ribbo完成负载均衡并访问上一步的Dept微服务

访问:http://localhost/consumer/dept/list

第一次:
在这里插入图片描述

第二次:
在这里插入图片描述

第三次:
在这里插入图片描述

默认采用轮询策略。

Ribbon核心组件IRule

IRule:根据特定算法中从服务列表中选取一个要访问的服务

  • RoundRobinRule :轮询
  • RandomRule :随机
  • AvailabilityFilteringRule :会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,还有并发的连接数量超过阈值的服务,然后对剩余的服务列表按照轮询策略进行访问
  • WeightedResponseTimeRule :根据平均响应时间计算所有服务的权重,响应时间越快服务权重越大被选中的概率越高。刚启动时如果统计信息不足,则使用RoundRobinRule策略,等统计信息足够,会切换到WeightedResponseTimeRule
  • RetryRule :先按照RoundRobinRule的策略获取服务,如果获取服务失败则在指定时间内会进行重试,获取可用的服务
  • BestAvailableRule :会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务,然后选择一个并发量最小的服务
  • ZoneAvoidanceRule :默认规则,复合判断server所在区域的性能和server的可用性选择服务器

自定义Ribbon

修改microservicecloud-consumer-dept-80:

主启动类添加@RibbonClient:

在启动该微服务的时候就能去加载我么您的自定义Ribbon配置类,从而使配置生效,

@RibbonClient(name="MICROSERVICECLOUD-DEPT", configuration=MySelfRule.class)

在这里插入图片描述

iRules是基于F5 TMOS操作系统的开放脚本语言,为F5设备提供灵活强大的定制功能,基于TCL语法的iRules可以方便的加入到F5设备内部,处理通过F5设备的网络流量,控制各种协议和应用数据。每个iRules必须包含事件、命令和逻辑三部分才可以有效运行,通过这三个部分的灵活组合和排序可以定制IP层面以上的数据流量处理功能,提高和增强F5设备的灵活性和功能性。同时,高效的使用iRules定制某些应用功能,可以大大降低应用系统的研发成本,简化研发复杂程度,提高应用系统性能,减少计划内外当机时间。 在开始使用iRules之前,需要了解F5设备的基本功能及配置;同时,根据要实现的不同功能,需要对该功能涉及的相关知识有所了解,比如TCP协议、UDP协议、DNS原理、SSL证书原理、HTTP协议、安全攻击及防护、Cache、XML等。 那什么时候需要用到iRules语言呢?F5设备支持绝大多数应用交付的标准功能,可以满足绝大部分IT系统对这方面的功能及部署要求,但某些应用系统对数据控制有着更加精细的定制要求,或者对标准协议的功能支持有更高的要求,这些时候需要使用iRules来增强F5设备的功能,实现这些功能要求。比如,F5的LTM设备支持基于源地址、COOKIE、目的地址、SSL ID等模式的会话保持方式,可以满足大多数应用交付系统对会话保持的要求。但大多数JAVA开发人员希望使用中间件的SESSION ID作为会话保持的依据,这样可以更加方便和准确的控制应用数据的后台走向,这时候,使用iRules编写一段简单的代码并输入到F5设备中,即可高效的实现这一功能,满足应用程序的功能需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值