高级面试题-基础
梳理出一些高级面试题及答案,方便同学们统一整理出标准答案。
技术原理
偏向中高级工程师,对java面试实现快速突击。
一基础知识
1、谈谈你对Nacos配置动态更新原理的理解
Nacos采用的是长轮询的方式,由Nacos客户端向Nacos服务端去发起配置更新的查询请求,所谓长轮询就是指客户端发起一次轮询请求到服务器端,当服务器端的配置没有任何变更的时候,这个连接会一直打开,直到服务端有配置变更或者连接超时之后才会返回。Nacos客户端需要去获取服务端变更的配置内容,但前提是它需要先去进行对比,它要将客户端本地缓存的配置信息和服务端获取的配置信息进行比较,一旦发现本地缓存的配置内容和服务端发过来的配置内容有差异的话,那么表示服务端的配置有更新,于是把更新的配置拉到本地,在这个过程中,有可能会因为客户端的配置比较多,从而导致对比的时间会比较长,配置同步的效率非常低了,于是Nacos针对这样一个场景,做了两方面的优化,第一是减少网络通信的数据量,客户端把需要进行对比的配置按配置项进行分片,每个分片的大小为3000项。第二是分阶段进行对比和更新,第一个阶段客户端把3000个配置项的key以及对应的value的MD5值