最近在做一个大量查询展示的项目,写了很多模块的查询接口.有一个页面前端要调13次接口.有大量接口被浏览器阻塞.
本来想着通过门面模式整合一些接口来解决问题,突然想到为什么不试试多机多实例部署呢.Chrome对单个域名只有6并发,再加一个域名效果应该就不差了吧.
项目使用的是zuihou框架,启动了gateway,oauth,authority和自定义的work模块.部署在内网0网段49机器上,均通过docker部署.使用nacos作为配置和服务注册中心.
测试时将work模块单独部署到0.45服务器上,依旧是docker部署.这里遇到一个问题是服务注册到nacos上时注册的ip是docker内网ip而非宿主ip,导致每次前端请求都只能成功访问到49上的服务,访问45的服务时gateway就会fallback.
百度后发现需要在启动docker容器时指定使用宿主ip,随之又遇到了一个域名解析异常的问题,可能跟我使用了--hostname参数有关,这个没有深究按住不表.但是45和49上的服务都能处理请求了,有日志输出.但是浏览器请求阻塞的问题并没有好转,依旧是只能处理6个并发.
后来想到前端请求是统一访问49上的gateway服务的.可能问题出在这里.
前端服务也是通过docker部署,拉取了一个nginx镜像然后将vue编译打包后的文件复制到指定路径下.nginx配置文件里配置的proxy_pass 指定了请求统一访问49上的gateway端口,就想着应该修改该配置,在HTTP节点下增加一个upstream配置项.指定两个server ip和端口.