负载均衡第一篇-介绍篇
 
系列文章索引
负载均衡第一篇-介绍篇
负载均衡第二篇-负载均衡基础知识普及
 
前言:相信朋友们对负载均衡应该不陌生了!特别是对搞运维的朋友!可能很多的技术人员认为,负载均衡不是搞IT运维的人管的吗,关我们开发人员什么事情?曾经,我也是这样想的,但是后来发现我错了。开发人员,需要懂性能方面的问题,而负载均衡也是属于性能的范畴,so…!如果开发人员想继续不断的提升自己,走向设计,架构的角色,那么,你就必须对技术的有全面的把握和整体的评估,才能在项目中从软件和硬件多方面考虑,真正的实现可用性,扩展性,灵活性。
 
    曾经经历过很多的项目,特别实在做外包的时候,基本上涉及不到什么性能的问题,极少涉及到负载均衡。当我接触了互联网之后,常常被人笑话我是搞企业开发的,不懂性能,于是我开始关注性能,也知道有负载均衡,那时候,感觉思维一下子被打开了,发现了一个不一样的天地!但是负载均衡缺少很多的资料,网络上很多的地方和文章都只是讲了点皮毛,刚要深入的时候,就没了!
 
    技术,入门容易,学精难!不精,就没有核心竞争力,因为谁都懂,谁都可以替代你!所以要精!
 
    在这里,我将会深入的剖析负载均衡的原理,使用!甚至你可以感觉到,之后,你可以自己写一个负载均衡的软件出来!之后,在分析问题,思考问题的时候,你会游刃有余!
    ….
 
    负载均衡已经不是什么新的概念了,负载均衡也不仅仅就指的把一些服务器放在一起实现分压。负载均衡是一个统称。而我们平时谈的最多的就是服务器负载均衡,全球负载均衡,防火墙负载均衡,缓存负载均衡!(在后面,会慢慢的讲述各个方面)。
 
    就拿服务器负载均衡而言,它主要是把请求分摊在多个服务器资源上面。负载均衡还可以实现很精确的服务器健康检查机制,请求的转发。另外,因为负载均衡部署在服务器的前端,所以,它也可以包含服务器免受恶意用户的***,提高安全。同时,还可以基于IP数据包中的信息进行智能的选择不同的程序,不同的服务器来处理!
 
    负载均衡的必要性
随着互联网的普及,越来越多的人开始在线使用服务。同时,也不能容忍网络突然崩溃或者网速、服务的性能超低,特别是对于涉及到网上交易的应用而言,任何一点问题的出现,都是重大的经济损失。为了保证提供更好,更稳定的服务,我们会不断升级服务器的相关设备。
 
    虽然说根据摩尔定律:计算机的处理速度每18个月会翻一番。但是这个速度依然赶不上互联网放在的速度和用户对服务的需要,并且购买更好的设备,不仅仅昂贵,性价比也不理想。
 
    那么这里其实就已经涉及到了一个可伸缩性的挑战。下面,我们就来看看一些常用的可伸缩性方案。
 
    正如之前所说的,计算机的更新速度无法赶上用户需要,这个时候集群技术就应用而生了,这个技术主要是那些大型计算机厂商提供的,集群技术的提出在一定的程度上面缓和了之前的问题。下面,我们就来看看两种比较典型的集群技术:松耦合系统,对称多处理器系统。
 
松耦合系统
 
    松耦合系统是由很多的完全相同的计算机块组成,这些计算机块之间通过系统的总线连接。其中,每一个块都包含各种的处理器,内存,磁盘控制器,磁盘驱动,网络接口等。其实,每个块都可以看出是一个独立的计算机,只不过现在他们被聚在了一起。下面的草图显示这个关系:
 
 
    松耦合的计算机集群系统采用处理器通信技术,讲负责分摊到多个处理器上面。这个系统只有在任务可以被分割的情况下发挥很好的伸缩性。例如,我们现在有一个任务要去返回一个表中所有的数据,并且这个表中的数据已经分割成为了多个不同的文件,放在磁盘上面。这个时候,采用松耦合的计算机集群技术,就可以讲查询任务分为多个不同的并行的子任务去查询,每个子任务去一个文件中查找,最后将结果合并后返回。
 
    但是,不是所有的任务都是可以被分割的。例如,有个任务需要去更新之前那个表中的某个字段,那么此时,即使有这个更新任务被再次分割为小的子任务,但是因为需要更新的字段肯定是位于之间的一个文件中的,那就是说:最后只有一个子任务在真正执行,其余的子任务在打混,闲了。
 
    另外,为了使得松耦合的计算机集群系统获取很好的伸缩性,这个系统还需要很多的技术去支持,也需要很多的人员维护,成本非常的高。
 
