nginx_扩容提升吞吐量

扩容方式

单机垂直扩容:硬件资源增加
水平扩展:集群化
细粒度拆分:分布式
	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
  • sticky
posted @ 2023-01-09 18:18  smatterer  阅读(210)  评论(0)    收藏  举报