在云环境(例如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. Docker手工部署GO环境

    参考: (最新2020)Golang 使用Dockerfile 打包部署到 docker https://blog.csdn.net/weixin_44042863/article/details/1 ...

  2. WEB服务与NGINX(9)-NGINX作为下载服务器的相关配置

    目录 1. NGINX的目录索引功能 2. NGINX的限速功能 2.1 限制下载速度 2.2 限制单位时间内产生的http请求数 2.3 限制客户端同一时刻的并发连接数 1. NGINX的目录索引功 ...

  3. vue3编译优化之“静态提升”

    前言 在上一篇 vue3早已具备抛弃虚拟DOM的能力了文章中讲了对于动态节点,vue做的优化是将这些动态节点收集起来,然后当响应式变量修改后进行靶向更新.那么vue对静态节点有没有做什么优化呢?答案是 ...

  4. mews/captcha 验证码组件

    /** * 图像验证码 */ public function captcha(CaptchaBridge $captcha, $type = 'default') { $api_captcha = $ ...

  5. 解决:ModuleNotFoundError: No module named ‘urllib3.packages.six.moves问题

    解决方案: 第一步:把selenium版本降到3.3.1 配合urllib3版本1.26.2使用,成功解决 &在python interpreter安装availablePackages se ...

  6. Swoole 源码分析之 epoll 多路复用模块

    首发原文链接:Swoole 源码分析之 Http Server 模块 大家好,我是码农先森. 引言 在传统的IO模型中,每个IO操作都需要创建一个单独的线程或进程来处理,这样的操作会导致系统资源的大量 ...

  7. GeneralUpdate .Net5 WPF、Winfrom、控制台应用自动更新组件

    https://www.bilibili.com/video/BV1aX4y137dd/?vd_source=43d3e66cc2ad46bac54dfb0c6a3a0a23 GeneralUpdat ...

  8. Vue.js 动态组件与异步组件

    title: Vue.js 动态组件与异步组件 date: 2024/6/2 下午9:08:50 updated: 2024/6/2 下午9:08:50 categories: 前端开发 tags: ...

  9. Qt OPC UA通信

    介绍 OPC UA全称Open Platform Unified Architecture,开放平台统一架构,是工业自动化领域通用的数据交换协议,它有两套主要的通信机制:1.客户端-服务器通信:2.发 ...

  10. 详解在Linux中同时安装配置并使用 MySQL5.7 和 MySQL8.0

    最近需要使用mysql8.0版本,但是原本的mysql5.7版本已经被多个服务依赖,于是想想能不能同一台服务器装多个版本的mysql,一查确实可行,这里做一个记录方便自己后期回忆 阅读本文前请注意!! ...