Spring Cloud教程 | 第六篇:负载均衡策略配置及总结 | Feign | Ribbon
发布日期:2021-09-18 00:51:41 浏览次数:11 分类:技术文章

本文共 2003 字,大约阅读时间需要 6 分钟。

Spring Cloud教程 | 第六篇:负载均衡策略配置及总结 | Feign | Ribbon

一、前言

第五篇中已介绍,feign其实不是做负载均衡的,负载均衡是ribbon的功能,feign只是集成了ribbon而已,换句话说负载均衡的功能是feign内置的ribbon在实现的。因此配置负载均衡策略即为对ribbon进行配置。

目前公司的生产系统负载均衡、高可用等均使用集群管理平台Kubernetes(K8S)实现。本部门人员此部分了解即可,不指导生产使用

 

Spring Cloud版本     Spring Boot版本     JAVA     IDE
Greenwich.SR1     2.1.6.RELEASE     1.8     IDEA

为模拟实际开发,本篇教程除alh-tms外,所有的参数均从远程配置中心读取,若是不用远程配置中心,请在本地应用直接写各项参数即可。

涉及项目:

alh-config-server(6001): 保持启动状态

alh-eureka-server(6000):保持启动状态

alh-tms(8001):保持上一篇中两个实例启动状态

alh-order(8002)

完整教程全部章节目录:https://blog.csdn.net/tuoyun6647/article/details/93501029

二、Feign中Ribbon配置

Ribbon负载均衡策略有以下几种:

策略类 名称 说明
RandomRule 随机策略 随机选择 Server
RoundRobinRule 轮训策略 按顺序循环选择 Server
RetryRule 重试策略 在一个配置时问段内当选择 Server 不成功,则一直尝试选择一个可用的 Server
BestAvailableRule 最低并发策略 逐个考察 Server,如果 Server 断路器打开,则忽略,再选择其中并发连接最低的 Server
AvailabilityFilteringRule 可用过滤策略 过滤掉一直连接失败并被标记为 circuit tripped 的 Server,过滤掉那些高并发连接的 Server(active connections 超过配置的网值)
ResponseTimeWeightedRule 响应时间加权策略 根据 Server 的响应时间分配权重。响应时间越长,权重越低,被选择到的概率就越低;响应时间越短,权重越高,被选择到的概率就越高。这个策略很贴切,综合了各种因素,如:网络、磁盘、IO等,这些因素直接影响着响应时间
ZoneAvoidanceRule 区域权衡策略 综合判断 Server 所在区域的性能和 Server 的可用性轮询选择 Server,并且判定一个 AWS Zone 的运行性能是否可用,剔除不可用的 Zone 中的所有 Server

调用者(即服务消费者)alh-order配置文件application.properties如下

eureka.client.service-url.defaultZone=${default-zone}         server.port=${server.port}    spring.application.name=alh-order

    #其中“alh-tms”指明对哪个微服务的调用进行配置,当前配置使用随机策略,修改策略修改最后的类名即可
 

alh-tms.ribbon.NFLoadBalancerRuleClassName=com.netflix.loadbalancer.RandomRule         # 设置连接超时时间,单位ms    ribbon.ConnectTimeout=5000    # 设置读取超时时间,单位ms    ribbon.ReadTimeout=5000    # 对所有操作请求都进行重试    ribbon.OkToRetryOnAllOperations=true    # 切换实例的重试次数    ribbon.MaxAutoRetriesNextServer=2    # 对当前实例的重试次数    ribbon.MaxAutoRetries=1

启动后调用上一篇中的http://localhost:8002/tms/csinfo,发现调用alh-tms已变成随机调用

三、总结

个人在实现时,发现负载均衡策略配置需指定调用的服务,如果一个服务中需要调用很多其他服务,则每个服务都需要进行配置,配置较繁琐,且不方便统一管理(如有不对的地方请指正)。就生产而言,部署建议使用集群管理平台进行部署,高可用,负载均衡等均在集群管理平台统一配置

原文链接:https://blog.csdn.net/tuoyun6647/article/details/93667643

转载地址:https://blog.csdn.net/yucaifu1989/article/details/105020279 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:Spring Cloud Feign 负载均衡策略配置
下一篇:SpringCloud(五)SpringCloud的限流、降级和熔断——Hystrix

发表评论

最新留言

路过按个爪印,很不错,赞一个!
[***.219.124.196]2024年04月20日 10时41分06秒