美文网首页
深入了解开发即时通讯中的HTTP服务端负载均衡技术

深入了解开发即时通讯中的HTTP服务端负载均衡技术

作者: 可爱的小云朵 | 来源:发表于2022-10-12 10:11 被阅读0次

在一个典型的高并发、大用户量的Web互联网系统的架构设计中,对HTTP集群的负载均衡设计是作为高性能系统优化环节中必不可少的方案。HTTP负载均衡的本质上是将Web用户流量进行均衡减压,因此在互联网的大流量项目中,其重要性不言而喻。

本文将以简洁通俗的文字,为你讲解主流的HTTP服务端实现负载均衡的常见方案,以及具体到方案中的负载均衡算法的实现原理。理解和掌握这些方案、算法原理,有助于您今后的互联网项的技术选型和架构设计,因为没有哪一种方案和算法能解决所有问题,只有针对特定的场景使用合适的方案和算法才是最明智的选择。

本文中所提及的HTTP负载均衡方案和算法,并不完全适用IM即时通讯Socket长连接的负载均衡,因为IM长连接、有状态的特性,跟HTTP这种短连接、无状态的特征是矛盾的,所以请勿盲目套用。但,一个完整的IM系统是由HTTP短连接+IM长连接组成,因而本文内容虽不能套用于IM长连接的负载均衡方案,但可以用于您IM的高并发、大用户量的HTTP短连接的方案设计。

什么是负载均衡?

早期的互联网应用,由于用户流量比较小,业务逻辑也比较简单,往往一个单服务器就能满足负载需求。随着现在互联网的流量越来越大,稍微好一点的系统,访问量就非常大了,并且系统功能也越来越复杂,那么单台服务器就算将性能优化得再好,也不能支撑这么大用户量的访问压力了,这个时候就需要使用多台机器,设计高性能的集群来应对。

那么,多台服务器是如何去均衡流量、如何组成高性能的集群的呢?

此时就需要请出 「负载均衡器」 入场了。

负载均衡(Load Balancer)是指把用户访问的流量,通过「负载均衡器」,根据某种转发的策略,均匀的分发到后端多台服务器上,后端的服务器可以独立的响应和处理请求,从而实现分散负载的效果。负载均衡技术提高了系统的服务能力,增强了应用的可用性。

主流负载均衡方案有几种?

目前市面上最常见的负载均衡技术方案主要有三种:

1)基于DNS负载均衡;

2)基于硬件负载均衡:比如F5

3)基于软件负载均衡:比如Nginx、Squid。

三种方案各有优劣,DNS负载均衡可以实现在地域上的流量均衡,硬件负载均衡主要用于大型服务器集群中的负载需求,而软件负载均衡大多是基于机器层面的流量均衡。在实际场景中,这三种是可以组合在一起使用。

基于DNS来做负载均衡其实是一种最简单的实现方案,通过在DNS服务器上做一个简单配置即可。即时通讯聊天软件app开发可以加蔚可云的v:weikeyun24咨询

其原理就是:当用户访问域名的时候,会先向DNS服务器去解析域名对应的IP地址,这个时候我们可以让DNS服务器根据不同地理位置的用户返回不同的IP。比如南方的用户就返回我们在广州业务服务器的IP,北方的用户来访问的话,我就返回北京业务服务器所在的IP。

在这个模式下,用户就相当于实现了按照「就近原则」将请求分流了,既减轻了单个集群的负载压力,也提升了用户的访问速度。

使用DNS做负载均衡的方案,天然的优势就是配置简单,实现成本非常低,无需额外的开发和维护工作。

但是它也有一个明显的缺点:当配置修改后,生效不及时。这个是由于DNS的特性导致的,DNS一般会有多级缓存,所以当我们修改了DNS配置之后,由于缓存的原因,会导致IP变更不及时,从而影响负载均衡的效果。

另外,使用DNS做负载均衡的话,大多是基于地域或者干脆直接做IP轮询,没有更高级的路由策略,所以这也是DNS方案的局限所在。

硬件的负载均衡那就比较牛逼了,比如大名鼎鼎的 F5 Network Big-IP,也就是我们常说的 F5,它是一个网络设备,你可以简单的理解成类似于网络交换机的东西,完全通过硬件来抗压力,性能是非常的好,每秒能处理的请求数达到百万级,即 几百万/秒 的负载,当然价格也就非常非常贵了,十几万到上百万人民币都有。

因为这类设备一般用在大型互联网公司的流量入口最前端,以及政府、国企等不缺钱企业会去使用。一般的中小公司是不舍得用的。

采用 F5 这类硬件做负载均衡的话,主要就是省心省事,买一台就搞定,性能强大,一般的业务不在话下。而且在负载均衡的算法方面还支持很多灵活的策略,同时还具有一些防火墙等安全功能。但是缺点也很明显,一个字:贵。

软件负载均衡是指使用软件的方式来分发和均衡流量。软件负载均衡分为7层协议 和 4层协议。

网络协议有七层,基于第四层传输层来做流量分发的方案称为4层负载均衡,例如 LVS;而基于第七层应用层来做流量分发的称为7层负载均衡,例如 Nginx。这两种在性能和灵活性上是有些区别的。

基于4层的负载均衡性能要高一些,一般能达到 几十万/秒 的处理量,而基于7层的负载均衡处理量一般只在 几万/秒 。

基于软件的负载均衡的特点也很明显,便宜。在正常的服务器上部署即可,无需额外采购,就是投入一点技术去优化优化即可,因此这种方式是互联网公司中用得最多的一种方式。

相关文章

  • nginx负载均衡

    1 nginx负载均衡 负载均衡在服务端开发中算是一个比较重要的特性, nginx 提供的负载均衡可以实现上游服务...

  • Ribbon客户端

    Ribbon Ribbon 是 Netflix 提供的一个基于Http和Tcp的客户段负载均衡工具 服务端负载均衡...

  • Nginx实现负载均衡

    Nginx实现负载均衡的原理: 负载均衡在服务端开发中算是一个比较重要的特性。因为Nginx除了作为常规的Web服...

  • Nginx实现负载均衡

    Nginx实现负载均衡的原理: 负载均衡在服务端开发中算是一个比较重要的特性。因为Nginx除了作为常规的Web服...

  • 负载均衡

    负载均衡可以分为服务端负载均衡和客户端负载均衡,服务端负载均衡完全由服务端负责,客户端不需要做任何事情。客户端负载...

  • 【Ribbon+Nginx】两者之间有什么区别

    Nginx属于服务端负载均衡,而Ribbon属于本地负载均衡。

  • 浅谈网络-负载均衡?CDN?

    对于服务端的开发者而言,“负载均衡”这个词听起来可能并不陌生,那么负载均衡是为了做什么的呢?这个负载均衡服务器最基...

  • Spring Cloud之RestTemplate 详解

    什么是客户端负载均衡 我们一般讲的负载均衡都是服务端的负载均衡,比如硬件负载均衡F5,软件负载均衡 Nginx. ...

  • ribbon

    1.Ribbon 2.客户端负载均衡 3.服务端的负载均衡 4.负载均衡算法

  • 深入Dubbo 源码解析 — 负载均衡LoadBalance

    技术点 面试中Dubbo负载均衡常问的几点 常见负载均衡算法简介 Dubbo 官方文档介绍 Dubbo 负载均衡的...

网友评论

      本文标题:深入了解开发即时通讯中的HTTP服务端负载均衡技术

      本文链接:https://www.haomeiwen.com/subject/wiffzrtx.html