聊聊云计算:为什么构建网站时常会用到负载均衡

戳蓝字“CSDN云计算”关注我们哦!


作者:疯子程序员

来源

https://blog.csdn.net/qq_40196321/article/details/85075746 


640?wx_fmt=jpeg


负载均衡可以将客户端请求分摊到多个操作单元上进行处理


硬件负载均衡


负载均衡有很多种不同的实现方式,总的来说,可以分为硬件负载均衡与软件负载均衡两大类。


硬件负载均衡有很多设备商可以提供解决方案,比如NetScaler、F5、Array Networks等。硬件负载均衡的优势比较明显:有专业团队进行维护、性能好、且稳定可靠。


640?wx_fmt=jpeg


F5负载均衡器


但硬件负载均衡解决方案也有缺点,比如设备和服务费用昂贵,灵活性差,功能和容量都难以扩展。软件负载均衡相对来说,灵活性强,扩展起来更容易,所以软件负载均衡解决方案越来越受到青睐。


DNS负载均衡


软件负载均衡最早通过DNS来实现,即一个域名对应多个IP地址。在应答DNS查询时,DNS服务器对每个查询将以DNS文件中主机记录的IP地址按顺序返回不同的解析结果,将客户端的访问引导到不同的机器上去,使得不同的客户端访问不同的服务器,从而达到负载均衡的目的。


DNS负载均衡的解决方案原理比较简单,不过缺点也比较明显:


第一,不能够按照Web服务器的处理能力分配负载;


第二,DNS负载均衡技术没有考虑容错,即使某个服务器不可用,DNS仍然会把请求转发过去;


第三,一旦发现某个服务器出现故障,即使及时修改了DNS设置,但还是要等DNS刷新时间到了才能生效。


开源软件解决方案


后来出现了开源软件负载均衡的解决方案,最主流的就是LVS和Nginx。基于开源软件的负载均衡打破了硬件LB的垄断,降低了负载均衡的实施成本。


(1)LVS = Linux Virtual Server


LVS虚拟服务器,在1998年5月由章文嵩博士成立,是中国国内最早出现的自由软件项目之一。


LVS是把负载均衡的功能做到了Linux内核里面。LVS集群采用IP负载均衡技术和基于内容请求分发技术,将一组服务器构成一个高性能的、高可用的虚拟服务器。


整个服务器集群的结构对客户是透明的,客户访问集群系统提供的网络服务就像访问一台高性能、高可用的服务器一样,而且无需修改客户端和服务器端的程序。


(2)Nginx


Nginx是一个轻量级的Web服务器,同时也是一个反向代理服务器,可以利用其反向代理的功能做负载均衡。Nginx与LVS相比主要有以下几点不同:


与LVS在层四进行负载均衡不同,Nginx是在层7进行,可以针对Http应用进行分流;


转发策略也更灵活,比如可以针对域名或目录结构进行转发;


Nginx对网络的依赖比较小,理论上只要Ping得通,网页访问正常就能连通,而LVS比较依赖网络环境。


总的来说,Nginx的应用场合要更多一些,LVS则更适合节点比较多的大型系统。

基于云的负载均衡(Cloud Load Balance)


除了在云主机上自己利用LVS或Nginx搭建负载均衡服务器,阿里云、腾讯云等云计算服务商,均提供了专门的负载均衡服务,配置容易。这些服务商的负载均衡解决方案,往往是结合了层7与层4的综合负载均衡方案,而且还需要考虑VPC网络与物理网络的不同情况(关于VPC的概念,可以参考之前的文章,《聊聊云计算:VPC与VPN有什么关系》)。具体实现方案比较复杂,这里就不过多介绍了,反正会用就行。


640?wx_fmt=jpeg


基于负载均衡实现的典型的云服务架构


上图就是一个基于负载均衡的典型的云服务架构。在我们搭建互联网应用时,可能需要考虑服务器的承载能力,或者需要保障服务器可用性,避免出现单点故障,使用负载均衡就是一个基本操作,掌握了LB,我们的服务就更加稳定了。


推荐阅读

  • Spring-Data-JPA尝鲜:快速搭建CRUD+分页后台实例

  • 孟岩:区块链的原则与价值观

  • 嫁人当嫁程序员

  • 原子互换:一统公链江湖的神来之笔

  • 春晚鬼畜 B 站日排行最高,赵本山:我的时代还没有结束!

  • PDF翻译神器,再也不担心读不懂英文Paper了

  • 新闻联播也可以拿来做数据分析?



1.微信群:

添加小编微信:color_ld,备注“进群+姓名+公司职位”即可,加入【云计算学习交流群】,和志同道合的朋友们共同打卡学习!


2.征稿:

投稿邮箱:liudan@csdn.net;微信号:color_ld。请备注投稿+姓名+公司职位。

640?wx_fmt=png喜欢就点击“好看”吧!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524772.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

线程状态及停止

