一、什么是负载均衡?

负载均衡的作用:把不同的客户端的请求(C/S和B/S架构)通过负载均衡策略分配到不同的服务器集群上去。

二、负载均衡的工作方式?

负载均衡的工作方式:通过更改请求的目的地址对请求进行转发,在服务器返回数据包的时候更改返回数据包的源地址,来保证客户端请求的目的和返回的包是同一个地址。

三、负载均衡设计的三要素?

负载均衡设计的三个要素:分发策略、会话保持和服务器健康检查

3.1 分发策略:即负载均衡设备根据什么样的策略把请求分发到不同的后台服务器,最简单的算法就是轮询,把用户的请求依次分配到服务器上

3.2 会话保持:在大部分的应用中都会涉及到服务器的session控制,而且这些session通常不会再服务器之间进行复制的,也就是说一个用户在登录的时候,如果分配到了某一台服务器上,则最基本的要求就是这个用户后续的请求都分配到这台服务器上,如果分配到其他的服务器上则可能不认识这个用户的请求,而造成请求失败。最简单的会话保持策略是源地址会话保持,也就是负载均衡设备认为同一个源地址过来的所有请求都是发自于用一个客户端,在源地址会话保持的情况下,下一个客户端的第一个请求会按照负载均衡的策略进行分配,一旦分配了一台服务器之后,后续的请求都会发到这台服务器,当然对于一些应用如新闻、图片、等静态的内容就不需要会话保持了。

3.3 健康检查:负载均衡设备必须检测后台服务器是否正常工作,如果发现某一台服务器出现了故障,则需要把这台服务器从负载均衡组里摘掉,当故障服务器恢复服务的时候,在把服务器重新加入到负载均衡组里进行处理。

四、负载均衡的负载方式?

4.1 四层负载均衡:就是以tcp的一个连接为最小单位,也就是以一个socket连接的最小单位来进行转发,在一个socket里面跑了多少个交易和负载均衡无关,常见的如tcp四层端口负载。

4.2 七层负载均衡:负载均衡设备可以按照协议识别每一笔交易,并以每个交易为最小单位进行转发,比如在一个http1.1的连接中可以包含多个request/response,四层负载均衡一旦确定第一个连接的分配后,就不能对后续的request/response进行后续处理了,而七层负载均衡处理能把每一个http request/response分别进行处理。

五、负载均衡的比较?

f5和nginx的对比:nginx是一款软件的负载均衡,优点基于特定环境、配置简单、使用灵活、成本低廉,可以满足大部分的负载均衡需求,对网络依赖性比较小,但是nginx不支持Session的保持、对Big request header的支持不是很好,另外默认的只有Round-robin和IP-hash两种负载均衡算法。f5是一款硬件的负载均衡,处理能力更强,而且与系统无关,支持12种灵活的算法将所有流量均衡的分配到各个服务器,而面对用户,只是一台虚拟服务器,f5具有动态Session的会话保持功能,f5的iRules功能可以做HTTP内容过滤,根据不同的域名、URL,将访问请求传送到不同的服务器,并且还可以做网络出口的链路负载均衡,但是f5成本比较高,最便宜的都要十几万一台,如果公司是开矿的,不考虑成本,那可以优先考虑硬件负载均衡把他作为处理外界请求的第一道“墙”,将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问本地门户,动态数据则通过反向代理指向内网服务。

六、负载均衡简单实现方式?

6.1 DNS负载均衡:通过DNS协议实现,对于同一个域名,DNS可以同时提供多个ip地址对应,浏览器会选择第一个地址发出请求,而多个dns地址在local dns返回给客户端的时候会轮询返回,所以不同的用户得到的第一个地址是不一样的,因此,对一个域名提供多个地址可以实现负载均衡的效果。另一种dns负载均衡的方式是dns服务器判断客户端local dns的源地址,根据不用的源地址返回不同的ip地址和域名对应,比如来源是联通,就返回联通的服务器地址,来源是电信,就返回电信的服务器地址,这样也能实现负载均衡的效果。

