高性能:负载均衡

news/2024/7/7 21:44:40 标签: 负载均衡, 运维, nginx

目录

什么是负载均衡

负载均衡分类

服务端负载均衡

服务端负载均衡——软硬件分类

服务端负载均衡——OSI模型分类

客户端负载均衡

负载均衡常见算法

七层负载均衡做法

DNS解析

反向代理


什么是负载均衡

        将用户请求分摊(分流) 到不同的服务器上,提高系统整体并发能力及可靠性。

负载均衡分类

        客户端/服务端

服务端负载均衡

        主要应用在系统外部请求网关层之间,可以用软件/硬件来实现

        Nginx服务端负载均衡示意图:

服务端负载均衡——软硬件分类

  • 硬件负载均衡:可以通过专门的硬件设备(F5,A10,Array),贵但性能强
  • 软件负载均衡:LVS、Nginx、HAproxy

服务端负载均衡——OSI模型分类

          二/三/四/七层负载均衡最常见的为四层和七层

四层:OSI模型的第四层 传输层,这一层主要协议:TCP/UDP,负载均衡器能在这一层看到数据包里的源端口地址及目的端口地址,基于这些信息通过负载均衡算法,转发到后端真实服务器。LVS(Linux Virtual Server虚拟服务器,Linux内核的4层负载均衡)来做四层负载均衡

七层:OSI模型的第七层 应用层 这一层主要协议:HTTP   负载均衡器会读取报文数据,然后根据读取的内容(如 URL Cookie)做出负载均衡决策。工作中我们常用Nginx来做7层负载均衡

四层:性能更强

七层:功能更强

客户端负载均衡

应用于系统内部的不同服务间,可以使用现成的负载均衡组件来实现。

客户端负载均衡器和服务运行在同一个进程或者说同一个java程序中。

Java领域主流的微服务框架Dubbo、SpringCloud等都内置了开箱即用的客户端负载均衡实现。Dubbo默认自带了负载均衡功能;SpringCloud是通过组件形式(如Spring Cloud Load Balancer 、Ribbon)来实现。

        基于Spring Cloud Load Balancer实现的示意图

负载均衡常见算法

  1. 随机法:最简单粗暴,可设置权重

  2. 轮询法:可设置权重

  3. 一致性HASH法:相同参数的请求,总是发到同一台服务器处理

  4. 最小连接法:监控服务器正在处理的请求连接数,遍历服务器节点并选取其中活动连接数最小的一台来响应当前请求

七层负载均衡做法

DNS解析

为同一个主机记录多个IP地址即不同服务器,当用户请求域名时,DNS服务器负责采用轮询算法返回IP地址,这样就实现了轮询版负载均衡

反向代理

    1. 最常用的反向代理服务器:NGINX

    2.客户端 将请求发送到反向代理服务器,由反向代理服务器去选择目标服务器。

    3.对外暴露的地址是反向代理服务器地址(隐藏了真实的ip地址)。

    4.反向代理“代理”的是目标服务器

收队!


http://www.niftyadmin.cn/n/281770.html

相关文章

总结838

四月结束,五月来临。又到了月度总结与规划的时候了。 四月总结:高等数学原计划复习完18讲内容,刷完对应的习题。如今还剩三讲,本可以看完,但因为后面分专题了,还没确定是数1还是数2.所以耽搁了一下。英语原…

有效日志管理在软件开发和运营中的作用

作者:Luca Wintergerst, David Hope, Bahubali Shetti 当今存在的快速软件开发过程需要扩展和复杂的基础架构和应用程序组件,并且操作和开发团队的工作不断增长且涉及多个方面。 有助于管理和分析遥测数据的可观察性是确保应用程序和基础架构的性能和可靠…

【零基础入门Python爬虫】第一节 Urllib

Urllib 是 Python 内置的 HTTP 请求库,它可以让我们以编程的方式发送 HTTP 请求并处理服务器响应。使用 urllib,我们可以轻松地获取 Web 页面、下载文件和与 Web API 进行交互等操作。 在本文中,我们将介绍如何使用 Urllib 进行常见的 HTTP …

SAP重复制造入门到放弃系列之基本配置

目录 前言 主要配置清单: REM参数文件: 计划订单计划参数文件 维护输入项参数 维护行选择 确认和物流信息系统全局设置 定义确认处理 操作方法表 其他 前言 重复制造中的配置步骤包括创建重复制造配置文件、为运行计划数量(计划订单&a…

Codeforces Round 849 (Div 4)总结

文章目录 ABCDEFG2 文章首发于我的个人博客:欢迎大佬们来逛逛 Dashboard - Codeforces Round 849 (Div. 4) - Codeforces A 查找字符是否出现在一个字符串中,编程技巧:s.find(’x’)≠string::npos B 上下左右四个方向移动是否能够到达一…

【前端面经】Vue-Vue中的 $nextTick 有什么作用?

Vue.js 是一个流行的 JavaScript 框架,它提供了许多实用的功能,其中之一就是 $nextTick 方法。 在 Vue.js 中, $nextTick 方法可以确保我们在更新 DOM 之后再去执行某些操作,从而避免由于 DOM 更新而导致的问题。这个方法非常实用…

企业级信息系统开发讲课笔记3.3 基于XML配置方式SSM框架西蒙购物网

文章目录 零、本节学习目标一、网站功能需求二、网站设计思路(一)设计模式(二)网站前台(三)网站后台1、用户管理2、类别管理3、商品管理4、订单管理 (四)购物流程图 三、网站运行效果…

SDKJ_JD 服务器部署

前端(Vite Vue3)、 后端(flask mongodb) 、服务器(Ubuntu20.04) 一、后端 MongoDB 环境部署到 ubuntu20.04 可以按照以下步骤在Ubuntu 20.04上安装MongoDB: 1.添加MongoDB官方GPG密钥&…