6000字 | 深入理解 Ribbon 的架构原理

2022-03-25 00:00:00 服务器 请求 服务 负载均衡 心跳

本篇主要内容如下:

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

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

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

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

  • 如何获取及同步服务器列表?涉及到与注册中心的交互。
  • 如何将负载进行分摊?涉及到分摊策略。
  • 如何将客户端请求进行拦截然后选择服务器进行转发?涉及到请求拦截。

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

一、负载均衡

1.1 概念

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

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


负载均衡的两个基本点

  • 选择哪个服务器来处理客户端请求。
  • 将客户端请求转发出去。

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

1.2 负载均衡的特性


相关文章