备战2024秋招面试题-负载均衡常见的算法

2023-07-06 16:54:09

前言: \textcolor{Green}{前言:} 前言:

💞快秋招了,那么这个专栏就专门来记录一下,同时呢整理一下常见面试题
💞部分题目来自自己的面试题,部分题目来自网络整理

学习目标:

  • 负载均衡常见的算法
  • 算法题:组合总和

面试题:

负载均衡常见的算法

负载均衡指的是将用户请求分摊到不同的服务器上处理,以提高系统整体的并发处理能力以及可靠性。

大体上分为以下四种:

  • 随机法
  • 轮询法
  • IP地址Hash法
  • 最小连接数
  1. 随机法

概念:随机法是最简单粗暴的负载均衡算法。所有的服务器被访问到的概率都是相同的。
适合:服务器性能相近的集群,每个服务器承载相同的负载
缺陷:可能有些机器在某一段时间内没有使用。

  1. 轮询法

概念:轮询法是挨个轮询服务器处理。每个请求按时间逐一分配到不同的服务器处理。
适合:服务器性能相近的集群,其中每个服务器承载相同的负载

  1. 加权轮询法

概念:在轮询法的基础上,对每个服务器配置权重,权重越高的服务器被访问的次数就越多。
适合:适合于服务器性能不等的集群,对不同性能的服务器配置不同的权重,可以使服务器的性能发挥最大性能。

一般对于性能高的服务器给予更高的权重。

  1. 加权随机法

概念:在随机法的基础上,对服务器配置权重,权重越高的服务器访问的概率越大。
适合:适合于服务器性能不等的集群,不同的权重请求达到的服务器的概率不同。
缺陷:随机法的缺陷同样没有解决,因为同样有些服务器在某段时间内无法随机到。

  1. IP地址Hash法

概念:通过对发送请求的客户端的 IP 地址进行求 hash 值,并对服务地址列表长度取余,选择结果对应的服务器。该方法保证了同一客户端 IP 地址会被映射到相同的后端服务器上,直到后端服务器列表发生了改变。

相同参数的请求总是发到同一台服务器处理。也就是说同个 IP 的请求会发送到同一台服务器。

  1. 最小连接法

概念:有新的请求时,遍历服务器的节点列表,选择当前正在处理的请求数最小的一台服务器来连接这个请求。
优点:可以尽可能的使请求分配合理化。
缺陷:需要监控每一台服务器处理的请求连接数。有些是为每个服务器地址维护一个连接数变量来记录当前服务器连接的请求数。


负载均衡的常见算法了解了,继续来个算法题解解馋

算法题:

题目来源: \textcolor{blue}{题目来源: } 题目来源: 39. 组合总和
等级:中等 \textcolor{OrangeRed}{等级:中等} 等级:中等

👉题目描述

给你一个 无重复元素 的整数数组 candidates 和一个目标整数 target ,找出 candidates 中可以使数字和为目标数 target 的 所有 不同组合 ,并以列表形式返回。你可以按 任意顺序 返回这些组合。

candidates 中的 同一个 数字可以 无限制重复被选取 。如果至少一个数字的被选数量不同,则两种组合是不同的。

对于给定的输入,保证和为 target 的不同组合数少于 150 个。

示例 1:

输入:candidates = [2,3,6,7], target = 7
输出:[[2,2,3],[7]]
解释:
23 可以形成一组候选,2 + 2 + 3 = 7 。注意 2 可以使用多次。
7 也是一个候选, 7 = 7 。
仅有这两种组合。

示例 2:

输入: candidates = [2,3,5], target = 8
输出: [[2,2,2,2],[2,3,3],[3,5]]

示例 3:

输入: candidates = [2], target = 1
输出: []

提示:

  • 1 <= candidates.length <= 30
  • 2 <= candidates[i] <= 40
  • candidates 的所有元素 互不相同
  • 1 <= target <= 40

👉代码编写

👉👉方法1

class Solution {
    public List<List<Integer>> combinationSum(int[] candidates, int target) {
        List<List<Integer>> res = new ArrayList<>();
        Arrays.sort(candidates);
        backTracking(res, new ArrayList<>(), candidates, target, 0, 0);
        return res;
    }

    public void backTracking(List<List<Integer>> res, List<Integer> temp, int[] candidates, int target, int sum, int startIndex) {
        if (sum == target) {
            res.add(new ArrayList<>(temp));
            return;
        }
        for (int i = startIndex; i < candidates.length; i++) {
            if (sum + candidates[i] > target) {
                return;
            }
            temp.add(candidates[i]);
            sum = sum + candidates[i];
            backTracking(res, temp, candidates, target, sum, i);
            temp.remove(temp.size() - 1);
            sum = sum - candidates[i];
        }
    }
}

需要明白的几个点:

  • remove() 方法用于删除动态数组里的单个元素。
// 删除指定元素
arraylist.remove(Object obj)

// 删除指定索引位置的元素
arraylist.remove(int index)

完成?

今天结束。之前学习的明白了吗?
  • 负载均衡常见的算法

  • 算法题:组合总和

更多推荐

