Springcloud + nacos + gateway 负载均衡(ribbon)

作者&投稿:乐逄 (若有异议请与网页底部的电邮联系)
~ Ribbon是客户端负载均衡工具,它基于Netflix Ribbon实现。通过Spring Cloud的封装,可以让我们轻松地将面向服务的REST模版请求自动转换成客户端负载均衡的服务调用

负载均衡,英文名称为Load Balance,其含义就是指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,从而协同完成工作任务。 负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性

本文主要测试,在Springcloud + nacos + gateway基础上,如何实现负载平衡

前面我们已经整合了Springcloud + nacos + gateway,实现了,当启动3个provider时候,通过gateway,可以对该3个provider进行轮询

1 nocas负载均衡。
   a nocas本身已集成了ribbon,默认使用轮询的方式
   b 在nocas设置weight,实现权重的方式
   c 自定rule(IRule实现类)
   d 顺提,在权重的方式下,可使用先设置权重为0,再关闭单一服务的方式,优雅地下线服务

2 使用ribbon直连ip
   a 使用ribbon提供的自动策略,轮询,随机等
   b 健康检查
   v 自定义rule

关掉其中一个provider,立即通过gateway进行轮询,发现gateway仍然会call已经down掉的provider,导致查询失败。但在大约5秒后,轮询恢复正常,不再call已经prodiver.
gateway call provider首先经nacos注册中心,nacos心跳机制默认每5秒钟检查一次provider是否正常,因此就会出现上面现象。

1 在启动类,将配置类 将IRule 的实现类注册到spring容器中即可
2 分别测试轮询和随机,可正常按规则负载

1 增加gatewayriboonip模块
2 pom添加依赖spring-cloud-starter-gateway和spring-cloud-starter-netflix-ribbon
3 修改application.yml,设置负载均衡
4 启动,测试可正常进行轮询
5 修改application.yml 如下,可测试到从轮询方式变成了随机的方式
   NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule

这个时候down掉一个provider,然后轮询,到这个provider时候,会一直查询失败。我们需要增加一个健康检查处理,在服务down掉的时候,可感知到并将该服务从服务列表去除,在服务上线后,可检查到服务已上线
1 增加健康检查
   provider模块增加rest接口HealthController
   增加config类,产生RestTemplate
   增加健康检查类HealthExamination implements IPing。继承IPing接口,判断服务是否可用。我们在微服务中增加heath接口,在gateway中调用该接口,如果返回正常则认为微服务可用。
    修改application.yml 增加Ping如下
          NFLoadBalancerPingClassName: com.roy.springnacos.gatewayribbonip.loadBalance.HealthExamination
2 重启provider和gateway,进行测试
   a 轮询成功
   b down掉其中一个provider,轮询到该provider时候,查询失败
    这里测试未能成功,使用RoundRobinRule还是一直出现查询失败,未能自动skip掉down掉的provider
   但是自定义LoadBalancerRule的话,是能够成功skip掉down掉的provide的

1 增加MyRule extends AbstractLoadBalancerRule
2 重启后,测试成功按规则查询


32、Spring Cloud 服务跟踪总结
上两篇讲解了zipkin,这篇总结一下。其实Spring Cloud实施分布式跟踪解决方案所用的技术不仅仅是zipkin。在spring官网:http:\/\/spring.io\/projects\/spring-cloud-sleuth 有这么一段话:翻译过来:Spring Cloud Sleuth是Spring Cloud实施分布式跟踪解决方案,大量借用Dapper,Zipkin和HTrace。 对于大多数用户来...

SpringCloud微服务开发如何协同
1、SpringCloud开发,本地启动多个微服务系统开销大 2、同事A启动User服务,同事B也在本地启动User服务。那么两个服务都注册到Nacos上,前端同事调试访问A的User服务,很容易出现访问到同事B启动的User服务(导致开发混乱,无法debug到自己的服务),还要考虑到如果有同事在本地debug服务,也会影响到别的...

...面试官?阿里架构师教你吃透Spring(Boot、Cloud、MVC)
一个框架的源码也是最大的知识库,源码是一层一层嵌套的,光靠文字说明会比较难以理解,最好是在IDE环境下跟着一步一步跟着点下去。如果要学习源码,最合适的就是Spring,理由如下:面试常问Spring、Spring Boot、Spring Cloud、Spring MVC面试题解析 针对Spring、Spring Boot、Spring Cloud、Spring MVC...

dubbo和eureka的区别
1、初始定位不同:SpringCloud定位为微服务架构下的一站式解决方案;Dubbo 是 SOA 时代的产物,它的关注点主要在于服务的调用和治理。2、生态环境不同:SpringCloud依托于Spring平台,具备更加完善的生态体系;而Dubbo一开始只是做RPC远程调用,生态相对匮乏,现在逐渐丰富起来。3、调用方式:SpringCloud是...

Spring boot 与 Spring cloud 是什么关系
风格的微服务架构,但是这还不够啊,还要上云,所以有了spring cloud,spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单的开发方式。

Alibaba Nacos在Spring Cloud中的配置加载顺序超详细分析结果
一、本分析基于以下应用版本:1、JDK:OpenJDK 11 2、SpringBoot:2.3.0.RELEASE 3、SpringCloud:Hoxton.SR4 4、Nacos:2.2.1.RELEASE 二、bootstrap.properties 配置信息如下:环境参数 dev,sit,prod spring.profiles.active=dev spring.application.name=demo-core spring.cloud.nacos.config.server...

