程序员的nginx技能包(5)——负载均衡,高大上架构的起源

本文涉及的产品
应用型负载均衡 ALB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 背景不管是否很大型的系统,采用负载均衡的意义都是相当滴重要。

如果是大型系统,毫无疑问当系统负载能力达到一个服务所能承受的极限时,用多个服务来分摊用户请求的压力是非常合理的想法。这就好比汽车站刚开始只有一辆汽车,当人实在是太多时,最简单拓展运输能力的方式就是再来一辆汽车。


如果是小型系统,负载均衡也是相当重要,最基本的需求,当你的代码需要升级时,要求系统运行不能停止,如果只有一个服务在跑,那就没办法了。但是如果有负载均衡,完全可以在负载比较低时,一台一台的更新。


综上所述,无论你是大神架构师,还是虾米程序员,都应该对负载均衡有些了解。


这其中,nginx实现负载均衡那是相当简单,而且高效,厉害了。


原理

原理灰常简单,nginx监听一个80端口,然后将请求转发到不同服务去处理即可。


注意此处不同服务可能是一台服务器上的不同端口的web服务,也可以是不同服务器上的各个端口的web服务,都可以。


原理如此简单,实现也很容易,详细说下。


搭建实践环境

无非是安装一个nginx,用来监听请求,安装两个tomcat,用来测试是否实现了负载均衡。


具体安装nginx和两个tomcat的过程此处不再一一细讲,前面的章节说的很明白了。


我们要的效果是nginx在80端口如图:

image.png

image.png

配置nginx负载均衡

很简单,如下,我感觉都无需解释了:


首先nginx server监听80端口,然后将请求转发到mytomcats。


mytomcats这个upstream有两个权重一样的服务器负责接收请求,也就是如果有100个请求,那这老哥俩一人500个请求呗。这哥俩就是8012端口和8022端口的服务。


当然如果你想负载均衡到别的机器上,可以将127.0.0.1改成别的IP或者域名。

image.png

重新加载下nginx,命令为:nginx -s reload,然后看效果,就会发现请求同一个地址,有时候是tomcat1响应,有时候是tomcat2响应。当然不是严格的第一次tomcat1响应,第二次就tomcat2响应,毕竟咱们的请求来自同一台计算机,nginx肯定有比较复杂的考量以提高效率,比如IP相似的机器的请求优先安排同一台服务器响应。

image.png

总结与展望

本篇简明但不算扼要的说了nginx如何实现负载均衡,当然nginx负载均衡有很多策略,单独说策略没有意思,下篇还是结合实际场景说下如何来设置具体策略。


项目源码、系列教程及更多内容,请访问熊猫编程网

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
6月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
7月前
|
弹性计算 负载均衡 网络协议
阿里云SLB深度解析:从流量分发到架构优化的技术实践
本文深入探讨了阿里云负载均衡服务(SLB)的核心技术与应用场景,从流量分配到架构创新全面解析其价值。SLB不仅是简单的流量分发工具,更是支撑高并发、保障系统稳定性的智能中枢。文章涵盖四层与七层负载均衡原理、弹性伸缩引擎、智能DNS解析等核心技术,并结合电商大促、微服务灰度发布等实战场景提供实施指南。同时,针对性能调优与安全防护,分享连接复用优化、DDoS防御及零信任架构集成的实践经验,助力企业构建面向未来的弹性架构。
666 76
|
6月前
|
存储 监控 算法
Java程序员必学:JVM架构完全解读
Java 虚拟机(JVM)是 Java 编程的核心,深入理解其架构对开发者意义重大。本文详细解读 JVM 架构,涵盖类加载器子系统、运行时数据区等核心组件,剖析类加载机制,包括加载阶段、双亲委派模型等内容。阐述内存管理原理,介绍垃圾回收算法与常见回收器,并结合案例讲解调优策略。还分享 JVM 性能瓶颈识别与调优方法,分析 Java 语言特性对性能的影响,给出数据结构选择、I/O 操作及并发同步处理的优化技巧,同时探讨 JVM 安全模型与错误处理机制,助力开发者提升编程能力与程序性能。
Java程序员必学:JVM架构完全解读
|
4月前
|
人工智能 架构师 程序员
用户说 | 手把手体验通义灵码 2.0:AI 程序员如何让我从“调参侠”进阶“架构师”?
通义灵码 2.0 是强大的 AI 编程工具,助力开发者从“调参侠”进阶为“架构师”。它支持跨语言开发、智能单元测试生成和图生代码等功能,显著提升开发效率。新增 QwQ 模型具备“代码脑补”能力,可推荐性能优化策略。尽管功能强大,但仍需注意环境隔离与代码审查,避免过度依赖。通义灵码 2.0 不仅是工具,更是开发者的“外接大脑”,帮助应对全栈开发挑战。
304 0
|
6月前
|
负载均衡 前端开发 应用服务中间件
Tomcat的负载均衡和动静分离(与nginx联动)
总的来说,负载均衡和动静分离是提高Web应用性能的两个重要手段。通过合理的配置和使用,我们可以让Web应用更好地服务于用户。
208 21
|
7月前
|
负载均衡 算法 关系型数据库
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL集群架构负载均衡故障排除与解决方案
本文深入探讨 MySQL 集群架构负载均衡的常见故障及排除方法。涵盖请求分配不均、节点无法响应、负载均衡器故障等现象,介绍多种负载均衡算法及故障排除步骤,包括检查负载均衡器状态、调整算法、诊断修复节点故障等。还阐述了预防措施与确保系统稳定性的方法,如定期监控维护、备份恢复策略、团队协作与知识管理等。为确保 MySQL 数据库系统高可用性提供全面指导。
|
8月前
|
人工智能 架构师 前端开发
手把手体验通义灵码2.0:AI程序员如何让我从“调参侠”进阶“架构师”?
通义灵码2.0是一款强大的AI编程工具,帮助开发者从“调参侠”进阶为“架构师”。它通过跨语言开发支持、智能单元测试生成和图生代码等功能,大幅提升开发效率。例如,将Python数据处理函数一键转为React+ECharts组件,自动生成单元测试用例,甚至通过草图生成前端布局代码。此外,新增的QwQ模型具备“代码脑补”能力,可推荐性能优化策略。尽管功能强大,但仍需注意环境隔离与代码审查,避免过度依赖。通义灵码2.0不仅是工具,更是开发者的“外接大脑”。
326 8
|
10月前
|
负载均衡 算法
架构学习:7种负载均衡算法策略
四层负载均衡包括数据链路层、网络层和应用层负载均衡。数据链路层通过修改MAC地址转发帧;网络层通过改变IP地址实现数据包转发;应用层有多种策略,如轮循、权重轮循、随机、权重随机、一致性哈希、响应速度和最少连接数均衡,确保请求合理分配到服务器,提升性能与稳定性。
2211 11
架构学习:7种负载均衡算法策略
|
12月前
|
负载均衡 Java 持续交付
深入解析微服务架构中的服务发现与负载均衡
深入解析微服务架构中的服务发现与负载均衡
642 7

热门文章

最新文章