在云环境(例如AWS)中,由于云提供商通常提供强大的负载均衡服务(如AWS的ALB),一般不再需要使用Ribbon这种客户端负载均衡方案。云环境中的负载均衡器通常能够提供更高的可靠性、可扩展性和简化的配置,因此在上云的情况下,使用云提供的负载均衡器是更优的选择。

理由分析

  1. 云提供的负载均衡服务(如ALB)的优势

    • 自动伸缩和高可用性:ALB等负载均衡服务能够自动调整处理能力以应对流量波动,并提供跨多个可用区的高可用性。
    • 简化配置和管理:使用云提供的负载均衡服务可以避免在应用层配置和管理客户端负载均衡的复杂性。
    • 集成云原生功能:这些负载均衡器通常与云服务(如Auto Scaling、CloudWatch等)深度集成,提供更多的功能和更好的性能监控。
  2. Ribbon的角色和局限

    • 客户端负载均衡:Ribbon在客户端实现负载均衡,适用于传统的微服务架构。
    • 额外的复杂性:在云环境中,客户端负载均衡可能引入不必要的复杂性,因为它需要维护服务实例列表和负载均衡策略。
    • Spring Cloud LoadBalancer的替代:Spring Cloud已经引入了Spring Cloud LoadBalancer来替代Ribbon作为新的客户端负载均衡解决方案,Ribbon本身也被标记为弃用。

云环境中推荐的做法

  1. 使用云提供的负载均衡器(如ALB)

    • 通过配置ALB来处理所有的入站流量,并将流量分发到后端的服务实例。
    • 客户端应用只需要知道ALB的DNS名称,而不需要关心具体的后端实例。
  2. Feign与ALB的集成

    • 配置Feign客户端直接指向ALB的DNS名称。
    • 避免使用Ribbon或其他客户端负载均衡解决方案。

示例代码

配置Feign客户端指向ALB

假设你的AWS ALB的DNS名称为my-alb-1234567890.us-west-2.elb.amazonaws.com,Feign客户端可以这样配置:

# application.yml
feign:
client:
config:
default:
connectTimeout: 5000
readTimeout: 5000 my-service:
url: http://my-alb-1234567890.us-west-2.elb.amazonaws.com
@FeignClient(name = "myServiceClient", url = "${my-service.url}")
public interface MyServiceClient {
@GetMapping("/endpoint")
String getEndpoint();
}

在AWS等云环境中,由于云提供商提供了强大的负载均衡器(如ALB),通常不再需要使用Ribbon进行客户端负载均衡。使用ALB等云负载均衡器可以简化配置和管理,提高系统的可靠性和可扩展性。因此,在上云的情况下,推荐使用云负载均衡器而非Ribbon来处理负载均衡。

