Java教程

2021年阿里Java高级面试题分享,透彻分析源码

本文主要是介绍2021年阿里Java高级面试题分享,透彻分析源码,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
## 一,session共享 首先第一个要解决的就是sesison共享的问题,如下图。 ![](http://www.www.zyiz.net/i/li/?n=2&i=images/20210630/1625032592760058.jpg) 通常有两种解决方案,第1种是配置nginx的负载集群策略为ip_hash,第2种是将session存储到其它地方,一般推荐放到redis中。 第1种方案适合于临时解决或者是为了兼容历史项目,但是从应用服务器无状态的角度考虑,推荐把用户会话session放到redis,如下图。 ![](http://www.www.zyiz.net/i/li/?n=2&i=images/20210630/1625032592984508.jpg) ## 二,本地缓存 如果使用本地缓存,当从单体迁移到集群后,就会面临缓存同步的问题,如下图。 ![](http://www.www.zyiz.net/i/li/?n=2&i=images/20210630/1625032592385409.jpg) 最佳实践是上分布式缓存,既解决了缓存同步的问题,也释放了应用服务器的内存资源,如下图。 ![](http://www.www.zyiz.net/i/li/?n=2&i=images/20210630/1625032593403564.jpg) ## 三,文件服务 应用服务器在上集群之前,文件通常会放在本地,或者单独的文件服务器上,因为文件服务需要占用大量的硬盘空间,以上两种方案都无法很好的解决硬盘扩容的问题,最佳实践是放到云存储上,比如阿里云的OSS,或者腾讯云的COS上,这样可以做到按需扩容,如下图。 ![](http://www.www.zyiz.net/i/li/?n=2&i=images/20210630/1625032593516407.jpg) ## 四,分布式环境下线程同步问题 在单机环境下,使用lock就可以解决线程同步的问题,一旦上了集群之后,lock就不管用了,这时需要上分布式锁,分布式锁的解决方案也有很多,我这里推荐使用redis的setnx,需要注意的是,如果redis是集群部署的,需要考虑这种情形:假设我们在redis的主节点上添加了一把分布式锁,不幸的是主节点挂掉了,而且主节点上的锁还没有同步到从节点上,如果此时有客户端来请求获得同一把锁,那么它将顺利地获得锁,之前那把锁会被无情地忽视掉,这就是分布式锁在Redis集群中遇到的麻烦。 ## 总结 至此,文章终于到了尾声。总结一下,我们谈论了简历制作过程中需要注意的以下三个部分,并分别给出了一些建议: 1. 技术能力:先写岗位所需能力,再写加分能力,不要写无关能力; 2. 项目经历:只写明星项目,描述遵循 STAR 法则; 3. 简历印象:简历遵循三大原则:清晰,简短,必要,要有的放矢,不要海投; > 以及最后为大家准备的福利时间:简历模板+Java面试题+热门技术系列教程视频 > **[戳这里免费领取文中资料](https://docs.qq.com/doc/DSmxTbFJ1cmN1R2dB)** ![在这里插入图片描述](http://www.www.zyiz.net/i/li/?n=2&i=images/20210630/1625032594807094.jpg) ![在这里插入图片描述](http://www.www.zyiz.net/i/li/?n=2&i=images/20210630/1625032595582071.jpg) ![在这里插入图片描述](http://www.www.zyiz.net/i/li/?n=2&i=images/20210630/1625032596761008.jpg)
这篇关于2021年阿里Java高级面试题分享,透彻分析源码的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!