首页 > 编程知识 正文

vue路由router面试题及答案,webpack打包原理 面试

时间:2023-05-06 11:27:37 阅读:48565 作者:2532

面试官:你对负载均衡了解多少? 你知道什么样的一般框架?问题分析:

工作中的小编也经常接触Nginx。 例如,美团的Oceanus框架是一个HTTP服务治理框架,该框架基于Nginx和ngx_lua进行扩展,主要提供服务注册和发现以及动态负载平衡功能。 在日常开发学习中,如果想了解公司的Oceanus,Nginx知识是必不可少的。 我一定需要

Nginx是最常用的,许多公司都在基于Nginx开发自己的负载平衡框架。

LVS

HA代理

F5、硬件负荷均衡,价格昂贵。

不管用哪个方案,目的都是解决同样的问题,掌握了一个框架的原理后,再看其他几个一定不费力。 接下来将通过Nginx的实例学习。

NGINX-logo-rgb-large

1.Nginx基本信息Nginx(发音为ttdzxc )和异步框架的网络服务器,也可以用作反向代理、负载平衡器和HTTP缓存。 这个软件是在自然柜子里制作的,2004年首次公开。 [6] 2011年成立同名公司提供支持。 [7]2019年3月11日,Nginx公司被F5网络以6.7亿美元收购[8]。

Nginx官网: http://nginx.org/

下载列表: http://nginx.org/en/download.html

————维基百科

请注意,与http://nginx.org/3358nginx.com不同,前者开源免费,后者企业版收费,商业版支持带外体检。

为什么选择Nginx

软件成熟,从2002年诞生到2019年,经过多年沉淀和大型互联网公司的实践改进,Nginx非常成熟,网络教程丰富,便于开发者维护。

高性能Web服务器,独立支持多达50,000个并发连接数。

使用异步、无阻塞、epoll和kqueue模型,压缩了请求和相应的数据大小,节约了宽带。

通过出色的反向代理服务器隐藏服务器地址,提高安全性。

Http缓存支持

只需安装Nginx并配置配置文件,即可实现Https访问。