spring cloud 上云的情况下,Ribbon 客户端负载均衡 与 ALB 服务端负载均衡的选择的更多相关文章

  1. Spring Cloud中五大神兽总结(Eureka/Ribbon/Feign/Hystrix/zuul)

    Spring Cloud中五大神兽总结(Eureka/Ribbon/Feign/Hystrix/zuul) 1.Eureka Eureka是Netflix的一个子模块,也是核心模块之一.Eureka是 ...

  2. Spring Cloud系列文,Feign整合Ribbon和Hysrix

    在本博客之前的Spring Cloud系列里,我们讲述了Feign的基本用法,这里我们将讲述下Feign整合Ribbon实现负载均衡以及整合Hystrix实现断路保护效果的方式. 1 准备Eureka ...

  3. Spring Cloud中,如何解决Feign/Ribbon第一次请求失败的问题?

    Spring Cloud中,如何解决Feign/Ribbon第一次请求失败的问题? Spring Cloud中,Feign和Ribbon在整合了Hystrix后,可能会出现首次调用失败的问题,要如何解 ...

  4. Spring Cloud(Dalston.SR5)--Feign 声明式REST客户端

    Spring Cloud 对 Feign 进行了封装,集成了 Ribbon 并结合 Eureka 可以实现客户端的负载均衡,Spring Cloud 实现的 Feign 客户端类名为 LoadBala ...

  5. Spring Cloud Gateway+Nacos,yml+properties两种配置文件方式搭建网关服务

    写在前面 网关的作用不在此赘述,举个最常用的例子,我们搭建了微服务,前端调用各服务接口时,由于各服务接口不一样,如果让前端同事分别调用,前端同事会疯的.而网关就可以解决这个问题,网关屏蔽了各业务服务的 ...

  6. Linux的虚拟内存管理-如何分配和释放内存,以提高服务器在高并发情况下的性能,从而降低了系统的负载

    Linux的虚拟内存管理有几个关键概念: Linux 虚拟地址空间如何分布?malloc和free是如何分配和释放内存?如何查看堆内内存的碎片情况?既然堆内内存brk和sbrk不能直接释放,为什么不全 ...

  7. (8)Linux(客户端)和Windows(服务端)下socket通信实例

    Linux(客户端)和Windows(服务端)下socket通信实例: (1)首先是Windows做客户端,Linux做服务端的程序 Windows   Client端 #include <st ...

  8. Spring @Transactional注解在什么情况下会失效,为什么?

    出处:  https://www.cnblogs.com/hunrry/p/9183209.html   https://www.cnblogs.com/protected/p/6652188.htm ...

  9. spring cloud学习笔记三 Feign与Ribbon负载均衡的区别

    一.Feign的介绍 Feign一般比较书面的解释是:Feign是一个声明式的WebService客户端,使用Feign编写的WebService客户端更加简单,他的使用方法是定义一个接口,然后在上线 ...

  10. android 上传文件"Content-Type",为"application/octet-stream" 用php程序在服务端用$GLOBALS['HTTP_RAW_POST_DATA']接受(二)

    服务端php程序file_up.php function uploadFileBinary() { $this->initData(); $absoluteName = "" ...

随机推荐

  1. list转json tree的工具类

    package com.glodon.safety.contingency.job; import com.alibaba.fastjson.JSON; import com.alibaba.fast ...

  2. 不同模式下删除Oracle数据表的三个实例

    首发微信公众号:SQL数据库运维 原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247485212&idx=1 ...

  3. windows 文件夹添加备注

    1,选中希望改动的文件夹,然后右键"单击",选择"属性"按钮. 2,打开"自定义"面板,选择"更改图标",将原来的默认文 ...

  4. vue学习笔记之父组件子组件的传值

    一  在前端开发过程中,很多情况下一个页面无法装载大部分的代码,所以需要子组件来完成父组件的任务,下面我来展示一下,组件之间如何进行传值以及常见的坑,首先上代码 1.1   父组件代码 <tem ...

  5. Linux中默认的shell如何切换为其他类型的shell

    1.一般linux系统会默认使用一种shell,比如我当前系统使用的默认shell是bash,可以使用如下方法查看. [root@node5 ~]# echo $SHELL /bin/bash 2.当 ...

  6. AIRIOT智慧变电站管理解决方案

    随着社会电气化进程的加速,电力需求与日俱增,变电站作为电网的关键节点,其稳定性和智能化管理水平直接关系到整个电力系统的高效运作.传统变电站管理平台难以适应现代电力系统复杂管理需求,存在如下痛点: 数据 ...

  7. RocketMQ消息过滤机制源码详解

    #RocketMQ提供了2种消息过滤的方式: TAG 过滤 SQL92 过滤 SQL过滤默认是没有打开的,如果想要支持,必须在broker的配置文件中设置:enablePropertyFilter = ...

  8. 阿里巴巴 MySQL 数据库之索引规约 (二)

    索引规约 强制部分 [强制] 业务上具有唯一特性的字段,即使是多个字段的组合,也必须建成唯一索引. 说明:不要以为唯一索引影响了 insert 速度,这个速度损耗可以忽略,但提高查找速度是明显的:另外 ...

  9. WPF开发快速入门【1】WPF的布局

    概述 本文描述几款WPF中常用的布局控件. Grid Grid是WPF最常用的布局控件. 它把面板分割为固定长和宽的网格,子控件就放置在网格内. <Grid> <Grid.Colum ...

  10. 前端使用 Konva 实现可视化设计器(12)- 连接线 - 直线

    这一章实现的连接线,目前仅支持直线连接,为了能够不影响原有的其它功能,尝试了2.3个实现思路,最终实测这个实现方式目前来说最为合适了. 请大家动动小手,给我一个免费的 Star 吧~ 大家如果发现了 ...