负载均衡

负载均衡是任何一个有一定规模的互联网企业都会考虑的问题,负载方式很多,有依靠硬件实现的,也有依靠软件实现负载的。

今天来聊聊使用软件来负载的方式

你可能听过各自负载的方式,比如常见的nginx,dubbo,springcloud等等技术框架都能实现负载,作为软件大牛的你有没有考虑过这些负载方式的区别呢?

下面小源就来假象个案例来谈谈常用的负载,我想对你一定会有帮助。

【以下故事纯属虚构,请勿对号入座】

从一个tomcat谈起

在很久很久以前,小源成立了自己的公司,并做了一个购物网站-《小源购物网》,刚开始架构非常简单,传统的java开发框架,一个tomcat容器,经过1个月的没日没夜的编码,搞定,上线。

1年后,项目没想到火了,每天都有大量的人来购买娃娃、飞机、杯子。突然发现一个tomcat搞不定,怎么办?两个tomcat呗!

那么问题来了,两个tomcat没问题,服务器也整几台,但是我域名只有一个啊,怎么办?

Nginx登场

Nginx登场,通过一棒子程序猿的倒腾,在项目中引入nginx就能解决并发问题了,其中的研究过程也并不简单,session怎么共享,配置文件怎么配置等等,说多了都是泪,不管怎么说,起码完成了任务,能让2个tomcat联合起来工作了。

然而在线商城越来越火,没过2个月,发现2个tomcat也搞不定了,怎么办?只能集成更多tomcat了,当然Nginx集成很多tomcat都没问题,架构图如下

但是……

增加tomcat小源得修改nginx.conf这配置文件,修改了配置问题我当然可以reload,让nginx生效,但reload狗血的经常有问题,而我又不得不经常重启。。

重启就麻烦大了,我那服务不得停止,客户好好的在购物,突然发现不能下单,不能付款了,这不非常糟糕?

其实也还好,虽然客户友好度不好,但小源一般凌晨3点加班来维护,幸苦是辛苦,但勉强能接受。

直到有一天……

噩梦的一天

那天小源正在午睡,3伏天,太阳高晒着,在睡梦中砰的一声,电是没停,可是那台nginx服务器已经在冒烟了。。

怎么办?那一天nginx的服务器肯定是报销了,没过多久客户的投诉电话就没完没了的打了过来,而这只是刚过去10分钟……

只能重新搭建个服务器了,好在服务器还有,只是配置文件什么了都忘记备份了,火急火燎的我足足花了1个小时才把服务器弄好,还是nginx配置文件非常熟练的情况下。

问题虽然解决了,但当天小源依然被投资经理一顿臭骂,一个小时损失了很多钱啊,而且客户的投诉还堆积如山。

以后再发生这情况怎么办?我肯定记得把配置文件进行备份了,但再发生nginx死机也是不能接受的啊。

终于……

Nginx+keepalived上线

一个nginx机群肯定是不行了,那我得用两个nginx机群才行,一个nginx冒烟了,另外个nignx马上等顶替,这样不就好了吗?

好了,那么总体的架构图如下。

终于,这样的架构解决了很大的问题。

但是这架构也有问题,至于到底有什么问题呢?

Dubbo,spring cloud,zookeeper到底和负载有什么关系呢?

请听下回分解^!^

