当前位置: 首页 > news >正文

网络相关知识整理

负载均衡

负载均衡(Load Balancing)是一种分布式系统技术,核心作用是将网络流量、计算任务或数据请求均匀分配到多个服务器(或资源节点),避免单个节点因负载过高而性能下降或崩溃,从而提升系统的整体吞吐量、可用性和稳定性。

一、为什么需要负载均衡?

在高并发场景下(如电商促销、热门 APP 访问高峰),单台服务器的处理能力(CPU、内存、带宽等)有限:

  • 若请求集中到一台服务器,会导致响应变慢、超时甚至宕机(“单点故障”)。
  • 多台服务器协同工作时,若流量分配不均(部分服务器过载,部分空闲),会造成资源浪费。

负载均衡本质是 “合理分配压力”,让所有服务器 “各司其职”,既不闲置也不过载。

二、软件负载均衡

  • 原理:通过软件程序(运行在通用服务器上)实现负载均衡逻辑。
  • 常见工具
    • Nginx:轻量高效,支持 HTTP/HTTPS(七层)和 TCP/UDP(四层)负载均衡,适合中小型应用。
    • HAProxy:高性能,专注于四层和七层负载均衡,支持复杂的负载策略,常用于高并发场景。
    • LVS(Linux Virtual Server):基于 Linux 内核的四层负载均衡,性能接近硬件,适合底层流量分发。
  • 特点:成本低(开源免费)、灵活易配置,是中小团队的主流选择。

Nginx

Nginx(发音为 “engine x”)是一款高性能的 HTTP 服务器、反向代理服务器,同时也支持 TCP/UDP 代理、负载均衡、缓存等功能。它以轻量级、高并发处理能力、稳定性强著称,是现代 Web 架构中最常用的服务器之一(全球超过 30% 的网站使用 Nginx,包括淘宝、京东、Netflix 等)。

二、Nginx 的核心功能

1. HTTP 服务器(Web 服务器)

Nginx 可直接作为 Web 服务器,托管静态资源(HTML、CSS、JS、图片、视频等),支持:

  • 虚拟主机(一台服务器部署多个网站,通过server_name区分)。
  • URL 重写(通过rewrite指令实现 URL 跳转、伪静态)。
  • 压缩传输(gzip模块压缩资源,减少网络传输量)。
  • 访问控制(限制 IP、密码保护等)。
2. 反向代理

反向代理是 Nginx 最常用的功能之一:

  • 正向代理:客户端→代理服务器→目标服务器(如 VPN,代理客户端访问外部资源)。
  • 反向代理:客户端→代理服务器(Nginx)→后端服务器(如 Tomcat、Node.js)。
    作用:隐藏后端服务器 IP,增强安全性;统一入口,方便管理;配合负载均衡分发流量。
3. 负载均衡

Nginx 可作为负载均衡器,将客户端请求均匀分配到多台后端服务器,避免单节点过载:

  • 支持多种负载均衡算法(轮询、加权轮询、IP 哈希、最少连接数等)。
  • 支持健康检查(自动剔除故障服务器,恢复后自动加入)。
4. 动静分离

将静态资源(CSS、JS、图片)和动态资源(如 PHP、Java 接口)的请求分开处理:

  • 静态资源直接由 Nginx 处理(效率高)。
  • 动态资源通过反向代理转发给后端应用服务器(如 Tomcat、PHP-FPM)。
    优势:减轻后端服务器压力,提高整体响应速度。
5. SSL/TLS 终结

Nginx 可处理 HTTPS 加密和解密工作(SSL 握手、证书验证),后端服务器只需处理明文数据:

  • 减少后端服务器的加密计算开销。
  • 统一管理 SSL 证书,简化配置。

四、典型应用场景

  1. 静态资源服务器:直接托管网站的 HTML、CSS、JS、图片等,配合gzip和缓存配置优化加载速度。
  2. 反向代理 + 负载均衡:作为前端流量入口,将请求分发到后端多台应用服务器(如 Java、Python 服务),支撑高并发。
  3. 微服务网关:在微服务架构中,作为 API 网关,处理路由、认证、限流、监控等通用逻辑。
  4. CDN 节点:作为 CDN(内容分发网络)的边缘节点,缓存静态资源,加速用户访问。
  5. 反向代理 WebSocket:支持 WebSocket 协议代理,用于实时通讯应用(如聊天、弹幕)。

五、Nginx 基本配置示例

