Geeks_Z の Blog Geeks_Z の Blog
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)

Geeks_Z

AI小学生
首页
  • 学习笔记

    • 《HTML》
    • 《CSS》
    • 《JavaWeb》
    • 《Vue》
  • 后端文章

    • Linux
    • Maven
    • 汇编语言
    • 软件工程
    • 计算机网络概述
    • Conda
    • Pip
    • Shell
    • SSH
    • Mac快捷键
    • Zotero
  • 学习笔记

    • 《数据结构与算法》
    • 《算法设计与分析》
    • 《Spring》
    • 《SpringMVC》
    • 《SpringBoot》
    • 《SpringCloud》
    • 《Nginx》
  • 深度学习文章
  • 学习笔记

    • 《PyTorch》
    • 《ReinforementLearning》
    • 《MetaLearning》
  • 学习笔记

    • 《高等数学》
    • 《线性代数》
    • 《概率论与数理统计》
  • 增量学习
  • 哈希学习
GitHub (opens new window)
  • Linux

  • Java

  • 微服务笔记

  • MySQL

  • Nginx

    • Nginx介绍
    • Nginx配置
    • 反向代理与负载均衡
    • 扩容
      • 扩容方式
      • 扩容原则
      • 单机垂直扩容:硬件资源增加
      • 水平扩展:集群化
        • Nginx高级负载均衡——ip_hash
        • Redis + SpringSession
  • HTML

  • CSS

  • JavaWeb

  • Vue

  • Git

  • 开发规范

  • SpringCloud微服务权限系统

  • bug

  • Software

  • ProgramNotes
  • Nginx
Geeks_Z
2024-04-05
目录

扩容

扩容

参考张一明《Nginx高并发网站技术架构实战》

扩容方式

  1. 单机垂直扩容:硬件资源增加

  2. 水平扩展:集群化

  3. 细粒度拆分:分布式

    • 数据分区
    • 上游服务SOA化(原生支持水平/垂直扩容)
    • 入口细分
      • 浏览器
      • 移动端原生App(物联网)
      • H5内嵌式应用
  4. 数据异构化

    • 多级缓存
      • 客户端缓存
      • CDN缓存
      • 异地多活
      • Nginx缓存
  5. 服务异步化

    • 拆分请求
    • 消息中间件

扩容原则

  1. 无状态原则
  2. 弹性原则

单机垂直扩容:硬件资源增加

  1. 云服务资源增加
  2. 整机:IBM、浪潮、DELL、HP等
  3. CPU/主板:更新到主流
  4. 网卡:10G/40G网卡
  5. 磁盘:SAS(SCSI) HDD(机械)、HHD(混合)、SATA SSD、PCI-e SSD、 MVMe SSD
  6. SSD
    • 多副本机制
    • 系统盘/热点数据/数据库存储
  7. HDD
    • 冷数据存储

水平扩展:集群化

Nginx高级负载均衡——ip_hash

中小型项目快速扩容

当对后端的多台动态应用服务器做负载均衡时,ip_hash指令能够将某个客户端IP的请求通过哈希算法定位到同一台后端服务器上。这样,当来自某一个IP的用户在后端Web服务器A上登录后,在访问该站点的其他URL,能保证其访问的还是后端web服务器A。

语法 ip_hash;
默认值 —
位置 upstream
upstream httpds {
   ip_hash;
   server 192.168.44.102 ;
   server 192.168.44.103 ;
   }


    server {
        listen       80;
        server_name  localhost;

        location / {
	    proxy_pass http://httpds;

      	# root   html;
        }
    
    
    
       location ~*/(css|img|js) {
     
        root   /usr/local/nginx/html;

    }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

需要额外多说一点的是使用ip_hash指令无法保证后端服务器的负载均衡,可能导致有些后端服务器接收到的请求多,有些后端服务器接收的请求少,而且设置后端服务器权重等方法将不起作用。

1591706748677

  • 其他hash
    • hash $cookie_jsessionid;
    • hash $request_uri;
  • 使用lua逻辑定向分发

Redis + SpringSession

#Nginx
上次更新: 2025/02/26, 08:57:57
反向代理与负载均衡
HTML概述

← 反向代理与负载均衡 HTML概述→

最近更新
01
RAIL
02-26
02
IOCTF
02-25
03
DGM
02-25
更多文章>
Theme by Vdoing | Copyright © 2022-2025 Geeks_Z | MIT License
京公网安备 11010802040735号 | 京ICP备2022029989号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式