高并发(High Concurrency)
是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。
高并发相关常用指标:
响应时间:系统对请求做出响应的时间。
吞吐量:在一个单位时间内处理的请求数量。
QPS:每秒响应请求数。
并发用户数:能够同时承载正常使用系统功能的用户数量。
高可用(High Availability):通常来描述一个系统经过专门的设计,从而减少停工时间,而保持其服务的高度可用性。
高性能:是指服务响应时间快,(CPU/处理器/内存)特别是在高并发下响应时间不会急剧增加。
Nginx是一个轻量级,高性能的HTTP和反向代理web服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强。
反向代理
负载均衡
动静分离
正向代理,是属于客户端那一边的,需要由客户端进行代理配置,浏览器先访问vpn地址,vpn地址转发请求,并最后将请求结果原路返回来
反向代理是作用在服务器端的,是一个虚拟ip(VIP)。对于用户的一个请求,会转发到多个后端处理器中的一台来处理该具体请求。
长连接:连接->传输数据->保持连接 -> 传输数据-> ...........->直到一方关闭连接,多是客户端关闭连接。 长连接指建立SOCKET连接后不管是否使用都保持连接,但安全性较差。
短连接:连接->传输数据->关闭连接 比如HTTP是无状态的的短链接,浏览器和服务器每进行一次HTTP操作,就建立一次连接,但任务结束就中断连接。 因为连接后接收了数据就断开了,所以每次数据接受处理不会有联系。 这也是HTTP协议无状态的原因之一。
http是超文本传输协议,信息是明文传输,https则是具有安全性的加密传输协议。
http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
http的连接很简单,是无状态的;HTTPS是由SSL+HTTP协议构建的,可进行加密传输、身份认证的网络协议,比http协议安全。
将同一个业务,部署到多台服务器上面,然后在这些服务器的前面通过负载均衡服务器来择优选择哪一台服务器去执行;
将服务器接收到的请求按照规则分发的过程,称为负载均衡。
1、轮询(默认)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除
2、指定轮询几率
weight和访问比率成正比,用于后端服务器性能不均的情况默认选项,当weight不指定时,各服务器weight相同,数字越大,表明请求到的机会越大
3、ip_hash
每个请求按访问ip的hash值分配,这样同一客户端连续的Web请求都会被分发到同一服务器进行处理,可以解决session的问题。当后台服务器宕机时,会自动跳转到其它服务器。
4、url_hash(第三方)
nginx按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存服务器、文件服务器、静态服务器时比较有效。缺点是当后端服务器宕机的时候,url_hash不会自动跳转的其他缓存服务器,而是返回给用户一个503错误。
5、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配
session保持(黏性Session ):就是将用户锁定到某一个服务器上
session复制:在所有服务器上都保存一份用户的Session信息
session共享:SpringSession+Redis方式实现