负载均衡

负载均衡,英文名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的主从读写、分区分表分库等。

原文发布于微信公众号 - battcn(battcn)

原文发表时间:2018-07-10

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏老付的网络博客

博客添加浮动目录

一直都想给自己的博客添加一个浮动的目录,在网上也找也几个,从易用性方面都不是太理想,所以今天才有了想法自己去写一个插件 。

15020
来自专栏FreeBuf

利用Wireshark任意获取QQ好友IP实施精准定位

虽然网上已经有了很多获取IP的qq插件,但是其原理大致都是相同的,但是插件的安全性而言就不敢恭维了,下面介绍如何利用wireshark获取好友ip。 一、打开w...

1.2K30
来自专栏杨建荣的学习笔记

运维中的接入管理梳理

数据库层的接入可以提炼出DAO层,通过工厂模式来提供灵活的配置接入,这会是一个通用的接口,同时其他数据库的接入也可以通过这种方式带来接入,提炼的结果就是...

10120
来自专栏静下来

linux nginx开启php具体错误信息显示

image.png 感觉自己用linux nginx环境做的网站还很少遇到500错误的,可能都是自己熟悉的吧。 最近接触微擎和人人商城,就遇到了几次。。。可能是...

34060
来自专栏跟着阿笨一起玩NET

C#轻量级高性能日志组件EasyLogger(六)

35120
来自专栏Java帮帮-微信公众号-技术文章全总结

Java在游戏服务器开发中应用【面试+提高】

Java在游戏服务器开发中的应用 随着游戏市场的兴起,特别是网页游戏、手机游戏的崛起,对游戏开发技术的需求越来越多。网络游戏开发是一个庞大的体系,总体来说是客户...

674110
来自专栏架构师小秘圈

亿级浏览型网站静态化架构演变

作者徐昭,花名长恭,主要负责天猫详情系统的架构优化工作。毕业于浙江大学计算机专业,热爱Java Web技术,多关注服务端性能优化,热衷开源技术的研究和分享。 在...

38750
来自专栏云主机管理

海外SSH加速小工具分享

最近自己需要管理位于海外的云服务器,但是经常碰到SSH登录反应慢、执行命令有延迟等问题。此外,传输文件速度非常慢,有时候还会失败。(╯‵□′)╯︵┻━┻

68500
来自专栏FreeBuf

十大跨浏览器测试工具

在多个平台上测试多种浏览器不但是很困难的 – 它几乎不可能的,因为没有那些好的测试工具。今天,我们就为大家提供很多涉及到跨浏览器测试的选择,并且告诉你那些“顶级...

24060
来自专栏微信小程序开发

小程序view中的节点数最多是多大?

前言:做前端开发的同学,都遇到过页面节点过多,从而导致页面加载很慢,或者浏览器直接崩溃~ ? 在小程序开发中,下拉刷新数据的用法应该比较多,那么小程序页面节点最...

60380

扫码关注云+社区

领取腾讯云代金券