从小故事来谈nginx负载均衡的更多相关文章

  1. 浅谈Nginx负载均衡和F5的区别

    前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道"墙",将请求分发到web服务器后,web服务器上的Nginx再进行处 ...

  2. 浅谈Nginx负载均衡与F5的区别

    前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道“墙”,将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问 ...

  3. 【转】浅谈Nginx负载均衡与F5的区别

    前言 笔者最近在负责某集团网站时,同时用到了Nginx与F5,如图所示,负载均衡器F5作为处理外界请求的第一道“墙”,将请求分发到web服务器后,web服务器上的Nginx再进行处理,静态内容直接访问 ...

  4. 浅谈Nginx负载均衡原理与实现

    1.Nginx能做什么? Nginx可以两件事: -- HTTP请求  经过官方测试Nginx可以承受5万的并发量.可用来做静态资源的图片服务器 --负载均衡,如下解释什么是负载均衡. 2.负载均衡 ...

  5. 七年开发浅谈Nginx负载均衡

    一 特点 1.1 应用情况 Nginx做为一个强大的Web服务器软件,具有高性能.高并发性和低内存占用的特点.此外,其也能够提供强大的反向代理功能.俄罗斯大约有超过20%的虚拟主机采用Nginx作为反 ...

  6. 浅谈一个网页打开的全过程(涉及DNS、CDN、Nginx负载均衡等)

    1.概要 从用户在浏览器输入域名开始,到web页面加载完毕,这是一个说复杂不复杂,说简单不简单的过程,下文暂且把这个过程称作网页加载过程.下面我将依靠自己的经验,总结一下整个过程.如有错漏,欢迎指正. ...

  7. 【转】浅谈一个网页打开的全过程(涉及DNS、CDN、Nginx负载均衡等)

    1.概要 从用户在浏览器输入域名开始,到web页面加载完毕,这是一个说复杂不复杂,说简单不简单的过程,下文暂且把这个过程称作网页加载过程.下面我将依靠自己的经验,总结一下整个过程.如有错漏,欢迎指正. ...

  8. 对比Haproxy和Nginx负载均衡效果

    为了对比Hproxy和Nginx负载均衡的效果,分别在测试机上(以下实验都是在单机上测试的,即负载机器和后端机器都在一台机器上)做了这两个负载均衡环境,并各自抓包分析.下面说下这两种负载均衡环境下抓包 ...

  9. nginx负载均衡集群

    nginx负载均衡集群  0.前言:nginx 负载均衡,属于网络7层模型中的应用层,说白了就是一个代理,要用 upstrem 模块实现,代理则用proxy模块 1.可以针对域名做转发,lvs只能针对 ...

随机推荐

  1. shell 参数列表的获取&shell使用的一些总结

    最近在修改公司的一些cron,自己也是第一次接触和学习shell.对于一些零散但是常用的知识点,做一点点的总结. 拿出一个方法说说吧,方法如下:(信息量挺大的,请耐心看下面的说明) trans_cou ...

  2. wincvs的“License for this product has expired”问题解决

    新入职的公司代码管理工具是CVS,使用wincvs作为客户端工具.今天发现执行login.logout.update等操作的时候总是报"License for this product ha ...

  3. Android旋转动画

    Android旋转动画 核心方法 public void startAnimation(Animation animation) 执行动画,参数可以是各种动画的对象,Animation的多态,也可以是 ...

  4. 【一天一道LeetCode】#137. Single Number II

    一天一道LeetCode 本系列文章已全部上传至我的github,地址:ZeeCoder's Github 欢迎大家关注我的新浪微博,我的新浪微博 欢迎转载,转载请注明出处 (一)题目 Given a ...

  5. 如何优化MySQL insert性能

    对于一些数据量较大的系统,面临的问题除了是查询效率低下,还有一个很重要的问题就是插入时间长.我们就有一个业务系统,每天的数据导入需要4-5个钟.这种费时的操作其实是很有风险的,假设程序出了问题,想重跑 ...

  6. 利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl

    利用openssl管理证书及SSL编程第2部分:在Windows上编译 openssl 首先mingw的环境搭建,务必遵循下文: http://blog.csdn.net/ubuntu64fan/ar ...

  7. Swift基础之Delegate方法的使用

    本文简单介绍了使用Delegate方法的进行值的传递,改变上一个界面的字体大小和颜色 首先创建一个导航视图: let viewC = ViewController();        let navi ...

  8. Python学习笔记 - 生成器generator

    #!/usr/bin/env python3 # -*- coding: utf-8 -*- # generator 生成器 L = [x * x for x in range(10)] print( ...

  9. 网站开发进阶(二十一)Angular项目信息错位显示问题解决

    Angular项目信息错位显示问题解决 绪 最近在项目开发过程中遇到这样一个棘手的问题:查询出所有订单信息后,点击选择某一个订单,查询出的结果是上一次查询所得的结果.而且会出现点击两次才可以显示订单详 ...

  10. SpriteBuilder物理对象的父子关系

    注意:打开物理使能(Physics-enabled)的节点忽略他们的父节点关系. 这意味着,一个物理使能的子节点不会随着其父节点移动. 物理引擎对于节点父子关系这个概念毫不知情,因此单独的对待所有物理 ...