6.2 重定向负载均衡:一些协议比如http是可以支持重定向的,负载均衡设备通过算法决定用户的请求应该去某台服务器的时候,就返回一个302重定向指令使用户重新发送一个请求到目的服务器,这样实现负载均衡。

七、访问优化分为两部分,客户端优化和服务端优化:

客户端优化:主要是优化客户端的访问速度,可以通过以下几种技术手段:

7.1 多并发连接:默认情况下,ie7.0以下或者Firefox对于同一个域名或地址,都只会用两个tcp连接访问网站,当一个网站上有几十个对象(js,css,jpg,gif等),这些对象就都会在两个tcp连接中按照request/response方式依次下载,在局域网没什么感觉,但一到了广域网环境下,由于广域网延迟就会造成tcp传输效率急剧下降(因为延迟在每一次数据包的传输过程中都会被加入),解决办法就是使用多个域名来下载这些对象,即使这些域名都对应同一个ip,浏览器也会并发多个连接同时去下载对象,这也是flashget,网络蚂蚁下载东西比单独ie下载速度快的一个主要原因。

7.2 http压缩,大部分的浏览器,比如ie和Firefox都可以支持gzip和deflat两种协议的解压缩,而http的页面内容大部分都是以明文,所以,把服务器返回的内容进行压缩后,传输给客户端,客户端在进行解压缩,通常情况下,压缩比可以到1:5,也就是100k的页面可以压缩到20k,这样,在网络传输的数据量就小了很多,客户端打开页面的速度也快了许多。

7.3 cdn技术,将内容推送到客户端比较近的地方,因此可以加快客户端的页面打开速度,同时降低服务器的压力

服务端的优化:主要是减轻服务器的压力

7.4 cache技术,通过大量的内存cache服务器,可以有效的降低后台服务器的压力,避免将业务服务器直接暴露在前端,专门设计的cache服务器常具有比较常规的web服务器更好的处理性能

7.5 在一些商业版本的负载均衡设备中,还提供了连接优化,也就是把很多个客户端的tcp连接聚合成少量的tcp连接到后台服务器,这样后台服务器就不用频繁开启和关闭tcp连接了,从而达到降低服务器cpu占用率的目的,ssl硬件加解密技术,可以直接通过硬件ssl芯片进行ssl加解密的工作,其他还有一些功能就不在这讨论了

7.6 tcp层面优化:主要通过调整服务器内核的tcp堆栈参数实现,在新的linux版本包括Windows server2008里面都有很多tcp堆栈参数调整项,默认值不一定是最好的,有些时候通过一些调整能对应用系统有很大的帮助。

想要学习Dubbo框架、zookeper基本原理、redis分布式缓存、JVM性能优化,Nginx+apache+Tomcat集群部署、大数据hadoop,Hbase实时计算spark、storm、数据分析分词和权重等核心技术;需要的可以关注之后私信哈,记得要点赞转发噢!!!

