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

简介: 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默认轮训 

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
10月前
|
算法 Java 微服务
【SpringCloud(1)】初识微服务架构:创建一个简单的微服务;java与Spring与微服务;初入RestTemplate
微服务架构是What?? 微服务架构是一种架构模式,它提出将单一应用程序划分为一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。 每个服务允许在其独立的进程中,服务于服务间采用轻量级的通信机制互相协作(通常是Http协议的RESTful API或RPC协议)。 每个服务都围绕着具体业务进行构建,并且能够被独立的部署到生产环境、类生产环境等。另外应当尽量避免统一的、集中式的服务管理机制,对具体的一个服务而言,应根据上下文,选择合适的语言、工具对其进行构建
746 126
|
10月前
|
负载均衡 算法 Java
【SpringCloud(2)】微服务注册中心:Eureka、Zookeeper;CAP分析;服务注册与服务发现;单机/集群部署Eureka;连接注册中心
1. 什么是服务治理? SpringCloud封装了Netfix开发的Eureka模块来实现服务治理 在传统pc的远程调用框架中,管理每个服务与服务之间依赖关系比较复杂,管理比较复杂,所以需要使用服务治理,管理服务于服务之间依赖关系,可以实现服务调用、负载均衡、容错等,实现服务发现与注册
498 0
|
12月前
|
人工智能 监控 前端开发
支付宝 AI 出行助手高效研发指南:4 人团队的架构迁移与提效实战
支付宝「AI 出行助手」是一款集成公交、地铁、火车票、机票、打车等多项功能的智能出行产品。
1659 21
支付宝 AI 出行助手高效研发指南:4 人团队的架构迁移与提效实战
|
10月前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
8402 123
|
12月前
|
消息中间件 Java 数据库
Java 基于 DDD 分层架构实战从基础到精通最新实操全流程指南
本文详解基于Java的领域驱动设计(DDD)分层架构实战,结合Spring Boot 3.x、Spring Data JPA 3.x等最新技术栈,通过电商订单系统案例展示如何构建清晰、可维护的微服务架构。内容涵盖项目结构设计、各层实现细节及关键技术点,助力开发者掌握DDD在复杂业务系统中的应用。
2010 0
|
10月前
|
安全 前端开发 Java
《深入理解Spring》:现代Java开发的核心框架
Spring自2003年诞生以来,已成为Java企业级开发的基石,凭借IoC、AOP、声明式编程等核心特性,极大简化了开发复杂度。本系列将深入解析Spring框架核心原理及Spring Boot、Cloud、Security等生态组件,助力开发者构建高效、可扩展的应用体系。(238字)
|
10月前
|
Cloud Native Serverless API
微服务架构实战指南:从单体应用到云原生的蜕变之路
🌟蒋星熠Jaxonic,代码为舟的星际旅人。深耕微服务架构,擅以DDD拆分服务、构建高可用通信与治理体系。分享从单体到云原生的实战经验,探索技术演进的无限可能。
微服务架构实战指南:从单体应用到云原生的蜕变之路
|
10月前
|
监控 Cloud Native Java
Spring Boot 3.x 微服务架构实战指南
🌟蒋星熠Jaxonic,技术宇宙中的星际旅人。深耕Spring Boot 3.x与微服务架构,探索云原生、性能优化与高可用系统设计。以代码为笔,在二进制星河中谱写极客诗篇。关注我,共赴技术星辰大海!(238字)
1430 2
Spring Boot 3.x 微服务架构实战指南
|
11月前
|
消息中间件 数据采集 NoSQL
秒级行情推送系统实战:从触发、采集到入库的端到端架构
本文设计了一套秒级实时行情推送系统,涵盖触发、采集、缓冲、入库与推送五层架构,结合动态代理IP、Kafka/Redis缓冲及WebSocket推送,实现金融数据低延迟、高并发处理,适用于股票、数字货币等实时行情场景。
1641 3
秒级行情推送系统实战:从触发、采集到入库的端到端架构
|
10月前
|
负载均衡 Java API
《深入理解Spring》Spring Cloud 构建分布式系统的微服务全家桶
Spring Cloud为微服务架构提供一站式解决方案,涵盖服务注册、配置管理、负载均衡、熔断限流等核心功能,助力开发者构建高可用、易扩展的分布式系统,并持续向云原生演进。