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

本文涉及的产品
注册配置 MSE Nacos/ZooKeeper,118元/月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
简介: 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默认轮训 

相关实践学习
小试牛刀,一键部署电商商城
SAE 仅需一键,极速部署一个微服务电商商城,体验 Serverless 带给您的全托管体验,一起来部署吧!
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
3月前
|
JSON Java API
利用Spring Cloud Gateway Predicate优化微服务路由策略
Spring Cloud Gateway 的路由配置中,`predicates`​(断言)用于定义哪些请求应该匹配特定的路由规则。 断言是Gateway在进行路由时,根据具体的请求信息如请求路径、请求方法、请求参数等进行匹配的规则。当一个请求的信息符合断言设置的条件时,Gateway就会将该请求路由到对应的服务上。
222 69
利用Spring Cloud Gateway Predicate优化微服务路由策略
|
14天前
|
设计模式 机器学习/深度学习 前端开发
Python 高级编程与实战:深入理解设计模式与软件架构
本文深入探讨了Python中的设计模式与软件架构,涵盖单例、工厂、观察者模式及MVC、微服务架构,并通过实战项目如插件系统和Web应用帮助读者掌握这些技术。文章提供了代码示例,便于理解和实践。最后推荐了进一步学习的资源,助力提升Python编程技能。
|
13天前
|
机器学习/深度学习 设计模式 API
Python 高级编程与实战:构建微服务架构
本文深入探讨了 Python 中的微服务架构,介绍了 Flask、FastAPI 和 Nameko 三个常用框架,并通过实战项目帮助读者掌握这些技术。每个框架都提供了构建微服务的示例代码,包括简单的 API 接口实现。通过学习本文,读者将能够使用 Python 构建高效、独立的微服务。
|
21天前
|
Android开发 开发者 Kotlin
Android实战经验之Kotlin中快速实现MVI架构
MVI架构通过单向数据流和不可变状态,提供了一种清晰、可预测的状态管理方式。在Kotlin中实现MVI架构,不仅提高了代码的可维护性和可测试性,还能更好地应对复杂的UI交互和状态管理。通过本文的介绍,希望开发者能够掌握MVI架构的核心思想,并在实际项目中灵活应用。
47 8
|
5天前
|
消息中间件 安全 NoSQL
布谷直播系统源码开发实战:从架构设计到性能优化
作为山东布谷科技的一名技术研发人员,我参与了多个直播系统平台从0到1的开发和搭建,也见证了直播行业从萌芽到爆发的全过程。今天,我想从研发角度,分享一些直播系统软件开发的经验和心得,希望能对大家有所帮助。
|
27天前
|
JavaScript 前端开发 Java
Jeesite5:Star24k,Spring Boot 3.3+Vue3实战开源项目,架构深度拆解!让企业级项目开发效率提升300%的秘密武器
Jeesite5 是一个基于 Spring Boot 3.3 和 Vue3 的企业级快速开发平台,集成了众多优秀开源项目,如 MyBatis Plus、Bootstrap、JQuery 等。它提供了模块化设计、权限管理、多数据库支持、代码生成器和国际化等功能,极大地提高了企业级项目的开发效率。Jeesite5 广泛应用于企业管理系统、电商平台、客户关系管理和知识管理等领域。通过其强大的功能和灵活性,Jeesite5 成为了企业级开发的首选框架之一。访问 [Gitee 页面](https://gitee.com/thinkgem/jeesite5) 获取更多信息。
Jeesite5:Star24k,Spring Boot 3.3+Vue3实战开源项目,架构深度拆解!让企业级项目开发效率提升300%的秘密武器
|
12天前
|
存储 监控 数据可视化
SaaS云计算技术的智慧工地源码,基于Java+Spring Cloud框架开发
智慧工地源码基于微服务+Java+Spring Cloud +UniApp +MySql架构,利用传感器、监控摄像头、AI、大数据等技术,实现施工现场的实时监测、数据分析与智能决策。平台涵盖人员、车辆、视频监控、施工质量、设备、环境和能耗管理七大维度,提供可视化管理、智能化报警、移动智能办公及分布计算存储等功能,全面提升工地的安全性、效率和质量。
|
2月前
|
XML Java 开发者
Spring底层架构核心概念解析
理解 Spring 框架的核心概念对于开发和维护 Spring 应用程序至关重要。IOC 和 AOP 是其两个关键特性,通过依赖注入和面向切面编程实现了高效的模块化和松耦合设计。Spring 容器管理着 Beans 的生命周期和配置,而核心模块为各种应用场景提供了丰富的功能支持。通过全面掌握这些核心概念,开发者可以更加高效地利用 Spring 框架开发企业级应用。
90 18
|
2月前
|
监控 Java 应用服务中间件
SpringBoot是如何简化Spring开发的,以及SpringBoot的特性以及源码分析
Spring Boot 通过简化配置、自动配置和嵌入式服务器等特性,大大简化了 Spring 应用的开发过程。它通过提供一系列 `starter` 依赖和开箱即用的默认配置,使开发者能够更专注于业务逻辑而非繁琐的配置。Spring Boot 的自动配置机制和强大的 Actuator 功能进一步提升了开发效率和应用的可维护性。通过对其源码的分析,可以更深入地理解其内部工作机制,从而更好地利用其特性进行开发。
61 6
|
2月前
|
Java 网络安全 开发工具
Git进阶笔记系列(01)Git核心架构原理 | 常用命令实战集合
通过本文,读者可以深入了解Git的核心概念和实际操作技巧,提升版本管理能力。