小故事详解负载均衡技术的实现:从tomcat到Nginx

简介: 什么是负载均衡? 通俗一点讲,就是在高并发、大数据环境下给服务器减压的技术。负载均衡是任何一个有一定规模的互联网企业都会考虑的问题,负载方式很多,有依靠硬件实现的,也有依靠软件实现负载的。 今天来聊聊使用软件来负载的方式。

什么是负载均衡?

通俗一点讲,就是在高并发、大数据环境下给服务器减压的技术。
负载均衡是任何一个有一定规模的互联网企业都会考虑的问题,负载方式很多,有依靠硬件实现的,也有依靠软件实现负载的。

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

你可能听过各自负载的方式,比如常见的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到底和负载有什么关系呢?

我先举个例子轻松一下,然后告诉你一个大多数人都会面临的问题。

一个大多数人都会面临的问题

下面这样一件事,你肯定也感同身受。

张程已经工作2年了,每个项目都是熬夜加班、高质量完成,薪资却依旧没有过万!多次提出加薪请求,领导总说哦哦哦知道了。

吃午饭时他听说,有个离职的同事,换了工作后年薪翻了1倍,已经40万+了。此时他心中一惊,明白了问题不在自己,而是目前的工作很难再大幅涨薪了。

你肯定也想快速拿到40万+年薪,不是吗?

很明显,java架构师正是你的机会。

我了解到,目前全行业都在使用微服务技术,人才短缺非常严重,普通微服务开发起薪也在15K/月。

靠微服务技术拿到高薪的例子,新闻里我们身边都有很多!

或许你也有过这样的经历:
到百度搜索“如何学习微服务?”,在结果页中点开的却都是广告,往下翻个5、6页,也没有满意的答案。

你又到知乎搜索“微服务要学什么技术?该怎么学?”。

各路键盘大神告诉你,要好几本书......

你把书买回家,每本都厚如砖头。我猜你肯定会想:“看完这些书怎么也得2年吧”,瞬间从“信心十足”变成“就当看着玩吧”。

那我们该如何轻松学习微服务呢?

下面的方法可以帮到你!
其实要轻松学习很简单,
我给你总结了两个要点:

  1. 找到一套好的视频课程,紧跟大牛梳理好的知识框架进行学习。
  2. 多练。

你我都不是天才,但只要你能做到这两点,短时间掌握技术的概率是非常大的。

那怎样才能找到一套好课程呢?

而且还必须免费 !

欢迎加入java架构师学习群474862212。

相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
目录
相关文章
|
1月前
【技术干货连载 二】SLB 408问题排查
SLB 408问题排查思路和方法
12 0
|
2月前
|
缓存 前端开发 JavaScript
tomcat核心技术+Nginx性能调优技术
而Tomcat的基本配置,每个配置项也基本上对应了Tomcat的组件结构,如果要用一张图来形象展现一下Tomcat组成的话
37 1
|
2月前
|
Java 应用服务中间件 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
简介Nginx,Tomcat和 Apache
|
3月前
|
缓存 负载均衡 应用服务中间件
高性能网络编程技术 Nginx 的概念与实践
Nginx 是一款高性能、轻量级的Web服务器和反向代理服务器,它在网络编程技术领域中被广泛应用。本文将详细介绍Nginx的概念和实践,包括其核心原理、功能特点、优势和应用场景等方面。同时,还将深入探讨如何使用Nginx进行高性能网络编程,结合实际案例进行分析。
|
3月前
|
负载均衡 应用服务中间件 nginx
百度搜索:蓝易云【Nginx和tomcat实现负载均衡教程】
至此,你已经成功地使用Nginx和Tomcat实现了负载均衡。Nginx将根据配置的负载均衡策略将客户端请求分发到多个Tomcat服务器上,以提高系统的性能和可用性。请注意,在实际生产环境中,还需要进行其他配置和优化,如健康检查、会话保持等,以满足具体的需求。
34 0
|
3月前
|
负载均衡 安全 前端开发
百度搜索:蓝易云【Nginx与Tomcat负载均衡-动静分离教程】
这些是将Nginx与Tomcat结合使用实现负载均衡和动静分离的基本步骤。根据您的需求和具体环境,可能还需要进行其他配置和调整。请确保在进行任何与网络连接和安全相关的操作之前,详细了解您的网络环境和安全需求,并采取适当的安全措施。
48 1
|
3月前
|
安全 Java 应用服务中间件
阿里技术官架构使用总结:Spring+MyBatis源码+Tomcat架构解析等
分享Java技术文以及学习经验也有一段时间了,实际上作为程序员,我们都清楚学习的重要性,毕竟时代在发展,互联网之下,稍有一些落后可能就会被淘汰掉,因此我们需要不断去审视自己,通过学习来让自己得到相应的提升。
|
25天前
|
设计模式 安全 Java
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
【分布式技术专题】「Tomcat技术专题」 探索Tomcat技术架构设计模式的奥秘(Server和Service组件原理分析)
29 0
|
1月前
|
负载均衡 网络协议 安全
技术浅析:基于云的DNS负载均衡如何实现?
技术浅析:基于云的DNS负载均衡如何实现?
43 6
|
2月前
|
存储 负载均衡 算法
后端技术之负载均衡
【2月更文挑战第4天】随着互联网应用的不断增长,访问量也越来越大,如何高效地处理这些请求成为了一个必须考虑的问题。负载均衡是一种重要的技术手段,它可以将请求分配到多个服务器上,从而提高系统的可用性和稳定性。本文将介绍负载均衡的基本原理、实现方式以及优化方法。
38 3