Nginx 的配置文件(通常是nginx.conf)是文本文件,结构清晰,以下是几个典型配置场景:

1. 作为静态 Web 服务器

nginx

# 一个server块代表一个虚拟主机
server {listen 80;                 # 监听端口server_name www.example.com;  # 绑定域名root /var/www/example;     # 静态资源存放目录index index.html index.htm;  # 默认首页# 访问日志配置access_log /var/log/nginx/example_access.log;error_log /var/log/nginx/example_error.log;
}
2. 反向代理(转发动态请求到后端服务器)

nginx

server {listen 80;server_name api.example.com;# 将所有请求转发到后端Node.js服务器location / {proxy_pass http://127.0.0.1:3000;  # 后端服务器地址proxy_set_header Host $host;       # 传递原始主机名proxy_set_header X-Real-IP $remote_addr;  # 传递客户端真实IP}
}
3. 负载均衡(分发流量到多台后端服务器)

nginx

# 定义后端服务器集群(upstream块)
upstream backend_servers {server 192.168.1.101:8080 weight=3;  # 权重3,处理更多请求server 192.168.1.102:8080 weight=1;  # 权重1server 192.168.1.103:8080 backup;    # 备用服务器(主服务器故障时启用)
}server {listen 80;server_name www.example.com;# 将请求转发到后端集群(使用负载均衡)location / {proxy_pass http://backend_servers;proxy_set_header Host $host;}
}

六、常用 Nginx 命令

bash

nginx -v          # 查看版本
nginx             # 启动Nginx
nginx -s stop     # 快速停止
nginx -s quit     # 优雅停止(处理完当前请求再停止)
nginx -s reload   # 重新加载配置(热部署)
nginx -t          # 检查配置文件是否正确

总结

Nginx 凭借高性能、轻量级和多功能,成为现代 Web 架构的核心组件。无论是作为静态服务器、反向代理,还是负载均衡器,它都能高效支撑从中小型网站到超大规模分布式系统的需求。掌握 Nginx 的配置和使用,是前端、后端和运维工程师的重要技能。

架构

“架构”(Architecture)是一个跨领域的通用概念,核心是指对一个复杂系统的结构化设计与组织方式—— 即如何将系统拆分为多个组件、组件之间如何协作、以及如何通过这种设计满足系统的核心目标(如性能、可靠性、可扩展性等)。

简单来说,架构就是 “系统的骨架”:它不关注具体的实现细节(比如代码怎么写),而是回答 “系统由什么组成”“组件之间怎么配合”“如何支撑业务需求” 这三个核心问题。

一、架构的核心本质

  1. 结构化拆分:将复杂系统拆解为更小、更易管理的 “组件”(或模块),降低复杂度。例如:
    • 建筑架构中,将大楼拆分为地基、承重墙、楼板、屋顶等组件。
    • 软件架构中,将应用拆分为用户界面、业务逻辑、数据存储等组件。
  2. 定义协作规则:明确组件之间的交互方式(如依赖关系、通信协议、数据流转路径),确保组件协同工作形成完整系统。
  3. 平衡多方需求:架构设计需在业务目标(如功能、迭代速度)、技术约束(如性能、成本)、质量属性(如可靠性、安全性)之间找到最优平衡。


软件架构

一、软件架构的核心要素

软件架构不关注具体代码实现,而是回答三个关键问题:

  1. 由什么组成?(组件拆分):将系统拆分为哪些核心模块 / 服务(如 “用户模块”“订单模块”)。
  2. 如何协作?(交互规则):组件之间通过什么方式通信(如函数调用、API 接口、消息队列),数据如何流转。
  3. 支撑什么目标?(质量属性):通过设计确保系统具备所需的特性(如 “支持 10 万用户并发”“允许功能模块独立升级”)。

二、软件架构的分层视角

复杂软件系统的架构通常可从 “业务→应用→技术→数据” 四个层次拆解,每层关注不同维度:

1. 业务架构:对齐业务目标
  • 核心任务:梳理业务领域、流程和边界,确保技术设计与业务目标一致。
  • 示例:电商系统的业务架构需明确 “商品上架→用户下单→支付→物流→售后” 的全流程,以及每个环节的核心角色(如用户、商家、仓库)。
  • 输出:业务流程图、领域模型(如 “商品”“订单” 等核心业务实体及关系)。
