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