状态: new 就绪 运行 阻塞 死亡 停止: 不推荐jdk的stop(),destory();推荐线程自己停下来;设置标识位终止变量,当flagflase,线程终止 package com.wuming.state;public class TestStop implements Runnable{/*** When an o…

C语言 文件读写 feof 函数 - C语言零基础入门教程

目录 一.feof 函数简介二.feof 函数实战三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.feof 函数简介 feof 是 C 语言标准库函数,其功能是检测文件结束符,如果文件结束,则返回非 0 值,否则返…

要闻君说:阿里云联合8家芯片模组商推出“全平台通信模组”;北汽与小桔车服联合“京桔”;IBM要帮助印度公司打造5G战略!...

关注并标星星CSDN云计算每周三次,打卡即read更快、更全了解泛云圈精彩newsgo go go 嗨,大家好!偶是要闻君。盼望着、盼望着,放假的日子又临近了一步,抢先祝福各位看官们新年快乐哈!文/要闻君近日&#xff0…

多线程休眠

sleep(时间)线程阻塞毫秒数 sleep存在异常InterruptedException sleep时间达到后线程进入就绪状态 sleep可以模拟网络延时,倒计时 每一个对象都有一个锁,sleep不会释放锁 package com.wuming.state;import com.wuming.demo01…

C语言 文件读写 EOF - C语言零基础入门教程

目录 一.EOF 简介二.EOF 实战三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.EOF 简介 EOF 是 End Of File 的缩写,在 C 语言标准库中的定义如下: #define EOF (-1)在文本文件中,数据都是以字符的 ASC…

揭开容器的神秘面纱:帮助初学者深入了解容器技术

戳蓝字“CSDN云计算”关注我们哦!本文转载自:Docker 简介无论你是学生,还是公司的开发人员,或是软件爱好者,相信你都听说过容器。 你可能还听说容器是轻量级虚拟机,但这究竟意味着什么,容器究竟…

线程休眠2

package com.wuming.state;import java.text.SimpleDateFormat; import java.util.Date;//模拟倒计时 public class TestSleep2 {public static void main(String[] args) {/* try {tenDown();} catch (InterruptedException e) {e.printStackTrace();}*//* 109876…

C语言 文件读写 fseek 函数 - C语言零基础入门教程

目录 一.fseek 函数简介二.fseek 函数实战三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.fseek 函数简介 fseek 函数用来移动文件流的读写位置;就好比播放器,可以直接拖拽到精彩的时间点一样,fseek 函数…

微服务精华问答 | 微服务有什么优点和不足呢?

戳蓝字“CSDN云计算”关注我们哦!过去几年来,“微服务架构”这个术语出现了,它描述了一种将软件应用程序设计为可独立部署的服务套件的特定方式。尽管这种架构风格没有确切的定义,但围绕业务能力,自动化部署&#xff0…

C语言 文件读写 ftell 函数 - C语言零基础入门教程

目录 一.ftell 函数简介二.ftell 函数实战三.ftell 函数经典使用四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.ftell 函数简介 C 语言函数 ftell 用于得到文件位置指针当前位置相对于文件首的偏移字节数,ftell 函数声明如下&a…

线程礼让详细讲解

礼让线程,让正执行的线程停止,但不阻塞 将线程从运行状态转为就绪状态 让cpu重新调度,礼让不一定成功,看cpu心情 package com.wuming.state;public class TestYield {public static void main(String[] args) {MyYield myYield…

C语言 文件读写 fgetc 函数 - C语言零基础入门教程

目录 一.fgetc 函数简介二.fgetc 函数使用三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.fgetc 函数简介 fgetc 函数用于从文件流中读取一个字符&#xff0c;其原型为&#xff1a; #include <stdio.h> #include <stdlib.h> /…

Gartner预测2019年全球IT支出将达到3.8万亿美元

戳蓝字“CSDN云计算”关注我们哦&#xff01;【2019年1月29日】全球领先的信息技术研究和顾问公司Gartner表示&#xff0c;2019年全球IT支出将达到3.76万亿美元&#xff0c;较2018年增长3.2%。Gartner研究副总裁John-David Lovelock表示&#xff1a;“尽管经济衰退传闻、英国脱…

多线程join,强制执行完

想象成插队 package com.wuming.state; //测试join public class TestJoin implements Runnable{/*** When an object implementing interface <code>Runnable</code> is used* to create a thread, starting the thread causes the objects* <code>run<…

C语言 文件读写 fputc 函数 - C语言零基础入门教程

目录 一.fputc 函数简介二.fputc 函数使用三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.fputc 函数简介 fputc 函数是将字符 c 写到文件指针 stream 所指向的文件的当前写指针的位置&#xff0c;声明如下&#xff1a; #include <stdi…

多线程观测状态

package com.wuming.state;import org.omg.PortableInterceptor.SYSTEM_EXCEPTION;//观察测试线程的状态 public class TestState {public static void main(String[] args) throws InterruptedException {Thread thread new Thread(() -> {for (int i 0; i < 5; i) {t…

4个最受欢迎的大数据可视化工具!

戳蓝字“CSDN云计算”关注我们哦&#xff01;想像阅读书本一样阅读数据流&#xff1f;这只有在电影中才有可能发生。 在现实世界中&#xff0c;企业必须使用数据可视化工具来读取原始数据的趋势和模式。大数据可视化是进行各种大数据分析解决的最重要组成部分之一。 一旦原始数…

C语言 文件读写 fgets 函数 - C语言零基础入门教程

目录 一.fgets 函数简介二.fgets 函数使用三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.fgets 函数简介 fgets 函数功能为从指定的流中读取数据&#xff0c;每次读取一行。其原型为: #include <stdio.h> #include <stdlib.h>…

边缘计算与物联网精华问答 | 边缘计算和物联网有什么关系?

戳蓝字“CSDN云计算”关注我们哦&#xff01;随着物联网时代到来&#xff0c;云计算平台将面临着海量设备接入、海量数据等高难度挑战,这使得云计算中心实时返回数据决策也变成了不可能的任务。于是&#xff0c;边缘计算开始进入到公众的视线。1Q&#xff1a;边缘计算和物联网有…

C语言 文件读写 fputs 函数 - C语言零基础入门教程

目录 一.fgets 函数简介二.fgets 函数使用三.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.fgets 函数简介 fgets 函数功能为从指定的流中读取数据&#xff0c;每次读取一行。其原型为: #include <stdio.h> #include <stdlib.h>…