大家好,我是IT修真院武汉分院第13期的学员石奥林,一枚正直纯洁善良的JAVA程序员

今天给大家分享一下,修真院官网JAVA任务6,深度思考中的知识点——什么是负载均衡,为什么要做负载均衡?

PPT链接:葵花宝典

什么是负载均衡以及为什么要做负载均衡?_腾讯视频

1.背景介绍

在网站创立初期,我们一般都使用单台机器对台提供集中式服务,但是随着业务量越来越大,无论是性能上还是稳定性上都有了更大的挑战。这时候我们就会想到通过扩容的方式来提供更好的服务。我们一般会把多台机器组成一个集群对外提供服务。然而,我们的网站对外提供的访问入口都是一个的,比如www.taobao.com。那么当用户在浏览器输入www.taobao.com的时候如何将用户的请求分发到集群中不同的机器上呢,这就是负载均衡在做的事情。

针对以上情况的解决方案:

(1) 服务器进行硬件升级:采用高性能服务器替换现有低性能服务器。 该方案的弊端:

高成本:高性能服务器价格昂贵,需要高额成本投入,而原有低性能服务器被闲置,造成资 源浪费。

可扩展性差:每一次业务量的提升,都将导致再一次硬件升级的高额成本投入,性能再卓越 的设备也无法满足当前业务量的发展趋势。

无法完全解决现在网络中面临的问题:如单点故障问题,服务器资源不够用问题等。

(2) 组建服务器集群,利用负载均衡技术在服务器集群间进行业务均衡。

该方案的优势: 低成本

可扩展性:当业务量增长时,系统可通过增加服务器来满足需求,且不影响已有业务,不降 低服务质量

高可靠性:单台服务器故障时,由负载均衡设备将后续业务转向其他服务器,不影响后续业 务提供,保证业务不中断。

2.知识剖析

负载均衡原理

系统的扩展可分为纵向(垂直)扩展和横向(水平)扩展。纵向扩展,是从单机的角度通过增加硬件处理能力,比如CPU处理能力,内存容量,磁盘等方面,实现服务器处理能力的提升,不能满足大型分布式系统(网站),大流量,高并发,海量数据的问题。因此需要采用横向扩展的方式,通过添加机器来满足大型网站服务的处理能力。比如:一台机器不能满足,则增加两台或者多台机器,共同承担访问压力。这就是典型的集群和负载均衡架构:如下图:

层负载均衡:
四层负载均衡工作在OSI模型的传输层,由于在传输层,只有TCP/UDP协议,这两种协议中除了包含源IP、目标IP以外,还包含源端口号及目的端口号。四层负载均衡服务器在接受到客户端请求后,以后通过修改数据包的地址信息(IP+端口号)将流量转发到应用服务器。

七层负载均衡:
七层负载均衡工作在OSI模型的应用层,应用层协议较多,常用http、radius、dns等。七层负载就可以基于这些协议来负载。这些应用层协议中会包含很多有意义的内容。比如同一个Web服务器的负载均衡,除了根据IP加端口进行负载外,还可根据七层的URL、浏览器类别、语言来决定是否要进行负载均衡。

应用集群:将同一应用部署到多台机器上,组成处理集群,接收负载均衡设备分发的请求,进行处理,并返回相应数据。

负载均衡设备:将用户访问的请求,根据负载均衡算法,分发到集群中的一台处理服务器。(一种把网络请求分散到一个服务器集群中的可用服务器上去的设备)

负载均衡的作用:

1.解决并发压力,提高应用处理性能(增加吞吐量,加强网络处理能力);

2.提供故障转移,实现高可用;

3.通过添加或减少服务器数量,提供网站伸缩性(扩展性);

4.安全防护;(负载均衡设备上做一些过滤,黑白名单等处理)

负载均衡分类:

根据实现技术不同,可分为DNS负载均衡,HTTP负载均衡,IP负载均衡,反向代理负载均衡、链路层负载均衡等。

负载均衡算法:

轮询、 随机、最少链接、Hash(源地址散列)、加权

硬件负载均衡:

采用硬件的方式实现负载均衡,一般是单独的负载均衡服务器,价格昂贵,一般土豪级公司可以考虑,业界领先的有两款,F5和A10。

价格:F5, 15w~55w不等;A10, 55w-100w不等。

优点:功能全面支持各层级的负载均衡,支持全面的负载均衡算法,支持全局负载均衡。一般软件负载均衡支持到5万级并发已经很困难了,硬件负载均衡可以支持。商用硬件负载均衡稳定性高,具备防火墙,防DDOS攻击等安全功能,提供售后支持。

3.常见问题

怎么配置负载均衡?

4.解决方案

1.部署至少两台服务器,我选择在本地部署一台jetty、一台tomcat。

2.在nginx.conf配置文件中http括号内添加如下配置:

upstream  local_tomcat {

server    localhost:8088;

server    localhost:8089;}

