开发者学堂课程干货总结——Spring Cloud微服务架构设计与开发实战(十六)

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: Spring Cloud微服务架构设计与开发实战课时2.5—Java Spring Cloud微服务 Ribbon负载均衡算法 。Java Spring Cloud是全球范围内最成熟、最完善、最流行的微服务架构方案体系。被众多的互联网大公司采用,包括阿里巴巴、腾讯、支付宝、网易、IBM、谷歌、京东、百度、滴滴等。电子书+视频为同学带来最佳学习效果,文字、课程链接、图谱地址统统为大家放送了哦!

哈喽各位同学们大家好呀,今天是开发者学院中课程“Spring Cloud微服务架构设计与开发实战”的章节二的Java Spring Cloud微服务 Ribbon负载均衡算法 干货总结~是一起学习新课程吧!

课程链接以及图谱地址小编已经为大家指路了,搭配学习效果更佳👇

课程名称:Java Spring Cloud微服务 Ribbon负载均衡算法

课程地址:https://developer.aliyun.com/learning/course/60/detail/1088

图谱名称:Alibaba Java 技术图谱

图谱地址:https://developer.aliyun.com/graph/java


Java Spring Cloud微服务 Ribbon负载均衡算法


大家好,我们继续学习 Java Spring 微服务架构设计与实战系列课程。这节课给大家讲一下 Spring Cloud负载均衡算法,这里面有个很重要的技术Ribbon。也是麦飞公司贡献的微服架构体系里面很重要的一个技术组件。 

 

  1. Ribbon负载均衡与底层算法 

Spring Cloud负载均衡器Ribbon 

1. Spring Cloud客户端负载均衡器Ribbon 

2. RibbonNetflix 发布的开源项目 

3. Ribbon主要功能是提供客户端的软件负载均衡算法, 

4. RibbonNetflix的中间层服务连接在一起。 

5. Ribbon客户端组件提供许多配置如连接超时,重试等。 

6. 配置文件中列出后台所有的机器, 

7. Ribbon会自动(如简单轮询,随即连接等)去连接这些机器。 

8. Spring Cloud使用Ribbon实现 自定义的负载均衡算法。 

 

基本微服务架构是经过注册中心的一个交互,找到自己的服务,然后完成一个匹配服务的调用。实际生产环境下的话,像订单服务,评论服务,支付服务等会存在多台服务器的情况,实际数量的话是不定数量的,会出现浪费服务器的情况。或者在高频的场景下,订单服务可能有100台、1000台的情况,如果客户端不能把压力就能分散到后台的服务上的话,最大的问题就会出现在我们做后端服务的上,所以这里面的话会有一个集群和负载均衡的概念,负载均衡算法在大规模web集群中是非常常见的。   这个时候就需要RibbonRibbon是做微服务集群的一个负载均衡,来帮助我们客户端调用的时候,要体现出来这样一个叫均衡。 

Ribbon技术组件也支持几种主要的算法:随机、路由、权重、最小链接、IP地址增加路由策略等。Ribbon是在Netflix里是已经集成了,使用简单的轮巡策略,但不一定合理,在负载均衡大家稍微注意一下。官方也出了多个类似组件,可以在实习落地方案的时候多个选择。 

 

  1. Ribbon负载均衡算法 

Ribbon负载均衡算法 

1. 默认规则:轮训RoundRobin 

2. 简单轮询负载均衡(RoundRobin 

3. 随机负载均衡 Random)随机选择UPServer 

4. 加权响应时间负载均衡 WeightedResponseTime 

5. 区域感知轮询负载均衡(ZoneAware 

 

轮训是最常见的的一种算法,还有随机、权重也都是一种算法,区域感知是可用区域数据中心的可用性有关系。当跨这个数据中心或者多数据中心部署的时,就可以用上。根据客户端的 Ip地址,就近 DNS解析来录入到某个数据中心里面,是一种更优的跨多税中心地域的这样的一个负载均衡算法。一般的话用轮巡或者随机当然其实权重相对来说更合理一点。 

image.png 

这些算法可以直接配置,或者用代码配置,配置的话一般我们用代码可以直接去替换。 

 

  1. Ribbon负载均衡架构图 

image.png 

Ribbon负载均衡关键点 

1. 服务发现,发现依赖服务列表ServiceList 

2. 服务选择规则,多个服务中选择一个有效服务 

3. 服务监听,检测失效的服务,高效剔除失效服务 

4. Ribbon核心组件: 

Rule- 从服务列表中如何获取一个有效服务 

Ping- 后台运行线程用来判断服务是否可用 

ServerList- 服务列表 

案例: 

image.png 

引用Ribbon 

image.png 

Spring Cloud Ribbon负载均衡代码 

image.png 

@LoadBalanced 

image.png 

Feign默认轮训 

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
8天前
|
负载均衡 Java API
Spring Cloud 面试题及答案整理,最新面试题
Spring Cloud 面试题及答案整理,最新面试题
92 1
|
8天前
|
Java Nacos Sentinel
Spring Cloud Alibaba 面试题及答案整理,最新面试题
Spring Cloud Alibaba 面试题及答案整理,最新面试题
41 0
|
9天前
|
SpringCloudAlibaba Java 持续交付
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
【构建一套Spring Cloud项目的大概步骤】&【Springcloud Alibaba微服务分布式架构学习资料】
57 0
|
9天前
|
SpringCloudAlibaba Java 网络架构
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(七)Spring Cloud Gateway服务网关
56 0
|
1天前
|
XML 开发框架 Java
Spring轻量级开发框架(二)
Spring轻量级开发框架
26 0
|
6天前
|
运维 Linux Apache
LAMP架构调优(九)——Apache Rewrite功能实战
LAMP架构调优(九)——Apache Rewrite功能实战
8 1
|
9天前
|
SpringCloudAlibaba 负载均衡 Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(目录大纲)
33 1
|
9天前
|
Java Nacos Sentinel
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(九)Nacos+Sentinel+Seata
103 0
|
9天前
|
消息中间件 SpringCloudAlibaba Java
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(八)Config服务配置+bus消息总线+stream消息驱动+Sleuth链路追踪
79 0
|
9天前
|
SpringCloudAlibaba Java 测试技术
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
【Springcloud Alibaba微服务分布式架构 | Spring Cloud】之学习笔记(六)Hystrix(豪猪哥)的使用
21 1

相关产品

  • 微服务引擎
  • 服务网格