扩容方式
单机垂直扩容:硬件资源增加
水平扩展:集群化
细粒度拆分:分布式
1.数据分区
2.上游服务SOA化
3.入口细分
1.浏览器
2.移动端原生App
3.H5内嵌式应用
4.数据异构化
1.客户端缓存
2.CDN缓存
3.异地多活
4.Nginx缓存
5.服务异步化
拆分请求
消息中间件
水平扩展
会话管理
########################################
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