要理解正向还是反向,我们要站在应用的视角来看。
假设我是ServiceA,ServiceA既有访问其他服务的需要,也有被其他服务访问的需要。一般来说,应用部署在内网,无论是访问其他服务还是被其他服务访问都需要通过代理(Proxy)来实现。
正向代理
ServiceA需要通过代理(Proxy)访问其他服务,那么这个代理就被称为正向代理。ServiceA是访问发起者,代理是中介,代理帮发起者找到调用者,从ServiceA的立场看,这是正向的。
反向代理
ServiceA需要通过代理(Proxy)被其他服务访问,那么这个代理就被称为反向代理。ServiceA被调用方,代理是中介,代理帮助发起者调用ServiceA,从ServiceA的立场看,这是反向的。
判断一个代理是正向还是反向,首先要有立场,有了立场,参照物才有意义,所以我们一开始就强调,我们站在ServiceA的立场上看问题。
上图是一个比较简单经典的Service部署图,对ServiceA来说,既有访问ServiceN的需要,也有被Client访问的需要。
ServerW服务器部署的Proxy代理Client的请求到ServiceA,其中Proxy还做了负载均衡,这个Proxy就是反向代理。
ServerY服务器部署的Proxy代理SeriveA到ServiceN的请求,一般来说,ServiceY这个服务器需要专门打通到外网的通路,其他的服务器是不通外网的,那这个代理就是正向代理。
参考资料: