代理,指代替处理,A被B代理,A是被代理者,B是代理者,A的事情由B代替去做。
在互联网中,代理Proxy是位于客户端和服务端之间的一台服务器,该服务器安装了代理软件,称为代理服务器,有自己的ip和代理软件运行对应进程的端口,默认80。
正向代理
客户端和Proxy位于同一个局域网内,客户端对外透明,其一切操作均由Proxy代替完成。
客户端向Proxy发送请求,由Proxy代替客户端向服务端发送请求;服务端将响应结果返回给Proxy,由Proxy将相应结果返回给客户端。
透明代理,客户端不需要知道Proxy的存在,发送的请求会自动被内网的Proxy拦截,并做进一步的处理。
客户端通过内网ip发送请求,内网ip可手动配置,也可通过DHCP自动获取。内网的DNS会将客户端的所有请求域名解析为Proxy的ip。
Proxy会从ISP处随机获取一个外网ip,并通过外网ip代替客户端发送请求。外网的DNS会将客户端的请求域名解析为指定服务端的ip。
反向代理
Proxy和服务端位于同一个局域网内,服务端对外透明,其一切操作均由Proxy代替完成。
客户端向服务端发送请求,由Proxy代替服务端接收请求,并选择合适的服务端发送请求;服务端将响应结果返回给Proxy,由代理服务器将相应结果返回给客户端。
===========================================
Nginx为开源的Web服务器和反向代理服务器,通常将静态页面文件和资源部署在Nginx上,可直接访问。将Nginx部署在客户端和服务端集群之间,作为一台反向代理服务器,实现客户请求的负载均衡。
Dubbo位于公司内部的服务器集群之间,实现服务端服务调用的负载均衡,用于公司内部跨部门、跨组、跨项目之间服务的远程过程调用RPC。
客户端发送请求给Nginx服务器;若请求静态资源,可在Nginx上直接找到;若请求动态资源,其会查找配置文件,从中找到服务集群的配置,并根据权重等信息来选在一台合适的服务器。
Nginx发送请求给选定的服务器,该服务器在处理请求的过程中,若用到其它服务集群中的服务,通过Dubbo负载均衡到服务集群中某台合适的服务器,完成服务的调用,服务器接受请求处理后,将处理结果响应给Nginx服务器,Nginx服务器会将处理结果响应给客户端。
Dubbo提供注册中心服务器,由Zookeeper实现目录管理,对应一个管理页面。服务提供者通过配置,在注册中心注册服务,实际就是添加一个目录、服务的ip和端口。服务消费者通过配置,在注册中心查找服务,具体使用哪一个,由Dubbo完成负载均衡。