前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >负载均衡

负载均衡

作者头像
battcn
发布2018-08-03 12:19:58
5.4K0
发布2018-08-03 12:19:58
举报
文章被收录于专栏:battcnbattcn

负载均衡,英文名Load Balance,作用是将操作分摊到多个执行单元上执行。随着如今网络流量的不断增大,服务的负载均衡是必须的,这里就来讲一讲负载均衡的结构。 说到负载均衡,同学最容易想到的可能就是nginx了,但是nginx只是其中的一层,而负载均衡从我们发送一个请求时可能就开始了,下面是一个负载均衡流程:

从用户发起一个请求,从DNS分流,到中间的反向代理,再到应用服务的分流等,经历了一层有一层,达到了服务水平拓展的目的,以应对目前庞大的数据流量。

DNS分流

DNS功能即指域名系统,在万维网中,我们访问他人服务,即是访问他人ip,但是ip不便于记忆,此时域名系统就出现了。通过域名与ip的相互映射,我们可以不用记忆ip,而是通过域名去访问目标服务,而DNS系统即是一个域名与ip地址相互映射的分布式数据库,我们访问域名是,经历了以下步骤:

域名与ip之间有映射关系,但是大多数情况下却不是一一对应的,我们可以将多个ip映射到同一个域名,因为用户是通过域名去进行访问的,具体访问哪个地址,则有DNS服务器的映射记录和一定的负载均衡算法来决定,用户拿到具体ip后再去访问,而这个过程对用户来说完全是透明的,通过DNS分流完成了第一步的负载均衡:

硬件分流

通过硬件设备,在网络流量进入服务之前进行流量的分流,通过各种策略,分散到不同的服务器。常见的如F5负载均衡器。

四层负载

四层负载主要是指OSI七层模型中,工作在第四次tcp层的负载均衡,主要是通过修改报文中的目标地址和端口,再加上一定的负载均衡策略,选择最终处理的服务器,如lvs。由此可以想到,其实还有二层负载和三层负载,通过虚拟mac地址或者虚拟ip地址来接收请求然后再分流到真实的mac地址或者ip地址。这几种负载方式都是不关心具体的上层协议,只负责修改数据的流向。

七层负载

七层负载也称“内容负载”,是根据具体的应用层内容,更加智能的选择具体内部服务。如更具请求的url信息等,选择具体的应用服务器来进行相应处理,如nginx。

客户端分流

前面的负载均衡除了DNS以外,都有一个点来分发具体的流量,我们称为服务器分流。当用户请求到达了真正的应用服务器以后,请求还会细分,而同一类的请求的服务可能还是集群,例如如今的微服务架构。这时可以使用应用框架来完成服务请求的分流,如dubbo以及springCloud的Ribbon组件等,这些由服务自己决定的分流方式称为客户端分流。

数据层分流

在应用服务器的背后,是数据层,各种缓存以及持久化数据库等。对于到达数据层的请求,我们也可以进行相应的负载均衡处理,如redis的主从读写分离集群、分片集群等,mysql的主从读写、分区分表分库等。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 battcn 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DNS分流
  • 硬件分流
  • 四层负载
  • 七层负载
  • 客户端分流
  • 数据层分流
相关产品与服务
负载均衡
负载均衡(Cloud Load Balancer,CLB)提供安全快捷的流量分发服务,访问流量经由 CLB 可以自动分配到云中的多台后端服务器上,扩展系统的服务能力并消除单点故障。负载均衡支持亿级连接和千万级并发,可轻松应对大流量访问,满足业务需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档