工作器_ processes 1; 事件{ worker _ connections 1024; }http {include mime.types; efault _ type应用程序/octet-stream; sendfile on; keepalive_timeout 65; 服务器{ listen 443; server _ namewangzha.tech www.wangzha.tech; ssl on; 根html; 索引索引. html index.htm; SSL _ certificate/www/server/nginx/conf/1631800 _ www.wangzha.tech.PEM; SSL _ certificate _ key/www/server/nginx/conf/1631800 _ www.wangzha.tech.key; ssl_session_timeout 5m; SSL _ ciphersecdhe-RSA-AE s128-GCM-sha 2563360 ECD he : ecdh : AES 3360 high : 空: aNULL: MD5: ADH: RC4; SSL _ protocolstlsv1tlsv 1.1 tlsv 1.2; ssl_prefer_server_ciphers on; location/{ proxy _ pass http://47.99.146.16:80; proxy _ set _ headerx-real-IP $ remote _ addr; proxy _ set _ headerx-forwarded-for $ proxy _ add _ x _ forwarded _ for; proxy_set_header Host $http_host; }服务器{ listen 80; server_name www.wangzha.tech; }} 2.Nginx总体架构设计

nginx体系结构图

Nginx架构图像来自http://www.AOS abook.org/en/nginx.html

主从模式

Nginx启动时,将创建多个进程、一个主进程和多个工作器进程。 主进程主要负责读取配置文件并管理和维护多个工作器进程。 例如,主节点本身不处理用户请求,而用户访问的所有web服务都通过多个工作器进程进行处理,如一个大的内部rxdws。 Work

er 才是真正干活的,这种 Master Worker的主从设计理念在 。Worker 的数量可以通过配置文件随时调整,非常灵活。

Master 主要职责:

读取 Nginx 配置文件,配置实时生效。

监控 worker 进程运行状态,管理 worker 的创建与启动,当 worker 进程出现异常情况,Master 会自动重新启动 worker 进程。

接收用户请求,将请求分发给 worker 处理。

而 worker 进程事从 Master 进程 fork 过来的,worker 进程只负责处理请求,从读取请求,解析请求,处理请求,读取到服务器返回的 response 数据后,再将数据转发给客户端。每个请求只会被一个 worker 进程处理。

异步非阻塞 I/O

I/O 分两种,网络 I/O,读取 socket,另一种是磁盘 I/O,读取磁盘数据。我们知道计算机的 CPU 执行代码的速度极快,然而一旦遇到IO 操作,如读写文件、发送网络数据时,就需要等待IO操作完成。这样做CPU大部分都是在等待,等待蜗牛般速度的磁盘 IO 操作,这极大的浪费了 CPU 的性能,很显然,这种设计是不合理的,如果一个进程想要执行一个 read() 或 write() 同步调用,那么进程必须等到硬件完成 I/O 操作后才能进行下一步操作,这叫做同步调用。

Nginx 为了提供并发能力,避开了这种同步阻塞的设计,采用异步,非阻塞,使用 epoll 多路复用模型,这是 Nginx 支持高并发的灵魂所在,如果读者对 同步/异步 I/O 为什么会提高程序的响应速度不是很理解,推荐看 IBM 这篇文章:https://www.ibm.com/developerworks/cn/linux/l-async/ ,IO属于基础篇,在 Nginx 篇不做过多阐述了。

模块化设计

关于模块化设计可以简单的理解一个功能就是一个模块,类似于设计模式里六大原则之一“单一职责原则”,这种设计的好处就是“高内聚,低耦合”,Nginx 采用模块化设计继承了这个特点,且用户可以根据自己的需要选择性安装,具有高度的灵活性。

Nginx 共有五大类型的模块:

核心模块:提供最基本的核心服务,如进程管理,权限控制等。

事件模块:Nginx 支持事件驱动的核心模块。

标准 HTTP 模块:提供 http 相关功能,如代理,转发,压缩,加密,负载均衡。

Mail 服务模块:提供基本的邮件发送服务,邮件服务模块是 Nginx 的特色。

第三方模块:支持丰富的第三方自定义模块,

关于上述模块如何配置使用不必全部记下来,工作中现学现卖就可以,活学活用,记住这些模块的功能,用的时候再去查找文档。

如知道了 Nginx 提供了邮件服务,百度 Google 一下“Nginx 如何配置邮件服务” 就会得到下面的配置:

mail {server_name mail.myweb.name;auth_http mail.postfix.cn:80/auth.php; #配置了HTTP认证地址imap_capabilities IMAP4rev1 UIDPLUS IDLE LITERAL+ QUOTA;pop3_auth plain apop cram-md5;pop3_capabilities LAST TOP USER PIPELINING UIDL;smtp_auth login plain cram-md5;smtp_capabilities "SIZE 10485760" ENHANCESTATUSCODES 8BITMIME DSN;xclient off;server{listen 25;protocol smtp;}server{listen 110;protocol pop3;proxy_pass_error_message on;}server {listen 143;protocol imap;}} 3.总结

本节主要介绍了 Nginx 的特性和架构模型,在大公司,如果你是一名开发人员,你可能不会直接接触 Nginx 配置,会有专门的运维人员去做这件事,但是这不代表你可以不会,Nginx 的很多设计思想值得每个优秀的开发者学习,使用太广泛,如果做二次开发,Nginx 可以说架构师必须掌握的基础知识,面试经常会问 Nginx 如何实现高并发?你需要知道异步,非阻塞,epoll,需要知道 Master Worker 模型,Nginx常见的优化配置?为什么 Nginx 不使用多线程?

参考资料

http://www.aosabook.org/en/nginx.html

《Nginx高性能web服务器详解》

联系我

VX搜索【转行程序员】回复”加群“,我会拉你进技术群。讲真的,在这个群,哪怕您不说话,光看聊天记录也是一种成长。阿里/腾讯/百度资深工程师、Google技术大神、IBM工程师、还有我王炸、各路专一的小笼包都在,有任何不明白的都进群提问。

最后,觉得王炸到文章不错就来个三连吧:关注 转发 点赞

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。