nginx 反向代理 以及优缺点

负载均衡算法:
(1)对所有的后台服务器轮训发送请求。
(2)跟踪和后台服务器当前的活跃连接数目,最少的连接数目说明这个服务器负载最轻,将请求分配给它。
(3)请求会分配给响应最快和活跃连接数最少的后台服务器
(4)以用户自定义资源(如url)的方式计算hash值完成分配,其可选consistent关键字支持一致性hash特性。
会话一致性:
用户(浏览器)和服务器端交互的时候,通常在本地保存一些信息,而整个过程叫做一个会话(Session)并用唯一的Session ID
标识。因为HTTP协议是无状态的,所以任何需要逻辑上下文的情形都需要使用会话机制。保证会话一致性:相同的会话每次请求都会分配到同一个后台服务器上。
代理方式是代理内部网络用户访问internet上服务器的连接请求,客户端必须指定代理服务器,将请求先发给代理服务器,代理服务器发给Internet上的服务器。(并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理。)隐藏了真实的客户端。
Nginx负载均衡策略:
(1)轮询(默认)
每个请求按照时间顺序逐一分配到不同的后台服务器,如果后端服务器down掉,能自动删除

(2)指定权重
指定轮询几率,weight和访问率成正比,用于后端服务器性能不均的情况。

(3)IP绑定ip_hash
每个请求按访问Ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题

(4)fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的有限分配

(5)url_hash(第三方)
按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器。

动静分离:将动态网站中的动态网页按照一定规则把不变的资源和经常变得资源分开,我们就可以根据静态资源的特点将其做缓存操作。
为什么用Nginx?优点
(1)高并发,高性能
(2)可扩展性好
(3)高可靠性:可以在服务器行持续不间断的运行数年
(4)热部署:可以在不停止Nginx服务的情况下升级Nginx
(5) BSD许可证:可以将源代码下载下来进行修改后然后使用自己的版本
Nginx的四个主要组成部分:
(1)Nginx二进制可执行文件:由各模块源码编译出一个文件
(2)Nginx.conf配置文件:控制Nginx行为
(3)acess.log访问日志:记录每一条HTTP请求信息
(4)error.log错误日志:定位问题
grpc远程调用:
grpc是基于HTTP2.0传输层协议承载的高性能开源软件框架。下面所有的信息都由给RPC进行封装:gRPC分层框架

交换机在开启gRPC功能后充当gRPC客户端的角色,采集服务器充当gPRC服务器角色
交换机会根据订阅的事件构建对应数据的格式(GPB/JSON),通过Protocol Buffers进行编写proto文件,交换机与服务器建立gRPC通道,通过gPRC协议向服务器发送请求信息。
服务器收到请求消息后,服务器通过Protocol Buffers解释proto文件,还原出最先定义好格式的数据结构,进行业务处理
数据梳理完后,服务器使用Protocol Buffers重新编译应答数据,通过gRpc协议向交换机发送应答消息
交换机收到应答消息后,结束本次给RPC交互
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。隐藏了真实的服务器。
Nginx就是性能非常好的反向代理服务器,用来做负载均衡。

​ 在计算机世界里,由于单个服务器的处理客户端(用户)请求能力有一个极限,当用户的接入请求蜂拥而入时,会造成服务器忙不过来的局面,可以使用多个服务器来共同分担成千上万的用户请求,这些服务器提供相同的服务,对于用户来说,根本感觉不到任何差别。

反向代理的实现:

1)需要有一个负载均衡设备来分发用户请求,将用户请求分发到空闲的服务器上

2)服务器返回自己的服务到负载均衡设备

3)负载均衡将服务器的服务返回用户

​ 以上的潜台词是:用户和负载均衡设备直接通信,也意味着用户做服务器域名解析时,解析得到的IP其实是负载均衡的IP,而不是服务器的IP,这样有一个好处是,当新加入/移走服务器时,仅仅需要修改负载均衡的服务器列表,而不会影响现有的服务

反向代理负载均衡技术:把将来自internet上的连接请求以反向代理的方式动态地转发给内部网络上的多台服务器进行处理,从而达到负载均衡的目的。

反向代理负载均衡能以软件方式来实现,如apache mod_proxy、netscape proxy等,也可以在高速缓存器、负载均衡器等硬件设备上实现。
优点:(1)反向代理负载均衡可以将优化的负载均衡策略和代理服务器的高速缓存技术结合在一起,提升静态网页的访问速度,提供有益的性能;
(2)由于网络外部用户不能直接访问真实的服务器,具备额外的安全性(同理,NAT负载均衡技术也有此优点)。

其缺点主要表现在以下两个方面:
(1)反向代理是处于OSI参考模型第七层应用的,所以就必须为每一种应用服务专门开发一个反向代理服务器,这样就限制了反向代理负载均衡技术的应用范围,现在一般都用于对web服务器的负载均衡。
(2)针对每一次代理,代理服务器就必须打开两个连接,一个对外,一个对内,因此在并发连接请求数量非常大的时候,代理服务器的负载也就非常大了,在最后代理服务器本身会成为服务的瓶颈。
一般来讲,可以用它来对连接数量不是特别大,但每次连接都需要消耗大量处理资源的站点进行负载均衡,如search等。

你可能感兴趣的:(java,nginx反向代理)