springboot和springcloud哪个先学
springboot。是springcloud的基础,先学习springboot后学习springCloud,pringBoot框架和SpringCloud框架比较,市场上使用Spring底层的基本是使用SpringBoot或者SpringCloud,他们均集成了spring。

微服务之架构技术选型与设计
本文主要介绍了架构技术选型与设计-微服务选型,Spring cloud 实现采用的技术,希望对您的学习有所帮助。架构技术选型与设计-DUBBODubbo,是阿里巴巴服务化治理的核心框架,并被广泛应用于阿里巴巴集团的各成员站点(阿里巴巴现在使用架构为HSF)。 于2012-10-24最后版本2.5.3成为最后一版本,由当当接手维护,...

有了sprint cloud的zuul,还有用nginx的必要么
但是需要各种脚本语言来支持,比如lua脚本等,但是zuul来说的话开发成本就低很多,懂spring就够了。这块还会设计到一些分布式原子化问题,我都是一个坑一个坑踩过来的,有什么问题可以继续探讨,建议还是多了解一下spring cloud的核心思想,把整个分布式架构了解一下。如有问题欢迎追问,谢谢!

什么是微服务架构?主流的微服务如何实现?
简单地说,微服务架构就是以业务域或业务功能为边界,将一个大而全的应用拆分为可以独立开发,独立部署,独立测试,独立运行的一组小的应用,并且使用轻量级,通用的机制在这组应用间进行通信。主流的微服务包括:1、SpringCloud Spring Cloud , 来自Spring,具有Spring 社区的强大支撑,还有Netflix强大的...

华安县18578952911: 如何使用Spring Boot/Spring Cloud 实现微服务应用 -
才旦逸肌苷: Spring Cloud介绍 spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简...

华安县18578952911: 写springcloud 遇到过什么困难 -
才旦逸肌苷: 1.在feign中使用熔断器hystrix,但是一直不起作用.因为在D版本的Spring Cloud中,它没有默认打开. 解决:在yml文件中加入 feign:hystrix:enabled: true 注意yml中不识别tab的空格. 做完以上工作,重启服务即可. 2.feign hystrix dashboard 断...

华安县18578952911: 用spring cloud 还用nginx吗 -
才旦逸肌苷: 感觉springcloud比较重啊 nginx系的openresty感觉更好啊

华安县18578952911: 如何使用Spring Cloud -
才旦逸肌苷: 使用Spring Cloud构建实际的微服务架构. 基本概念: 使用Docker进行集成测试 混合持久化 微服务架构 服务发现 API网关 Docker 使用Docker对每一个服务进行构建和部署.使用Docker Compose在一个开发机上进行端到端的集成测试. 混合持久化 混合持久化其实就是说使用多种数据库来存储.不同的微服务实例都会使用它们自己的数据库,并通过REST服务或者消息总线来通信,举个例子,你可以使用基于以下数据库来构建微服务: Neo4j(图形化) MongoDB(文档化)

华安县18578952911: 如何利用Spring Cloud构建起自我修复型分布式系统 / 蓝讯 -
才旦逸肌苷: Spring Cloud项目的既定目标在于为Spring开发人员提供一整套易于使用的工具集,从而保证其轻松构建起自己需要的分布式系统方案.为了实现这一目标,Spring Cloud以Netflix OSS堆栈为基础将大量实现堆栈加以整合并打包.这些堆栈而后...

华安县18578952911: 如何调用spring cloud微服务 -
才旦逸肌苷: spring-cloud调用服务有两种方式,一种是百Ribbon+RestTemplate, 另外一种是Feign.Ribbon是一个基于度HTTP和TCP客户端的负载均衡器,其实版feign也使用了ribbon, 只要使用@FeignClient时,权ribbon就会自动使用.

华安县18578952911: 西天取经,学 Spring - Cloud,到底什么是 Spring - Cloud -
才旦逸肌苷: Spring Cloud 是Pivotal提 供的用于简化分布式系统构建的工具集.Spring Cloud引入了云平台连接器(Cloud Connector)和服务连接器(Service Connector)的概念.云平台连接器是一个接口,需要由云平台提供者进行实现,以便库中的其他模块可以与该云平台协同工作.

华安县18578952911: spring cloud,基于什么实现 -
才旦逸肌苷: Spring Cloud的子项目,大致可分成两类,一类是对现有成熟框架”Spring Boot化”的封装和抽象,也是数量最多的项目;第二类是开发了一部分分布式系统的基础设施的实现,如Spring Cloud Stream扮演的就是kafka, ActiveMQ这样的角色....

华安县18578952911: spring cloud 可以用c#么 -
才旦逸肌苷: 可以,有两种方式.一种是Sidecar接入,一种是使用C#框架Steeltoe.

华安县18578952911: spring cloud vcap什么意思 -
才旦逸肌苷: spring cloud vcap 春云粒 VCAP [词典] [医][=vincristine,cyclophosphamide,Adrimycin(doxorubicin),and prednisone] 长春新碱、环磷酰胺、阿霉素和强的松;

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网