Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >腾讯的负载均衡和自己搭建的有什么不同

腾讯的负载均衡和自己搭建的有什么不同

原创
作者头像
用户8639654
修改于 2021-08-06 06:20:46
修改于 2021-08-06 06:20:46
1K0
举报
文章被收录于专栏:云计算运维云计算运维

腾讯云负载均衡点击即用,但是传统的负载均衡需要搭建,下面我们一起来了解一下传统的负载均衡吧

这个问题其实很难,涉及到 HTTP,TCP,网关,LVS 等一系列相关的概念及工作机制,如果你能掌握到这其中的每个知识点,那将极大地点亮你的技能树,你对于网络是如何运作也会了然于胸,即便不能完全掌握,但知道流量怎么流转的对你排查定位问题会大有帮助,我之前就利用这些知识定位到不少问题,为了弄清楚整个流程,我查阅了很多资料也请教了不少人,相信应该可以把这个问题讲明白,不过写着写着发现篇幅实在太长,所以分为上下两篇来分别介绍一下,本篇先介绍流量在后端的的整体架构图,下一篇会深入剖析细节点,如 LVS 的工作细节,这其中会涉及到交换机,路由器的工作机制等

李大牛创业了,由于前期没啥流量,所以他只部署了一台 tomcat server,让客户端将请求直接打到这台 server 上

这样部署一开始也没啥问题,因为业务量不是很大,单机足以扛住,但后来李大牛的业务踩中了风口,业务迅猛发展,于是单机的性能逐渐遇到了瓶颈,而且由于只部署了一台机器,这台机器挂掉了业务也就跌零了,这可不行,所以为了避免单机性能瓶颈与解决单点故障的隐患,李大牛决定多部署几台机器(假设为三台),这样可以让 client 随机打向其中的一台机器,这样就算其中一台机器挂了,另外的机器还存活,让 client 打向其它没有宕机的机器即可

现在问题来了,client 到底该打向这三台机器的哪一台呢,如果让 client 来选择肯定不合适,因为如果让 client 来选择具体的 server,那么它必须知道有哪几台 server,然后再用轮询等方式随机连接其中一台机器,但如果其中某台 server 宕机了,client 是无法提前感知到的,那么很可能 client 会连接到这台挂掉的 server 上,所以选择哪台机器来连接的工作最好放在 server 中,具体怎么做呢,在架构设计中有个经典的共识:没有什么是加一层解决不了的,如果有那就再加一层,所以我们在 server 端再加一层,将其命名为 LB(Load Balance,负载均衡),由 LB 统一接收 client 的请求,然后再由它来决定具体与哪一个 server 通信,一般业界普遍使用 Nginx 作为 LB

采用这样的架构设计总算支撑了业务的快速增长,但随后不久李大牛发现这样的架构有点问题:所有的流量都能打到 server 上,这显然是有问题的,不太安全,那能不能在流量打到 server 前再做一层鉴权操作呢,鉴权通过了我们才让它打到 server 上,我们把这一层叫做网关(为了避免单点故障,网关也要以集群的形式存在)

作者:码海 链接:https://www.zhihu.com/question/61783920/answer/2023377962 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

这样的话所有的流量在打到 server 前都要经过网关这一层,鉴权通过后才把流量转发到 server 中,否则就向 client 返回报错信息,除了鉴权外,网关还起到风控(防止羊毛党),协议转换(比如将 HTTP 转换成 Dubbo),流量控制等功能,以最大程度地保证转发给 server 的流量是安全的,可控的。

这样的设计持续了很长一段时间,但是后来李大牛发现这样的设计其实还是有问题,不管是动态请求,还是静态资源(如 js,css文件)请求都打到 tomcat 了,这样在流量大时会造成 tomcat 承受极大的压力,其实对于静态资源的处理 tomcat 不如 Nginx,tomcat 每次都要从磁盘加载文件比较影响性能,而 Nginx 有 proxy cache 等功能可以极大提升对静态资源的处理能力。

画外音:所谓的 proxy cache 是指 nginx 从静态资源服务器上获取资源后会缓存在本地的内存+磁盘中,下次请求如果命中缓存就从 Nginx 本机的 Cache 中直接返回了