server{

location / {

proxy_pass http://local_tomcat;}}

3.在hosts文件中添加解析域名

127.0.0.1     local_tomcat

5.扩展思考

什么是反向代理负载均衡?

6.更多讨论

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器,该服务器就可称之为代理服务器。由于代理服务器处在最终处理请求访问的服务器之前,因此可以在代理服务器上做负载均衡。

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

------------------------------------------------------------------------------------------------------------------------

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。快来与我一起学习吧~

什么是负载均衡,为什么要做负载均衡?相关推荐

  1. nginx做负载均衡 tomcat获得客户端真实ip

    转 http://www.cnblogs.com/netsa/p/6985990.html 因项目需要做tomcat2台机器的负载均衡,配置好负载环境后,发现tomcat的日志一律是我前置nginx代 ...

  2. haproxy负载均衡_做负载均衡Nginx、HAProxy和LVS总有一个适合你

    Nginx Nginx优点: 1.工作在网络7层之上,可针对http应用做一些分流的策略,如针对域名.目录结构,它的正规规则比HAProxy更为强大和灵活,所以,目前为止广泛流行. 2.Nginx对网 ...

  3. Nginx做负载均衡报:nginx: [emerg] could not build the types_hash

    环境:KVM/Centos6.3 用Nginx做负载均衡的时候在配置完成后,启动Nginx的时候报: nginx: [emerg] could not build the types_hash, yo ...

  4. RabbitMq集群使用Nginx做负载均衡

    2019独角兽企业重金招聘Python工程师标准>>> 1.配置rabbitmq集群(可以参考前一篇RabbitMq之部署集群) 2.Nginx做负载均衡 注意:Nginx1.90版 ...

  5. 在Linux上使用Nginx为Solr集群做负载均衡

    在Linux上使用Nginx为Solr集群做负载均衡 在Linux上搭建solr集群时需要用到负载均衡,但测试环境下没有F5 Big-IP负载均衡交换机可以用,于是先后试了weblogic的proxy ...

  6. nginx做负载均衡,解决多机器多gpu卡服务对外暴露一个接口问题

    思路:多个gpu 服务接口-->ngxin做负载均衡-->对外暴露一个. 以一机两卡为例,其中gunicorn部署一卡多进程服务参考这篇文章 一.制作nginx负载均衡镜像 1.制作Doc ...

  7. 用NGINX做负载均衡,keepalived高可用

    实验环境,四台虚拟机,两台做负载均衡,两台做RS IP地址:两台负载均衡分别为:10.0.0.7:10.0.0.8(高可用keepalived) 两台 RS主机地址为: 10.0.0.9:10.0.0 ...

  8. [Linux]使用宝塔面板做负载均衡时遇到的问题和解决办法

    [Linux]使用宝塔面板做负载均衡时遇到的问题和解决办法 参考文章: (1)[Linux]使用宝塔面板做负载均衡时遇到的问题和解决办法 (2)https://www.cnblogs.com/guan ...

  9. 负载均衡服务器性能评估,性能测试:pgpool做负载均衡的性能评估

    1.测试环境maggie1:IP:192.168.31.101角色:pgpool_II + 流复制备库maggie2:IP::192.168.31.102角色:流复制主库 2. 环境搭建1. magg ...

  10. Nginx做负载均衡的模块

    负载均衡模块 使用nginx做负载均衡的两大模块: upstream 定义负载节点池 ocation 模块 进行URL匹配. proxy模块 发送请求给upstream定义的节点池 upstream模 ...

最新文章

  1. Vista下控件无法安装解决办法
  2. WCF4.0新特性体验(6):路由服务Routing Service(下)
  3. 改变单选或者复选框的样式
  4. JQuery UI – droppable 中文文档
  5. PAT甲级1022 Digital Library (30分):[C++题解]结构体、排序、查询
  6. Python中_,__,__xx__的区别
  7. 洛谷P2751 [USACO4.2]工序安排Job Processing
  8. 简单总结 2019 展望 2020
  9. 编辑距离算法(C#版本)
  10. 树莓派入门教程 - 0 - 准备篇 - 0.1 第一次开机
  11. 【学习 Opencv】—— 常见接口
  12. 动态规划:leetcode 416 分割等和子集(背包问题应用)
  13. 熊海博客php版本,熊海CMS xhcms v1.0代码审计
  14. 【信号与系统】Multisim 仿真信号合成与分解
  15. 制作便携版 FireFox 火狐浏览器
  16. 小米android怎么刷机教程,安卓刷机教程_小米刷机教程_手机刷机教程-IT资讯(PC6.com)...
  17. 博士生DIY超级显微镜,直接看到原子
  18. python中的value是什么意思_python中p-value的实现方式
  19. 【超详细教程(附源码)】基于 ARM Cortex-M3 处理器与 FPGA 的实时人脸检测 SOC
  20. 《你若安好,便是晴天》

热门文章

  1. python fileinput_Python模块学习:fileinput
  2. idea中使用maven配置sonar
  3. python嵌套字典读取_python 字典,字典嵌套,字典遍历
  4. idea打不开项目,窗口不显示问题
  5. 解决办法| 微信实名超限制
  6. javascript毫秒计时器_JavaScript 计时器函数用法
  7. 棋牌游戏如何解决现有问题?
  8. 【组件开发实践】云巧流程组件对接实践
  9. 智能体如何应对环境突变:快速感知和自适应
  10. 英雄联盟手游登录注册地与服务器不匹配,lol手游无法使用当前地区账号登录原因说明,相关解决方法分享...