当前位置: 首页 > news >正文

高性能:负载均衡

目录

什么是负载均衡

负载均衡分类

服务端负载均衡

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

服务端负载均衡——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.lryc.cn/news/63889.html

相关文章:

  • Matplotlib 安装介绍
  • DNS:关于 DNS 基本概念的一些笔记整理
  • 机器人学一些知识
  • 应用,auto,内联函数
  • Flask框架的学习---01
  • 免费gpt-4-国内使用gpt-4
  • 《程序员面试金典(第6版)面试题 16.09. 运算
  • asp.net基于web的校园美食派送配送系统
  • 【JAVA】#详细介绍!!! 文件操作之File对象(1)!
  • Vue基本的内置指令
  • 华为孟晚舟当值首秀:2030年AI算力将增长500倍!
  • 关于python异常的总结
  • 基于Java+SpringBoot+vue学生学习平台详细设计实现
  • 【云原生网关】Kong 使用详解
  • 浅谈之Java多线程
  • 【Vue3学习笔记1】一个清单应用帮你入门Vue.js
  • go破冰之旅·8·go函数基本实践及各种玩法
  • Qt - 从零到壹的 打地鼠 游戏
  • 代码自动发布系统
  • qemu-基础篇(一)——安装
  • 从根本上理解Synchronized的加锁过程
  • CANOE入门到精通——CANOE系列教程记录1 第一个仿真工程
  • JavaEE——单例模式
  • 关于数据倾斜
  • Shell第一次作业
  • 实例解读nn.AdaptiveAvgPool2d((1, 1))
  • 泛型编程 之模板(template)
  • 用ChatGPT问DotNet的相关问题,发现DotNet工程师的前景还不错
  • LeetCode_字符串_简单_415.字符串相加
  • Insix:面向真实的生成数据增强,用于Nuclei实例分割