当前位置:主页 > 查看内容

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

发布时间:2021-07-21 00:00| 位朋友查看

简介:哈喽各位同学们大家好呀 今天是开发者学院中课程“Spring Cloud微服务架构设计与开发实战”的章节二的“Java Spring Cloud微服务 Ribbon负载均衡算法?”干货总结~是一起学习新课程吧 课程链接以及图谱地址小编已经为大家指路了 搭配学习效果更佳 课程名称 Ja……

哈喽各位同学们大家好呀 今天是开发者学院中课程“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。也是麦飞公司贡献的微服架构体系里面很重要的一个技术组件。?

?

Ribbon负载均衡与底层算法?

Spring Cloud负载均衡器Ribbon?

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

2. Ribbon是Netflix?发布的开源项目?

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

4. Ribbon将Netflix的中间层服务连接在一起。?

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

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

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

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

?

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

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

?

Ribbon负载均衡算法?

Ribbon负载均衡算法?

1.?默认规则 轮训RoundRobin?

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

3.?随机负载均衡? Random 随机选择UP的Server?

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

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

?

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

image.png?

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

?

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默认轮训?


本文转自网络,原文链接:https://developer.aliyun.com/article/785561
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