PHP实践:用Yconf配置扩展为项目插上性能的翅膀

🏆作者简介,黑夜开发者,CSDN领军人物,全栈领域优质创作者✌,CSDN博客专家,阿里云社区专家博主,2023年6月CSDN上海赛道top4。🏆数年电商行业从业经验,历任核心研发工程师,项目技术负责人。🏆本文已收录于PHP专栏:PHP进阶实战教程。🏆另有专栏PHP入门基础教程,希望各位大佬多多支持❤️。🎉欢迎

ThreeJS-3D教学一基础场景创建

Three.js是一个开源的JS3D图形库,用于创建和展示高性能、交互式的3D图形场景。它建立在WebGL技术之上,并提供了丰富的功能和工具,使开发者可以轻松地构建令人惊叹的3D可视化效果。Three.js提供了一套完整的工具和API,用于创建和管理3D场景、几何体、纹理、光照、材质和相机等方面。它具有强大的渲染引擎,

分享一下蛋糕店在微信小程序上可以实现什么功能

蛋糕店在微信小程序上可以实现的功能微信小程序作为一种新型的商业模式,正逐渐成为各行各业拓展线上业务的重要手段。对于蛋糕店来说,开发微信小程序可以实现以下功能:一、展示产品和服务微信小程序可以作为蛋糕店的产品展示平台,展示店内的蛋糕品种、价格、口味、配料等信息。同时,小程序还可以提供预订服务,用户可以通过小程序提前预定蛋

Direct3D纹理映射

借助纹理映射技术,我们可将图像数据映射到三角形单元中,这种功能可以显著地增加所绘制场景的细节和真实感,例如创建一个立方体然后为其每个面映射一个板条纹理,从而将该立方体变为一个板条箱,在Direct3D中纹理用接口IDirect3DTexture9来表示,纹理是类似于表面的一个像素矩阵,与表面不同的是它可被映射到三角形单

如何在macOS上安装Go并搭建本地编程环境

引言Go是一种诞生于挫折中的编程语言。在谷歌,开发人员厌倦了在为新项目选择语言时必须做出权衡。有些语言执行效率很高,但需要很长时间编译,而另一些语言易于编写,但在生产环境中运行效率很低。因此,谷歌发明了Go语言,并设计了这门语言以拥有这一切:快速编译、快速执行、易于编写和易于部署。虽然Go是一种通用语言,可用于从web

zookeeper

先说Paxos,它是一个基于消息传递的一致性算法,LeslieLamport在1990年提出,近几年被广泛应用于分布式计算中,Google的Chubby,Apache的Zookeeper都是基于它的理论来实现的,pxos还被认为是到目前为1唯一的分布式一性算法,其它的算法都是Paxos的改进或简化。有个问题要提一下,P

arcgis拓扑检查实现多个矢量数据之间消除重叠区域

目录环境介绍:操作任务:步骤:1、数据库和文件结构准备2、建立拓扑规则3、一直下一页默认参数后,进行拓扑检查4、打开TP_CK_Topology,会自动带出拓扑要素,红色区域为拓扑错误的地方;5、编辑对应的图层,在编辑窗口选择:编辑器→更多编辑工具→拓扑。6、拓扑错误显示并处理7、最后对处理好的数据保存,导出即可8、操

绿源通过聆讯,两轮电动车“老江湖”,能否适应新时代?

作为两轮电动车领域历史最悠久的品牌之一,绿源的上市之路颇为波折。几次招股书失效后,绿源终于在9月19日成功通过港交所聆讯,跨过了这道门槛。此前,无论是招股书失效,还是在地方抽检中出现的不利新闻,都令外界认为,这个行业的内卷在催着绿源上市,获得更多博弈的资本。而从行业现实看,最重要的或许是两轮电动车的消费属性在不断变化,

相机HAL

相机HAL1、概览实现HAL2、相机HAL2.1AIDL相机HAL2.2相机HAL3功能2.3CameraHAL1概览相机HAL相机实现HALandroid12-release1、概览实现HALHAL位于相机驱动程序和更高级别的Android框架之间,它定义您必须实现的接口,以便应用可以正确地操作相机硬件。相机HAL的

从入局到破局:商家怎样挖掘视频号的新增量?

主笔:yolo出品:增长黑盒研究组在上一篇研究报告中,我们站在消费者的角度和市场大盘对视频号进行了分析,某种程度上是对于“终局”的展望:用户行为的变化、人群结构的变化等因素下,塑造除了视频号差异化的商业价值,为品牌提供了一个与用户建立深度关系的场景,因而存在可观的新增量空间。在本篇报告中,我们将视角切换回品牌和商家,看

什么是 AirServer?Mac专用投屏工具AirServer 7 .27 for Mac中文破解版百度网盘下载

AirServer7.27forMac中文免费激活版是一款Mac专用投屏工具,能够通过本地网络将音频、照片、视频以及支持AirPlay功能的第三方App,从iOS设备无线传送到Mac电脑的屏幕上,把Mac变成一个AirPlay终端的实用工具。目前最新的AirServer7.2.7版本,支持macOSHighSierra

热文推荐