nginx_扩容提升吞吐量

扩容方式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
单机垂直扩容:硬件资源增加
水平扩展:集群化
细粒度拆分:分布式
    1.数据分区
    2.上游服务SOA化
    3.入口细分
        1.浏览器
        2.移动端原生App
        3.H5内嵌式应用
    4.数据异构化
        1.客户端缓存
        2.CDN缓存
        3.异地多活
        4.Nginx缓存
    5.服务异步化
        拆分请求
        消息中间件

水平扩展

会话管理

  • hash

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
########################################
ip_hash
    upstream httpd_get {
    ip_hash;
    server 192.168.44.102;
    server 192.168.44.103;
    server 192.168.44.104;
    }
    server {
        listen       80;
        server_name  localhost;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / {
            proxy_pass http://httpd_get;  #proxy_pass配置下 root 不生效
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
#中小型项目
#不想修改源代码
#通过这种方式做负载均衡,实现定向请求转发
#大型项目不适用,上游业务服务器宕机后会话没发保持
########################################
request_uri
#不支持cookie情况下,一些浏览器或者手机app
#可以在rul后拼上jessionid
#资源不平均分配
    upstream httpd_get {
        hash $request_uri;
        server 192.168.44.102;
        server 192.168.44.103;
        server 192.168.44.104;
    }
    server {
        listen       80;
        server_name  localhost;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / {
            proxy_pass http://httpd_get;  #proxy_pass配置下 root 不生效
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
########################################   
其他hash
#hash $cookie_jsessionid;
    upstream httpd_get {
        hash $cookie_jsessionid;
        server 192.168.44.102;
        server 192.168.44.103;
        server 192.168.44.104;
    }
    server {
        listen       80;
        server_name  localhost;
 
        #charset koi8-r;
 
        #access_log  logs/host.access.log  main;
 
        location / {
            proxy_pass http://httpd_get;  #proxy_pass配置下 root 不生效
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
可以解决同一个局域网内会话问题(比如一个公司里,ip就一个)

 

  • redis+SpringSession
  • sticky
posted @   smatterer  阅读(188)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示