聊聊代理
代理是什么?代理就是我代表你,仅此而已,这就是代理。
代理有啥好处?举个例子,我要去和人打官司,但是我不是法律通,法律小白,那怎么办?
好办!找个律师,由律师全权代理这件事,律师也就成了我的代理人,所有人需要找我的话,不用直接找我,请直接找我的律师,他是我的代理人!
找律师有什么好处?律师精通相关法律,并且知晓我全部事情,那么就可以运用他的法律专业知识和对我的事情了解,来帮我赢得官司!
因为律师的存在,补充了我在打官司这个事情中,法律知识和能力的缺失,律师带着我的案件和他的法律知识,成为一个新的个体:代理人!
这就是所谓代理:通过引入中间人对原有功能的缺失做一个补充增强,这个中间人就是代理人,这种行为就是代理。
生活中的代理随处可见,也比较简单,比如律师,我怎么知道我找你就行了?好办,拿出一个委托代理协议就可以了。给别人代办事情,出具一个委托代理证明即可。
我们使用时Nginx,把Nginx的地址对外发布,其他客户端访问时就知道访问这个地址就可以了。
静态代理
明白了代理是个什么事情,那么就来说说静态代理,什么是静态代理?
静态就是不变的,已知的。
我们上面的举的例子有些就是静态代理,比如在提起诉讼的时候,就已经确定了律师是谁。
这种一个事情的开始时候就确定下来的,就是静态代理。
动态代理
有静就有动,阴阳才能调和。
那么动态代理是啥呢?在事情的进行过程中才确切知道我的律师是谁,比如法官说,有请被告律师发言,结果突然在听众席中一个人起身滔滔不绝,所有人一脸懵逼!
不过这种情况确实是一个动态代理,在需要用到这个律师的时候,所有人才知道律师是谁,哪怕是被代理人都不知道。
是不是很诡异?这种情况对应到现实中是很难被接受的,而且很不利于事情的处理。
那么生活中是不是就没有了动态代理呢?答案肯定是否定的!
比如我办理了身份证,需要拿身份证的时候,我不方便过去,怎么办呢?找个人帮我拿一下。但是对于公安局来说,身份证这么重要的东西,不能随便来个人就可以领取啊!这么来办,整个代领取身份证的协议,到时候是本人或者不是不是本人,只要有这个协议,我就把身份证给你,对于公安局来说,我并不知道会是谁来领取,直到领取的人来了我才知道。
这就是所谓的动态代理。
动静对比
那么动态代理和静态代理哪个好呢?
各有各的优缺点
对于静态代理来说,比较简单,明了。
而动态代理就复杂了些,我们还得整个协议,然后确认协议等。
但是静态代理不够灵活,动态代理能带来更大的灵活性。
比如,我说不知道到时候自己能不能亲自过来领取身份证,如果是静态代理的话,这个时候就要指定一个人来帮我领,这种提前指定,死板,没办法变更。但是也简单,代理人过来,公安局直接就知道就是你了,也不用出具什么代理委托证明协议了。
这种方式最大的问题在于,我怎么能很好的确定下这个代理人呢?如果我确定好的人,到时候因为别的事,去不了了,我又没法变更代理人,这事就无解了。
正反向代理
无论正向代理还是反向代理,其实都是静态代理,正反代理常用于计算机网络中,这是因为在计算机网络中,多了一个固定的Client和Server,在这种固定模式下,代理人作为哪一方的代理是不同的。
比如,代理人作为Client的代理,那么这种情况下,就是一个正向代理,也叫Forward Proxy
如果代理人作为Server的代理呢,就是反向代理,因为和正向代理的方向相反,所以叫反向代理。
那么更具体的正向代理和反向代理的区别是啥呢?
就是看代理人在代理时,Client是有限的,还是Server是有限的。
如果Client的数量是有限的,并且和代理人强关联,那么就是一个正向代理
反之如果Sever的数量是有限的呢,就是一个反向代理。
这里的强关联,比如正向代理一般都是有认证到代理服务器的。
而反向代理的话,对于代理服务器是知道所有被它代理的Server。