1、首先明确一下定义,一般来说隧道指将后端服务通过代理服务器暴露为共有服务时,从网关到后端服务的通信连接称为隧道。在单集群内,隧道可以通过,比如建立,这是因为在同一个集群内,网关可以直接访问后端服务。在多集群管理的语境下,隧道的难点主要在于网关往往不可直接访问后端服务。下文的所有隧道均基于这一背景。
2、在未来越来越注重网络安全的情况下,各个集群与外部网络的链接将严格首先,出入流量会被/网关严格把控。各个8集群作为一个,其并不直接服务用户,故基于8的平台决不可直接将8的暴露,否则会带来令人头疼的权限问题和安全隐患。
3、同时平台的往往和各个集群不在同一个子网内,甚至不在同一个机房内。此时网关直接访问服务受限,通信时,只能通过由主动发起的连接进行。此时该如何建立通信隧道。
4、上述隧道难以在于:假设有一个部署在后端集群,若只能在后端集群主动发起连接,整个后端集群如何同时充当服务端。注:这里没有指明客户端,即不一定需要同时充当服务端,可将请求转发到8即可。
5、答案为支持双工。双工指通信设备既是发送器,也是接收器。在中指既可发送请求;又可接受请求。是一个全双工协议,一端可在接受消息的同时发送消息。
1、相应的1.1是半双工协议,开启长连接之后客户端可发送多个请求,同时接收服务端回复,但1.1不支持主动向发起请求,双工隧道的本质在于连接是全双工的。
2、网络是分层的,无论是还是还是其他的协议,均基于传输层的连接(/)进行协议封装。不管和网关建立什么应用层连接,只要复用了底层的连接,就可以建立。
3、到网关的双工连接。考虑这样的场景:主动发起连接,与建立一个支持双工通信的链接,网关访问8集群时,请求由进行转发。这样就实现了我们想要的隧道。正是这样做的。
4、发起连接,同时作为8的代理提供服务。这样网关就可以直接访问8了。访问过程中,网关的请求通过发送到,收到后再向发送请求。
5、的路径是相同的。看过了的方案,再看一下业界。有若干种可行的方式,但所有的方式都可以归纳为建立通道。