一线互联网企业负载均衡和应用优化基础相关推荐

  1. 负载均衡和应用优化基础

    一.什么是负载均衡? 负载均衡的作用:把不同的客户端的请求(C/S和B/S架构)通过负载均衡策略分配到不同的服务器集群上去. 二.负载均衡的工作方式? 负载均衡的工作方式:通过更改请求的目的地址对请求 ...

  2. 【笔记-面试】《imooc -前端跳槽面试技巧》、《imooc- 揭秘一线互联网企业 前端javaScript高级面试》、《imooc-前端javascript面试技巧》

    20190204:<imooc -前端跳槽面试技巧> 第01章 课程介绍 01-01 课程导学 一.一面知识点 1.面试技巧 页面布局类 2.css盒模型dom事件类 3.http协议类 ...

  3. android架构师路线图,一线互联网企业资深架构师成长路线图

    前言 时间飞逝,已经从事 Android 开发十几年了.我在想,也是时候将自己的 Android 整理成一套体系,出了一张一线互联网企业资深架构师成长路线脑图,可以关注我的简书,查看更多文章 写这一套 ...

  4. Android应用开发进阶,一线互联网企业高级Android工程师面试题大全

    2.7 Volley 2.7.1 Volley的工作流程 2.7.2 Volley的使用 2.7.3 Volley的封装 2.7.4 Volley源码分析 2.8 RxJava 2.8.1 RxJav ...

  5. 网络爬虫:采用“负载均衡”策略来优化网络爬虫

    前言: 这里说的负载均衡并非大家熟悉的网络中的负载均衡. 只是这里我使用了和负载均衡同样的一种思维来优化程序罢了,其实就是压力分摊. 问题描述: 对于上一篇<分离生产者和消费者来优化爬虫程序&g ...

  6. 传统负载均衡助力AIOps优化智能运维

    摘要:如今AIOps已经比较火热,然而整个行业仍都处于探索的初级阶段,针对预感未来的运维需求需要通过AI进行解决,如何将传统的IT架构改造成智能运维的架构更值得人们思考.本文主要对传统业务的变化.应用 ...

  7. Nginx正向代理、反向代理、负载均衡及性能优化

    一.Nginx是什么 Nginx是一款高性能的 HTTP 和反向代理服务器,由俄罗斯人Igor Sysoev(伊戈尔·赛索耶夫)为俄罗斯网站Rambler.ru开发的,在Rambler.ru网站平稳的 ...

  8. 继续Nginx WRR负载均衡算法的优化

    温州皮鞋厂老板告诉我一个新的WRR算法,基于数组哈希,但还是有点过度设计了,我说对于3,2,1这样权重的3个元素,搞3个元素1,2个元素2,1个元素3,一共6个元素揉成一把,随机扔到6个格子里完事,只 ...

  9. 基于阿里的Node全栈之路(二)阿里负载均衡的HTTPS优化方案

    很多时候,我们习惯了自己做负载均衡,自己部署nginx,甚至是自己在代码里实现https.没错这些还是蛮能锻炼动手能力的,但重复造轮子这个话题- 我的主题都是基于阿里云,所以默认各位看官都是用了阿里云 ...

  10. 一线互联网企业面试题总结(帮你成功拿到offer)

    > 面试题附带答案 1. junit用法,before,beforeClass,after, afterClass的执行顺序 2. 分布式锁 3. nginx的请求转发算法,如何配置根据权重转发 ...

最新文章

  1. 转 DevExpress-ASPxPageControl 动态添加 TabPage 内容
  2. mysql qps计算方法_mysql计算 TPS,QPS 的方式
  3. 周志华机器学习课后习题解析【第二章】
  4. vuepc端实现数据加载_多模态注意力机制+多模态数据,完全实现端到端课堂活动检测|ICASSP 2020...
  5. 天然气阶梯是按年还是按月_按年算账 多退少补 你的年度个税应该是怎么算?...
  6. ArcGis连接oracle失败:ORA-6413:连接未打开
  7. 值得关注!2021音视频人才成长路线图发布了
  8. Android-7.0-Nuplayer-启动流程
  9. GB-T 15834-2011《标点符号用法》下载链接
  10. SVN客户端和中文包的安装
  11. ccna视频教程 红头发讲解
  12. 谐振放大器工作点和阻抗
  13. Redis详细使用文档记录
  14. 减轻使用者的从众心理压力 知名社群网站将隐藏赞数
  15. Google Kick Start 2019 C轮 题解
  16. OAuth 2.0 授权认证详解
  17. uniapp打包之后首页白屏
  18. 猜数字游戏 由计算机,猜数字游戏玩法
  19. PyTorch 和 TensorFlow的区别
  20. N子棋(外加双人对战)详解!推荐!!!

热门文章

  1. 只管认真,有计划的坚持,剩下的交给时间
  2. 第一次Spring总结
  3. 局域网内手机访问电脑网站注意几点
  4. 写在2013年最后一天
  5. STL 算法罗列 (转)
  6. 【不积跬步,无以致千里】DELETE SINGLE IPTABLES RULES
  7. CAM(内容可寻址存储器)的认知
  8. javascript教程现有Web App模式的问题以及挑战
  9. 程序名称:ROS强开首页(类似电信ADSL强开指定首页)
  10. 移动磁盘连接电脑后,仅有“只读”权限解决方案