对称多处理器系统
 
    对称多处理器系统(SMP)采用多核共享内存(其实这也会导致性能问题,现在很多的计算机,特别是多核的服务器,都是采用的非对称内存的方式,大家感兴趣可以去研究下)。在这种系统中,为了达到很好的伸缩性,我们开发的应用程序必须采用多线程的技术(并且,也是需要将一个任务分为结果子任务来运行,而不同的子任务运行在不同的线程上面)。这些线程共享内存,并且通过内在的方式进行通信。同时,操作系统也会去调度这些线程,使得他们运行在多核上面。同样,这个前面 的系统有这同样类似的问题。
 
    OK,对之前的两种方式就简要的介绍一下。没有深究,并且不是重点。
 
    下面,我们就看看负载均衡技术出现的一些基础。
 
我们知道,传统的交换机和路由器会根据数据包中的IP地址和MAC地址来决定将数据包发送到何处。但是,这个简单的转发能力无法满足现在负责的Web Farm的需求。例如,传统的路由器或交换机不能够比较智能的将数据包发送给特定的应用程序、特定的服务器等。即使有服务器down了,路由器等还是会将数据包发给这个服务器。
 
    那么,我们到底如何来实现负载均衡呢?
    首先,我们还看看比较重要的一些理论基础:OSI网络模型,如图
 
    这个图,非常熟悉,我这里只是简述一下!OSI,就是开放的网络协议的标准了。从图中可以看到,这OSI模型,定义了七层,从物理层一直到最上面的应用层。网络协议,例如Tcp,UDP,IP,Http等分别对应模型中的不同层。其中IP协议处于第三层,TCP,UDP处理第四层。
大家就要问了?这个有啥用呢?
 
    我们又知道:传统的路由器和交换器会位于OSI的第二或者第三层。也就说,它们决定了一个数据包必须如何被处理以及必须发往何处。尽管第二、三层的交换器做了非常了不起的事情,但是,其实在数据包的头信息中,有更多的有价值的信息没有被使用。如果我们在这个时候,将数据包获取,然后分析里面的头信息,然后将请求按照我们的需要进行转发,那么就可以在第二、层实现负载均衡等技术。这也是我们常常看到或者听到的Layer 2/3 Switching
 
    另外,如果在第四层到第七层中获取数据包,分析头信息,然后按需转发请求,就是所谓的“Layer 4 through 7 Switching”。在第四层中,TCP和UDP的头中包含了大量的信息,而这些信息可以使得我们更加智能的实现请求的转发。例如,当用户发送Http请求到部署到Tcp 80端口的站点的时候,我们可以分析通过分析头信息得到这个信息,从而可以将请求转发到其他的服务器上去。
今天先到这里,东西不多,废话可能一大堆 J!

