扩容
扩容
参考张一明《Nginx高并发网站技术架构实战》
扩容方式
单机垂直扩容:硬件资源增加
水平扩展:集群化
细粒度拆分:分布式
- 数据分区
- 上游服务SOA化(原生支持水平/垂直扩容)
- 入口细分
- 浏览器
- 移动端原生App(物联网)
- H5内嵌式应用
数据异构化
- 多级缓存
- 客户端缓存
- CDN缓存
- 异地多活
- Nginx缓存
- 多级缓存
服务异步化
- 拆分请求
- 消息中间件
扩容原则
- 无状态原则
- 弹性原则
单机垂直扩容:硬件资源增加
- 云服务资源增加
- 整机:IBM、浪潮、DELL、HP等
- CPU/主板:更新到主流
- 网卡:10G/40G网卡
- 磁盘:SAS(SCSI) HDD(机械)、HHD(混合)、SATA SSD、PCI-e SSD、 MVMe SSD
- SSD
- 多副本机制
- 系统盘/热点数据/数据库存储
- 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
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指令无法保证后端服务器的负载均衡,可能导致有些后端服务器接收到的请求多,有些后端服务器接收的请求少,而且设置后端服务器权重等方法将不起作用。
- 其他hash
- hash $cookie_jsessionid;
- hash $request_uri;
- 使用lua逻辑定向分发
Redis + SpringSession
上次更新: 2025/02/26, 08:57:57