本文已参与[新人创作礼]活动,一起开启掘金创作之路。
大家好,我是阿鱼。金三银四来了,又到了打工人面试的季节了,所以我想着写一个系列文章来记录总结我的找跳槽找工作之旅。
本文采用一问一答的方式来回顾面试和知识点。
面试官:小伙子,简历上写了熟悉nginx,项目也有使用nginx,那么请你介绍介绍nginx把,它是干什么用的。
fish:nginx首先是一个web服务器和Tomcat一样是提供服务的,但是它比Tomcat更轻量级,占用内存少,启动速度快,高并发能力强,通常我们把nginx做为反向代理服务器。
面试官:好,那么问题来了,什么是反向代理,什么是正向代理呢,有什么区别?
fish:通常我们的应用是客户端发送请求直接到服务端,这样就是没有代理。但是有些时候我们客户端不能直接访问服务端,比如说我们不能直接访问google,我们就需要设置代理服务器做正向代理。我们将请求发给代理服务器,代理服务再将请求转发到Google,Google响应后把信息通过代理服务器再转给我们,这就是正向代理。反向代理呢,也是在客户端和服务端之间,但是反向代理是服务端设置的代理服务器,反向代理服务器通过对客户端请求进行处理转发请求到那一台服务器上,这样便解决了负载均衡的问题。
面试官:那你说说nginx是怎么解决负载均衡的呢?
fish:这个负载均衡嘛,就是服务器端一般都有多台服务器集群,那么我们的客户端请求该到那一台服务器上呢,这就用到了nginx的负载均衡。nginx通过不同的负载均衡策略对请求进行处理,
第一种是默认的轮询方式,每个请求按照时间顺序逐一分配到不同的服务器上面去,如果其中有一个服务器down掉了,那么就将他自动剔除。第一种方式适合各个后端服务器性能差不多,如果各个服务器性能不同则容易造成资源分配不合理的情况。 第二种方式是加权重方式,给每个服务器的配置上加上weight = 数字,数字越大表示权重越高,请求就优先进入权重高的服务器。这样资源分配就合理了。 第三种是ip哈希法,根据请求ip的hash值来分配服务器,可以保证同一ip发出请求到同一个服务器上,也可以让不同ip的相同hash值的请求到同一个服务器上。
面试官:好,你说这么多,我现在就想知道你是怎么写nginx的配置文件的,用的哪种分配策略?
未完待续