1. 需求背景
浏览器针对单个网站地址(ip+port)存在“6个请求”限制;通过多子域配置可以突破这个限制,增加网站的响应效率,尤其是针对三维服务这类大请求量服务。
注意:
- 多子域的目的是为了突破浏览器"6个请求"的限制(【浏览器请求并发限制】,与后端应用提供的业务功能无关。
- 这个配置项的底层实现原理其实就是为当前网站增加几个访问端口,比如除了原始的123端口之外,还可以通过456,777端口访问;仅此而已,没有任何业务功能上的变化和影响。
- 浏览器对于"同一个网址"采取的是 ip + port 的组合认定,只有两者都相同才会认定为同一个网站,这也是通过开放多个端口就可以突破该项限制的原因。
2. 实现
本项功能需求的应用场景比较窄,因此这里直接给出解决方案,不做原理性解读。
以下三个类拷贝到项目中即可。
// ============================== 1/3 MultiportNettyWebServer
// 组合模式
public class MultiportNettyWebServer implements WebServer {
private final List<NettyWebServer> servers;
private final ApplicationContext ac;
public MultiportNettyWebServer(List<NettyWebServer> servers, ApplicationContext ac) {
this.servers = servers;
this.ac = ac;
}
@Override
public void start() throws WebServerException {
servers.stream().forEach(server -> server.start());
}
@Override
public void shutDownGracefully(GracefulShutdownCallback callback) {
servers.stream().forEach(server -> server.shutDownGracefully(callback));
}
@Override
public void stop() throws WebServerException {
servers.stream().forEach(server -> server.stop());
}
@Override
public int getPort() {
// ReactiveWebServerApplicationContext.createWebServer() 中注册了WebServerStartStopLifecycle 参与S

最低0.47元/天 解锁文章
1997

被折叠的 条评论
为什么被折叠?