2. 应用架构:拆分与组织应用
  • 核心任务:将业务流程拆分为独立的应用 / 服务,定义应用间的依赖关系和协作方式。
  • 示例:电商业务可拆分为 “用户中心”“商品管理”“订单系统”“支付系统” 等应用,其中 “订单系统” 需调用 “支付系统” 完成支付,调用 “商品管理” 查询库存。
  • 关键原则:高内聚(一个应用专注于一类业务)、低耦合(应用间通过标准接口通信,不依赖内部实现)。
3. 技术架构:支撑应用运行
  • 核心任务:选择技术栈、基础设施和中间件,为应用提供运行环境和通用能力。
  • 包含内容
    • 开发框架(如 Java 用 Spring Boot,前端用 React);
    • 部署环境(如物理机、虚拟机、容器 Kubernetes);
    • 中间件(如数据库 MySQL、缓存 Redis、消息队列 Kafka);
    • 基础能力(如负载均衡 Nginx、服务注册发现 Nacos、监控 Prometheus)。
  • 示例:高并发系统的技术架构可能包含 “Nginx 负载均衡→API 网关→微服务集群→Redis 缓存→MySQL 主从” 的技术链。
4. 数据架构:设计数据生命周期
  • 核心任务:定义数据的存储、流转、同步和治理方式,确保数据一致性、安全性和可用性。
  • 包含内容
    • 数据存储选择(如结构化数据用 MySQL,非结构化用 MongoDB,日志用 Elasticsearch);
    • 数据流转路径(如订单数据从 “订单系统” 写入 MySQL,同时同步到数据仓库供分析);
    • 数据一致性保障(如分布式事务、最终一致性方案)。

三、常见软件架构模式(按演进顺序)

软件架构模式随技术和业务需求发展而迭代,每种模式有其适用场景:

1. 单体架构(Monolith)
  • 特点:所有功能模块(如 UI、业务逻辑、数据访问)打包为一个应用,部署在单一进程中,共享一个数据库。
  • 优势:简单直接,开发、部署、调试成本低。
  • 劣势:代码量大后维护困难,单模块升级需整体重启,无法针对局部扩容。
  • 适用场景:小型应用(如企业内部工具、个人博客)、业务简单且稳定的系统。
2. 分层架构(Layered Architecture)
  • 特点:在单体架构基础上按 “职责” 纵向分层,典型为 “三层架构”:
    • 表现层(UI):处理用户交互(如网页、APP 界面);
    • 业务逻辑层(Service):实现核心业务规则(如订单生成、支付验证);
    • 数据访问层(DAO):与数据库交互(如查询、插入数据)。
  • 优势:职责清晰,便于团队分工(如前端开发专注表现层,后端专注业务层)。
  • 劣势:仍属单体应用,扩展性受限;层间依赖可能过强(如表现层直接调用数据层)。
  • 适用场景:传统企业应用(如 ERP、CRM 系统)、中等规模且业务稳定的系统。
3. 微服务架构(Microservices)
  • 特点:按业务领域拆分为独立部署的小型服务(如 “用户服务”“订单服务”),每个服务有自己的数据库和进程,通过 API 或消息队列通信。
  • 优势:服务独立扩展(如订单服务压力大时单独扩容)、技术栈灵活(不同服务可用不同语言)、故障隔离(单服务崩溃不影响整体)。
  • 劣势:分布式复杂性(如服务调用超时、数据一致性难保证)、运维成本高(需管理数十上百个服务)。
  • 适用场景:大型复杂系统(如电商、金融)、业务迭代快、团队规模大的场景。
4. 云原生架构(Cloud-Native)
  • 特点:专为云环境设计,基于容器化、编排和微服务,强调 “弹性扩展”“自愈能力” 和 “DevOps 自动化”。
  • 核心组件
    • 容器化(Docker 打包应用,确保环境一致性);
    • 编排工具(Kubernetes 自动管理容器的部署、扩缩容、故障恢复);
    • 服务网格(Istio 管理服务间通信,处理限流、熔断、监控);
    • Serverless(如 AWS Lambda,按需运行函数,无需管理服务器)。
  • 优势:极致弹性(流量高峰时自动扩容,低谷时缩容节省成本)、高可用(自动替换故障实例)。
  • 适用场景:互联网大规模应用、流量波动大的业务(如直播、电商促销)。
