深入理解 Ribbon 的架构原理

本文深入探讨了Ribbon在微服务中的负载均衡作用,从负载均衡概念、策略到Ribbon的核心组件,包括ServerList、Rule、Ping等。文中详细解释了Ribbon如何拦截请求并转发,其初始化和服务列表同步原理,以及与Eureka的心跳检测机制差异。Ribbon提供了多种负载均衡策略,如轮询、权重轮询、随机和响应速度均衡,适用于不同场景。此外,还介绍了Ribbon与Eureka的配置选项和自我保护机制。
摘要由CSDN通过智能技术生成

今天我们来看下微服务中非常重要的一个组件:Ribbon。它作为负载均衡器在分布式网络中扮演着非常重要的角色。

本篇主要内容如下:

 

在介绍 Ribbon 之前,不得不说下负载均衡这个比较偏僻的名词。为什么说它偏僻了,因为在面试中,聊得最多的是消息队列和缓存来提高系统的性能,支持高并发,很少有人会问负载均衡,究其原因,负载均衡的组件选择和搭建一般都是运维团队或者架构师去做的,开发人员确实很少接触到。不过没关系,我们不止有 CRUD,还要有架构思维。

简单来说,负载均衡就是将网络流量(负载)分摊到不同的网络服务器(可以平均分配,也可以不平均),系统就可以实现服务的水平横向扩展。

那么如果让你设计一个负载均衡组件,你会怎么设计?

我们需要考虑这几个因素:

  • 如何获取及同步服务器列表?涉及到与注册中心的交互。

  • 如何将负载进行分摊?涉及到分摊策略。

  • 如何将客户端请求进行拦截然后选择服务器进行转发?涉及到请求拦截。

抱着这几个问题,我们从负载均衡的原理 + Ribbon 的架构来学习如何设计一个负载均衡器,相信会带给你一些启发。

1. 负载均衡

1.1 概念

之前我详细讲解了何为高可用B 站崩了,总结下「高可用」和「异地多活」

里面没有涉及到负载均衡机制,其实负载均衡也是高可用网络的关键组件。

 

负载均衡的两个基本点:

  • 选择哪个服务器来处理客户端请求;

  • 将客户端请求转发出去。

一个核心原理:通过硬件或软件的方式维护一个服务列表清单。当用户发送请求时,会将请求发送给负载均衡器,然后根据负载均衡算法从可用的服务列表中选出一台服务器的地址,将请求进行转发,完成负载功能。

1.2 负载均衡的特性

 

  • 高性能:可根据不同的分配规则自动将流量进行分摊;

  • 可扩展性:可以很方便增加集群中设备或链路的数量;

  • 高可靠性:系统中某个设备或链路发生故障,不会导致服务中断;

  • 易配置性:配置和维护方便;

  • 透明性:用户感知不到如何进行负载均衡的,也不用关心负载均衡。

1.3 负载均衡分类

负载均衡技术可以按照软件或硬件进行分类,也可以按照服务器列表存放的位置划分为服务端负载和客户端负载均衡。

 

1.3.1 硬件负载均衡

F5 就是常见的硬件负载均衡产品。

优点:性能稳定&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值