一看就懂RPC之反向代理
1.前言
系统开发已经由单体服务转向为一个一个的微小服务,微小服务的好处就是每个服务只需要关心自己内部的业务,当需要相关业务数据的时候,就会面临服务调用的问题,服务调用其实也好解决,可以使用java自带的HttpURLConnection进行远程服务的调用,也可以使用HttpClient或者是OkHttp这样的第三方客户端进行远程服务调用,同样也可以使用高性能远程调用框架Dubbo。
目前比较流行的微服务技术栈,可以使用基于Netty实现的Dubbo,或者使用基于Http实现的SpringCloud,不管哪种技术,为了实现远程过程调用的便利性,使开发者只需要关注业务本身,而不需要关注调用细节,都采取了反向代理技术。反向代理技术在实现服务间透明调用起到了非常重要作用,既然重要,那么就有必要和大家一起来温习一下反向代理技术。
2.反向代理
2.1 代理的作用
代理的作用就是增强目标方法的能力,比如最常见的事务、Aop都是基于代理来实现的。当需要增强目标方法的能力,并且这些能力都是相同的,那么就可以采取代理的方式进行实现。
2.2 代理的分类
静态代理:静态代理需要为每个被代理的类创建一个代理类,当被代理的类过多的时候,就会导致代理类的增多,不便于维护。动态代理:动态代理不需要为每个被代理的类创建一个代理类,只需要一个全局的代理类,在需要的时候动态生成,便于维护。
2.3 静态代理
如图可