跳至主要內容
负载均衡算法深度解析:从Nginx到云原生

前言

负载均衡是系统架构中最常用的组件。无论是Nginx、HAProxy、还是云原生的Service Mesh,都需要回答同一个问题:

"这个请求该发给哪个后端服务器?"

看似简单,但要在高并发、动态扩容、多地域等复杂场景下做出最优决策,需要深入理解各种算法的原理与权衡。


一、负载均衡的层次

1.1 四层 vs 七层

ISO/OSI 模型:

第7层 (应用层): HTTP/HTTPS
  └─ 可以看到请求内容 (URL、Header、Body)
  └─ 路由粒度细 (基于URL/Host/Cookie)
  └─ 性能: 中等 (需要解析HTTP)
  └─ 例: Nginx、HAProxy、Envoy

第4层 (传输层): TCP/UDP
  └─ 只能看到IP+Port
  └─ 路由粒度粗 (仅基于IP+Port)
  └─ 性能: 高 (无需解析应用层)
  └─ 例: LVS、F5、云Load Balancer

┌─────────────────────────┐
│  Client                 │
│ 127.0.0.1:12345        │
└────────────┬────────────┘
             │ TCP/IP
    ┌────────▼────────┐
    │ Layer 4 LB      │  ← 只看IP:Port,极快
    │ 10.0.0.1:80    │
    └────────┬────────┘
             │
    ┌────────▼────────┐
    │ Layer 7 LB      │  ← 解析HTTP,精细控制
    │ Nginx/Envoy     │
    └────────┬────────┘
             │
    ┌────────┴────────┐
    ▼                 ▼
 Backend1          Backend2

郑天祺大约 8 分钟分布式负载均衡Nginx云原生
DeepSeek V4 Pro 高可用部署方案

DeepSeek V4 Pro 高可用部署方案

单节点部署入门容易,生产落地必须高可用。本文从选型决策、架构设计、容量规划、负载均衡、自动扩缩容、故障自愈到监控告警,给出一套完整的 DeepSeek V4 Pro 企业级高可用方案。


一、选型决策方法论

在进入具体架构之前,先解决「为什么这么选」的问题。以下是四个关键决策维度:

1.1 量化 vs 满血版

方案 总参数 激活参数 最低显存 (推理) 推荐硬件 适用场景
满血 FP16 1.6T (MoE) 49B 800GB~1.4TB 8×A100 80GB / 8×H100 对精度要求极高
FP8 量化 1.6T 49B ~640GB 8×A100 80GB 速度优先,精度可接受
INT4 量化 1.6T 49B ~100GB 2×A100 80GB 性价比最优
激活参数加载 - 49B (仅活跃专家) ~50GB 2×A100 80GB / RTX 4090×2 预算有限的中小企业

郑天祺大约 17 分钟运维DeepSeek高可用K8s负载均衡
SpringCloud使用nacos多人开发负载调用问题实践

1、问题描述

当我们使用springcloud+nacos架构时,由于使用nacos进行负载的原因,组内小伙伴经常调用到其他人的电脑。

针对此问题我们可以采用的方案:

  • (方案1)利用nacos的特性,进行区分namespace或者group,每个人用不同的namespace或者group。该方式需要每个开发人员改yml文件且不能提交,比较麻烦。
  • (方案2)不使用openfeign不使用gateway,使用restTemplate,调用前进行判断是否为开发环境,开发环境使用localhost。
  • (方案3)该方案我目前采用的,无需每个人进行特别的配置。首先我们使用openfeign且使用gateway;其中nacos的namespace区分dev、test、hotfix、prod;group大家都是用的默认的DEFAULT_GROUP。需要修改的是gateway配置和增加openfeign参数
    若有更好的方法,也请分享我,万分感谢~
    下面详细介绍方案2和方案3:

郑天祺大约 2 分钟springSpringCloudNacos负载均衡
nginx配置

一、负载均衡策略

负载均衡用于从“upstream”模块定义的后端服务器列表中选取一台服务器接受用户的请求。一个最基本的upstream模块是这样的,模块内的server是服务器列表:

#动态服务器组
upstream dynamic_zuoyu {
    server localhost:8080;  #tomcat1
    server localhost:8081;  #tomcat2
    server localhost:8082;  #tomcat3
    server localhost:8083;  #tomcat4
}

郑天祺大约 12 分钟CICDNginx负载均衡配置
SpringCloud Ribbon参数配置

Ribbon策略类型

image-20201214123508379
image-20201214123508379

Ribbon负载均衡策略为轮询,如果要修改默认策略 ,有两种方法,分别是创建配置类,和配置application.yml。

方法一:创建配置类

 @Configuration  
public class MyRibbonConfig {
    @Bean
    public IRule ribbonRule() {
        //随机策略
        return new RandomRule();
    }
}
然后在启动类上加注解:
@RibbonClient(name = "nacos.provider.demo", configuration = MyRibbonConfig.class)  //name为服务提供者名称


郑天祺小于 1 分钟springSpringCloudRibbon负载均衡