所以李大牛又作了如下优化:如果是动态请求,则经过 gateway 打到 tomcat,如果是静态请求,则打到静态资源服务器上

这就是我们所说的动静分离,将静态请求与动态请求分开,这样 tomcat 就可以专注于处理其擅长的动态请求,而静态资源由于利用到了 Nginx 的 proxy cache 等功能,后端的处理能力又上了一个台阶。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
你管这破玩意儿叫负载均衡?
相信大家都听过这样的一道经典面试题:「请说出在淘宝网输入一个关键词到最终展示网页的整个流程,越详细越好」
kunge
2021/07/16
6080
20张图让你彻底掌握负载均衡的秘密!
前言 今天我们来深度揭秘一下负载均衡器 LVS 的秘密,相信大家看了你管这破玩意儿叫负载均衡?这篇文章后,还是有不少疑问,比如 LVS 看起来只有类似路由器的转发功能,为啥说它是四层(传输层)负载均衡
kunge
2021/09/07
8830
nginx之静态资源访问和负载均衡的使用!
最近空闲时间稍微少了点,晚上下班一般会看会书,所以更新也就没有那么快了!这不最近在看之前买的书籍(今年真的要多看点书籍):
用户6280468
2022/03/21
6550
nginx之静态资源访问和负载均衡的使用!
FastDFS蛋疼的集群和负载均衡(十二)之浅谈负载均衡
Interesting things 学习负载均衡技术。 What did you do today 什么是负载均衡? 一台普通服务器的处理能力是有限的,假如能达到每秒几万个到几十万个请求,
用户2032165
2018/06/05
1.3K0
如何搭建Nginx服务器做到负载均衡?
小白,这是一篇关于:使用tomcat和Nginx进行配合做负载均衡和静态与动态资源分配的文章,春招前学一下~ 好的,大佬! 1.什么是Nginx? Nginx也是一款服务器,我们常用它做:如反向代理、负载均衡、动态与静态资源的分离的工作 反向代理:相对应的是正向代理,如果你使用过代理服务器的话就明白,我们访问某一个网站并非直接访问目标网站,而是告诉代理服务器我需要访问什么目标网站,由代理服务器发出请求给目标网站,将目标网站访问结果再转发给你,此时,你是请求代理方。而反向代理是此时代理服务器做服务器的
企鹅号小编
2018/01/16
1.4K0
如何搭建Nginx服务器做到负载均衡?
Nginx 除了负载均衡,还能做什么?
本文只针对 Nginx 在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过的。
好好学java
2021/03/29
4730
腾讯云公网负载均衡技术实现详解
朱彬峰
2017/04/23
23.4K4
腾讯云公网负载均衡技术实现详解
nginx之负载均衡
主要使用的是nginx的http模块来实现两台或多台http服务器的负载均衡,配置为:
山行AI
2019/07/16
1.4K0
nginx之负载均衡
​dubbo 负载均衡
负载均衡是一种计算机的技术,用来在多个计算机集群、网络连接、CPU、磁碟驱动器或其他资源中分配负载,以达到最佳化资源使用、最大化吞吐率、最小化响应时间、同时避免过载的目的。 使用带有负载平衡的多个伺服器组件,取代单一的组件,可以通过冗余提高可靠性。负载平衡服务通常是由专用软件和硬件来完成。 主要作用是将大量作业合理地分摊到多个操作单元上进行执行,用于解决互联网架构中的高并发和高可用的问题。
mySoul
2020/06/16
6410
nginx实现负载均衡和动静分离
这篇文章主要为大家详细介绍了nginx实现负载均衡和动静分离,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
菲宇
2019/06/12
5290
什么是负载均衡?
我解释道:LB 它可不是活人,而是目前企业开发中常用的技术 —— 负载均衡,下面让我给你讲讲吧!
程序员鱼皮
2023/09/06
2920
什么是负载均衡?
负载均衡详解
面对大量用户访问、高并发请求,海量数据,可以使用高性能的服务器、大型数据库,存储设备,高性能Web服务器,采用高效率的编程语言比如(Go,Scala)等,当单机容量达到极限时,我们需要考虑业务拆分和分布式部署,来解决大型网站访问量大,并发量高,海量数据的问题。 从单机网站到分布式网站,很重要的区别是业务拆分和分布式部署,将应用拆分后,部署到不同的机器上,实现大规模分布式系统。分布式和业务拆分解决了,从集中到分布的问题,但是每个部署的独立业务还存在单点的问题和访问统一入口问题,为解决单点故障,我们可以采取冗余
用户1263954
2018/01/30
3.3K0
负载均衡详解
Nginx+Tomcat实现动静分离、负载均衡
什么是动静分离 为了提高网站的响应速度,减轻程序服务器(Tomcat,Jboss等)的负载,对于静态资源比如图片,js,css等文件,我们可以在反向代理服务器中进行缓存,这样浏览器在请求一个静态资源时,代理服务器就可以直接处理,而不用将请求转发给后端服务器。用户请求的动态文件比如servlet,jsp则转发给Tomcat,Jboss服务器处理,这就是动静分离。这也是反向代理服务器的一个重要的作用。 本文的动静分离主要是通过nginx+tomcat来实现,其中nginx处理图片、html、JS、CSS等静态文
老七Linux
2018/05/09
2.4K0
使用Nginx实现负载均衡[通俗易懂]
负载均衡:分摊到多个操作单元上进行执行,和它的英文名称很匹配。就是我们需要一个调度者,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡。 负载均衡这里面涉及的东西相对也是比较多的,理论就不说太多了,网上,书上很多,今天我们就利用Nginx服务器来实现一个简单的负载均衡
全栈程序员站长
2022/08/03
1.3K0
使用Nginx实现负载均衡[通俗易懂]
5 分钟学会 Nginx 负载均衡
访问 http://localhost:8081/ , nginx 已经能把请求正常打到 node 9000 端口的服务了
用户3806669
2021/07/06
4600
5 分钟学会 Nginx 负载均衡
Nginx反向代理、动静分离和负载均衡
Nginx通常被用作后端服务器的反向代理,这样就可以很方便的实现动静分离,以及负载均衡,从而大大提高服务器的处理能力。
IT大咖说
2019/11/23
1K0
LVS+Keepalived+Nginx+ web 四七层负载及高可用集群构建
之前我们介绍了四层负载均衡LVS,七层负载均衡HAProxy 和 Nginx,以及keepalived,heartbeat 搭建高可用集群。今天我们就结合之前讲过的内容搭建一个四七层负载均衡(LVS+Nginx)以及高可用(keepalived)的集群。
小土豆Yuki
2020/06/19
1.9K0
LVS+Keepalived+Nginx+ web 四七层负载及高可用集群构建
再谈负载均衡
上周发的一篇负载均衡的文章有一个点不少人(统计了下在其他平台及上篇文章留言中大概有 8 人留言不解)有疑问,所以我觉得有必要单独写篇文章解释一下,先看下上篇文章展示的架构图
kunge
2021/08/10
5930
Nginx负载均衡中后端节点服务器健康检查的操作梳理
正常情况下,nginx做反向代理,如果后端节点服务器宕掉的话,nginx默认是不能把这台realserver踢出upstream负载集群的,所以还会有请求转发到后端的这台realserver上面,这样势必造成网站访问故障。虽然nginx可以在localtion中启用proxy_next_upstream来解决返回给用户的错误页面,如下: 例如公司的网站访问的时候全部变成404页面,最后发现是后端的一台服务器不可用,直接访问那台后台的服务器的时候,返回的是404页面,因为upstream 里面设置了ip_ha
洗尽了浮华
2018/01/23
4.8K0
Nginx负载均衡的详细配置及使用案例详解.
感谢看过这一些列博文和评论的小伙伴, 我把自己所看到的学到的拿到这里来分享是想和大家一起学习进步, 想听听园友给出的意见, 也是对自己学习过程的一个总结.  技术无止境, 我们仍需努力! 1,话不多
一枝花算不算浪漫
2018/05/18
1.5K0
相关推荐
你管这破玩意儿叫负载均衡?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档