5. 事件驱动架构(Event-Driven)
  • 特点:服务通过 “事件”(如 “订单创建”“库存扣减”)异步通信,而非直接调用。一个服务产生事件,其他服务订阅并响应。
  • 优势:服务解耦彻底(服务间无需知道对方存在)、抗峰值能力强(事件可暂存队列,逐步处理)。
  • 劣势:数据一致性需通过 “最终一致性” 保障(可能短暂不一致)、调试复杂(事件链路长)。
  • 适用场景:异步业务流程(如订单状态变更后通知物流、短信、积分系统)、跨系统协作场景。

微服务架构

后端集群

 Spring Boot 
开发框架

中间件

高并发系统的技术架构可能包含 “Nginx 负载均衡→API 网关→微服务集群→Redis 缓存→MySQL 主从” 的技术链。

Docker 

分布式


文章转载自:

http://Z4VTXRRf.bLfgh.cn
http://6nDBodAZ.bLfgh.cn
http://yYBd0FJY.bLfgh.cn
http://sYjAi8hE.bLfgh.cn
http://P5c61wZ0.bLfgh.cn
http://VgejIbZz.bLfgh.cn
http://a5ZciOP6.bLfgh.cn
http://nIzw5i7H.bLfgh.cn
http://8DPAckbg.bLfgh.cn
http://r99kAVS0.bLfgh.cn
http://Nn65ZsEo.bLfgh.cn
http://utowTiX4.bLfgh.cn
http://C7fThUsx.bLfgh.cn
http://lILsfvgh.bLfgh.cn
http://aJMIZDhL.bLfgh.cn
http://ko6Tsnf2.bLfgh.cn
http://SqOrXpNe.bLfgh.cn
http://KXxjeHAd.bLfgh.cn
http://utT4F5C2.bLfgh.cn
http://gTk11w4u.bLfgh.cn
http://FCyu2xwf.bLfgh.cn
http://QX9gdefU.bLfgh.cn
http://qJcefsiK.bLfgh.cn
http://oVVlvsl4.bLfgh.cn
http://ffU6VRub.bLfgh.cn
http://yWLcB5G7.bLfgh.cn
http://d8Rw6WdX.bLfgh.cn
http://tteYxnHj.bLfgh.cn
http://6ojPRQGc.bLfgh.cn
http://2p9MuA40.bLfgh.cn
http://www.dtcms.com/a/374980.html

相关文章:

  • 提升网站用户体验的方法 | 网站优化与用户界面设计
  • CSS的文本样式
  • Flex布局——详解
  • 深度解析CSS单位与媒体查询:构建现代化响应式布局的核心技术
  • 项目组件抽离封装思路
  • Elasticsearch面试精讲 Day 13:索引生命周期管理ILM
  • 【MySQL】从零开始了解数据库开发 --- 数据类型
  • ElasticSearch复习指南:从零搭建一个商品搜索案例
  • 宋红康 JVM 笔记 Day15|垃圾回收相关算法
  • 【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
  • 【python实用小脚本-211】[硬件互联] 桌面壁纸×Python梦幻联动|用10行代码实现“开机盲盒”自动化改造实录(建议收藏)
  • 前端安全攻防:XSS, CSRF 等常见威胁的防范与检测指南
  • 算法题(203):矩阵最小路径和
  • 强化学习在复杂调度问题中的常见陷阱与改进思路
  • AI基础设施——NVIDIA GB300 NVL72
  • 实战项目-----在图片 hua.png 中,用红色画出花的外部轮廓,用绿色画出其简化轮廓(ε=周长×0.005),并在同一窗口显示
  • 第一章 神经网络的复习
  • Spring Cloud 配置中心
  • Typescript入门-d.ts类型声明文件讲解
  • DBF Viewer 2000:专业的DBF文件查看与编辑工具
  • 【字符压缩存在整数32bit技术】
  • 【芯片设计-信号完整性 SI 学习 1.0 -- SI 介绍】
  • uniapp开源多商户小程序商城平台源码 支持二次开发+永久免费升级
  • map / unordered_map / set / unordered_set
  • 不同数据仓库模型有什么不同?企业如何选择适合的数据仓库模型?
  • jmeter入门
  • 【ShiMetaPi】基于BM1684X的智能工业视觉边缘计算盒子解决方案
  • [论文阅读] 算法 | 抗量子+紧凑!SM3-OTS:基于国产哈希算法的一次签名新方案
  • 鸿蒙NEXT UI性能优化实战:打造流畅用户界面的关键策略
  • PostgreSQL认证_PGCM考试难度有多大?