1.DNS域名解析是先查找本地的host文件是否有配置域名解析,本地没有就去运营商查找。
2.Nginx可以实现反向代理、负载均衡、故障转移、跨域、tomcat限流、防止Doss攻击、黑名单白名单等。
3服务器集群的作用:减轻单台服务器访问压力、故障转移。存在的问题:①分布式Session一致性的问题,解决方案:Spring-Session框架,原理就是将Session的内容缓存到Redis,所以可以直接采用tomcat替代Session②分布式Job幂等性的问题,XXL-JOB解决③分布式日志的采集问题,ELK+kafka解决④分布式全局的id的生产,雪花算法解决。
4.网站跨域问题:微服务架构项目中采用前后端分离,Vue部署的域名和端口可能和接口的域名或端口不一致造成的。跨域的问题属于浏览器的安全策略,从浏览器中访问的域名和端口只要和页面中发送json请求,如果域名或端口一致的情况下可以成功访问到请求,但是不能够获取到结果。
5.如何解决网站跨域问题:①在相应头中设置允许跨域的,相应配置response.setHeader("Access-Control-Allow-Origin","*")②使用HttpClient转发,效率低③使用jsonp处理,缺点就是只支持get请求,不支持post请求,底层采用的脚本注入形式。④使用Spring boot注解形式,@CrossOrigin。
6.LVS作用是linux的虚拟VIP技术,阿里云购买的linux云服务器默认不支持虚拟VIP技术,使用lvs管理我们的NGINX集群。KeepAlived是个心跳脚本的检测软件,可以间隔发送心跳,检测服务器是否有宕机,如果宕机会自动重启脚本,重启失败会发送邮件告知运维。
7.动静分离架构模式有哪些方案?①基于NGINX实现动静分离,很少使用因为不支持CDN②使用第三方静态资源服务器oss对象云存储、七牛云等。
8.高并发解决方案思路:核心思路是看项目是web还是移动app项目,如果是web项目,因为网页中大多数是静态资源占用整个服务器带宽,而我们编写的接口响应一般的情况下占用不了多大的服务的带宽,所以要采用动静分离的架构模式:①前端优化:将静态资源存入到第三方的对象存储服务器(对象存储服务器还可以自带cdn加速)②对我们静态资源实现压缩,最好建议使用.,min格式。后端优化:①使用微服务网关或者是nginx对我们接口实现api的限流、服务保护、黑名单和白名单②使用redis缓存减轻我们服务器访问的压力,Redis可以采用集群或者读写分离,提高吞吐量③使用多线程或者MQ异步处理我们代码可以快速的响应给客户端④tomcat/jvm参数调优⑤mysql集群实现分库分表。