负载均衡原理剖析与实践:负载均衡第一篇-介绍篇相关推荐

  1. K8S网络模型原理剖析和实践-杜军-专题视频课程

    K8S网络模型原理剖析和实践-38人已学习 课程介绍         由华为云高级工程师杜军讲解,将为您介绍Kubernetes的网络模型与实现机制,让您对Kubernetes网络有一个系统的理解和认 ...

  2. [大伽交流] 不见不散!8月23日k8s第7期直播:《K8S存储原理剖析与实践》

    [大伽交流] 不见不散!8月23日k8s第7期直播:<K8S存储原理剖析与实践> 往期回顾+材料下载:https://bbs.huaweicloud.com/forum/thread-95 ...

  3. 搞懂分布式技术8:负载均衡原理剖析

    负载均衡的重要性无需多说,今天带来:负载均衡原理的解析. 开头先理解一下所谓的"均衡". 不能狭义地理解为分配给所有实际服务器一样多的工作量,因为多台服务器的承载能力各不相同,这可 ...

  4. 五分钟让你搞懂Nginx负载均衡原理及四种负载均衡算法

    前言 今天这篇文章介绍了负载均衡的原理以及对应的四种负载均衡算法,当然还有对应的指令及实战,欢迎品尝.有不同意见的朋友可以评论区留言! 负载均衡 所谓负载均衡,就是 Nginx 把请求均匀的分摊给上游 ...

  5. 为什么ClickHouse分析数据库这么强?(原理剖析+应用实践)

    ClickHouse简介 2020年下半年在OLAP领域有一匹黑马以席卷之势进入大数据开发者的领域,它就是ClickHouse.在2019年小编也曾介绍过ClickHouse,大家可以参考这里进行入门 ...

  6. 操作系统原理与Linux实践教程【第一章 操作系统概论】

    文章目录 1.1 操作系统的资源管理功能和目标 一.操作系统的定义 二.操作系统的组成 三.部分流行操作系统 四.操作系统在计算机系统中的位置 五.操作系统的资源管理技术 六.Linux操作系统实验环 ...

  7. L4和L7负载均衡原理和常用负载均衡架构实现

    L4和L7负载均衡原理 四层负载均衡原理 所谓四层负载均衡,也就是主要通过报文中的目标地址和端口,再加上负载均衡设备设置的服务器选择方式,决定最终选择的内部服务器.以常见的TCP为例,负载均衡设备在接 ...

  8. 负载均衡原理与实践详解 第三篇 服务器负载均衡的基本概念-网络基础

    负载均衡原理与实践详解 第三篇 服务器负载均衡的基本概念-网络基础 系列文章: 负载均衡详解第一篇:负载均衡的需求 负载均衡详解第二篇:服务器负载均衡的基本概念-网络基础 负载均衡详解第三篇:服务器负 ...

  9. 负载均衡原理与实践详解 第五篇 负载均衡时数据包流程详解

    负载均衡原理与实践详解 第五篇 负载均衡时数据包流程详解 系列文章: 负载均衡详解第一篇:负载均衡的需求 负载均衡详解第二篇:服务器负载均衡的基本概念-网络基础 负载均衡详解第三篇:服务器负载均衡的基 ...

最新文章

  1. SAP用户信息查询的几张表
  2. esrgan_ESRGAN: Enhanced Super-Resolution Generative Adversarial Networks【阅读笔记】
  3. H5活动产品设计指南基础版
  4. Redis缓存穿透、击穿、雪崩来解释个明白
  5. 如何开始使用Java中的Lambda表达式
  6. JDG战队与英特尔达成为期两年的冠名合作
  7. 2021年Java大厂面试必备面试题
  8. python进程池和线程池_python自带的进程池及线程池
  9. 关于node中的板块问题
  10. Apache Kylin在美团数十亿数据OLAP场景下的实践
  11. 2018SCin tsyzDay2 模拟赛-动态规划(简单的)
  12. SQL:postgresql增加自增字段
  13. 反激变换器matlab仿真变压器demo,反激变换器建模Matlab仿真
  14. 从入门到高级Java书籍推荐
  15. 医院门诊管理系统之信息管理
  16. android 模拟器 安装教程,电脑用安卓模拟器详细安装教程
  17. 关于使用ajax动态输出cnzz统计代码的问题
  18. python怎么把照片转成卡通_python用OpenCV转卡通照片报错,好像是pyrdown的使用有问题?...
  19. Python和JavaScript间代码转换4个工具
  20. 【秋招笔试】小米、美的CV算法岗笔试

热门文章

  1. java开发安装程序_创建java开发环境安装包
  2. 置为底层_头一次见浴室装修这样设计,浴缸两头砌上置物台,实用又方便
  3. jar 工程我怎么在网页上url访问某一个方法_Java高级编程之URL处理
  4. linux 删除N天文件
  5. 使用Keras实现鸢尾花分类
  6. 数学之美:欣赏超越数e
  7. 大数据学习笔记04:单机模式使用ZooKeeper
  8. 全国计算机考试一级在线模拟,2017全国计算机一级考试模拟
  9. 我的 计算机朋友作文,电脑我的朋友作文
  10. redis的zset的底层实现_Redis底层数据结构之 zset