我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Nginx_lua的优势和劣势有哪些

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Nginx_lua的优势和劣势有哪些

这篇文章主要讲解了“Nginx_lua的优势和劣势有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Nginx_lua的优势和劣势有哪些”吧!

首先让我们来了解一下Nginx_lua的设计指导思想:

1、基于Nginx 快速开发高性能、大并发的网络服务。

2、提供“同步非阻塞” 的I/O 访问接口简化I/O 多路复用体系中的业务逻辑开发:

■“同步”的主体是用户代码与其发起的I/O 请求处理流程之间的时序关系,意即I/O 请求处理完成前用户代码将一直挂起。

■“非阻塞”的主体是服务进程,意即I/O 请求的处理不会导致服务进程阻塞等待,而是可以继续处理其他请求的用户逻辑。

Nginx的特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页伺服器中表现较好。目前中国大陆使用nginx网站用户有:新浪、网易、 腾讯,另外知名的微网志Plurk也使用Nginx。

Nginx服务器及Lua版本的选择

1)Nginx高性能开源WEB服务器的选择

清无是在08年开始接触Nginx服务器的,当时高性能的开源WEB服务器还有lighttpd,那么一淘网技术专家清无为什么会选择Nginx呢?Nginx哪方面比较有它的优势?清无介绍说,lighttpd和Nginx的比较中,有一个很明显的缺点就是lighttpd的模块机制设计的很不好,lighttpd的模块机制过多的把模块本身的请求处理逻辑和底层的网络事件的处理组合在一起,所以不像Nginx的模块结构这么清晰,当然Nginx的模块设计很大程度上也借鉴了Apache的这种模块设计,所以这块有一个先天的优势。当时其实他最早接触lighttpd,然后Nginx出来以后,就对比它们模块结构上的差异后,觉得Nginx似乎更有优势一些。实测对于我们这种网络I/O密集型的应用来说,只要不是你实现的这个逻辑有多大缺陷,其实在放lighttpd或者Nginx差别不是特别大。

在比较选择的过程中,首先从架构出发,如果有问题的话无论你实现如何它都是有问题的,所以我的比较首先在架构搭建上,每连接或者每请求单线程单进程这种服务模型,直接就被刷掉,肯定不可能做到很高的服务能力。余下来清一色的都是基于RO多路的这种结构体系,那么在这个体系上我们才去检验,实际上拿一个IPP的请求来压测看它实现的质量如何,通常来说这部分一旦架构体系决定以后,实测这个性能差异不是特别的大,除非说是某个特性一个实现另一个没实现这种情况,我们测出来的差异通常是在10%-20%上下波动而已。

2)Lua版本的选择

在小编与清无的交流中了解到目前一淘网所使用lua的版本是5.1.2,当小编提出是否版本越高性能越强时,清无则认为不太对。对于lua来说每一个版本的变化意味着它将加入新的语法元素或者变更了内部的一些实现的方式。严格意义上并不说明它的性能就好,比如对5.2和5.1来说,不管对于环境表或者其它的一些机制的修改上面,严格的来说他都是一种新的语言了。所以目前来说迁移到5.2***的障碍其实还是5.2里面对于底层接口的这种概念的变化。因为5.1里面对于一些方面下了很多工夫,然后使用它的全局表加环境表这种机制。但是5.2里面彻底取消了全局表的概念,也取消了CU级别上一系列对环境表操作的接口,对我们来说肯定是不能平滑的迁移到5.2,如果有这个需求的话,我们可以做,但目前还没有看到这个需求。另外一个阻碍我们升级版本号的问题是Lua JIT,lua JIT的性能比标准的lua要高很多,所以深层里面我们通常用JIT,但是luaJIT目前对lua5.2的支持并不是那么紧,它目前还是以5.1为主,所以这块我没可能较长的时间跟着lua JIT的脚步来。

在一淘网的应用中,清无介绍说,Nginx_lua主要应用在两块地方,一块是传统的一淘数据库量子统计店铺经,数据接口部分完全是用Nginx_lua来做。另一块是一淘的广告部门有一部分数据接口也使用着Nginx_lua。

Nginx_lua的性能测试比较

其实也有很多人一直还在使用Nginx_php这种组合搭配,对于Nginx_lua组合的优势在哪里呢?清无介绍说,Nginx+php之间是要有进程之间通信的,这样以来基础的性能开销就很大。lua是嵌在Nginx进程内部的,它不需要有两套进程在那里独立工作。所以这块从结构上来说就有决定性的优势在里面。再加上线程之间通讯的时候需要大量的反序列化和序列化的工作,然后两套进程带来额外情况是更多的进程更多的切换开销,所以单机上面Nginx_php要比Nginx_lua要低很多。但是相对来说仍然要回到我们做什么事情上面,因为Nginx_lua目前***的劣势就是周边的模块相当的不健全,我们需要大量的时间来积累这些模块。php积累了十几年的时间了,如果说你对性能的要求并不是那么高,我的并发数就是几十,那么你用php就是最合适的。但是如果像一淘数据的数据接口,机器数就那么一点,因为我的大量成本在MySQL集群上面,它是这块的主力,那么对外的数据接口我希望尽可能降成本,并发数又非常大,php肯定是不行,那么我们就要选择Nginx_lua。但这块的话对模块的劣势看起来不是那么大,因为它的逻辑相对来说较为固定,我们可以忍受这样的成本,我们去为这个逻辑来定制一些模块。

Nginx_lua的优势和劣势有哪些

Nginx_lua的优势和劣势有哪些

从上面的两张性能测试图中我们总结Nginx_lua的适用场景:

  1. 网络I/O 阻塞时间远高于CPU 计算占用时间、同时上游资源非瓶颈(可伸缩)的网络应用,如高性能网络中间层、HTTP REST 接口服务等;

  2. 期望简化系统架构,让服务向Nginx 同质化的Web 站点;

Nginx_lua的优势和劣势

对于Nginx_lua的劣势在刚刚和Nginx_php的对比的时候清无也介绍了一个是周边模块不完善,不健全的问题。如果你用到的这个东西比较复杂的时候可能生产力上不去,目前Nginx_lua最适合的人员是数据接口层,以及所有的网络中间层,你需要最求并发,高性能的网络中间层。因为它本身的逻辑相对来说比较简单,或者完全用lua本身就可以变现出来,这个用起来收效比例是***的。那么如果你目前要做一个复杂的WEB访问站,有大量模板要套,有大量的复杂逻辑嵌在里面,然后要访问mail要访问其他服务的话,目前来说我觉得还是php或者其他比较成熟的语言。就我们目前应用来说也是这样,中间层会大量的使用lua,但是前端展现层的话要么全部移到浏览器上面用JS+模板的形式来实现,要么就是用PHP这样来做。

另外的劣势就是调试的辅助工具不太多,因为高级点的php程序员会往往会使用XDebug或者其它的调试工具,可以单步调试,在线调试。跟php相比目前还欠缺这样的一个机制。到时候我们会仿照XDebug 去实现DPT V2协议,我们实现兼容DPT V2这样的一种机制内连到Nginx_lua里面,那样Nginx_lua也可以单步调试。到时候我们也会分享给大家。

***我们来归纳一下清无介绍的几点优势和劣势:

优势:

  • 同步非阻塞I/O 形式直观易懂,并发服务能力强

  • CPU、内存运行开销低

  • 同Nginx 结合度高,可方便粘合现有Nginx 模块功能

劣势:

  • 属于新技术方案,Lua 相比于PHP、Ruby 等广泛使用的开发

  • 语言,周边附属设施尚不够健全,需要时间积累

Nginx_lua的需求以及性能的追求

在需求方面,清无认为在一淘网的数据接口的这部分是完全可以满足的,至于其他的需求我们还要具体发现,寻找***决解方案。因为在计算机行业没有一招吃遍天这种事。

那么作为一名技术人员,在性能的追求是适合而止还是无止境的追求呢?清无表示,这个要看我们是在做生意还是在个人事情,如果是在公司,比如在具体的事情上面,然后是一个团队协作的情况下,那么盲目的追求性能的极限是一个不合适的行为,因为你的追求是要付出相应的成本和开销的,而往往在一个企业的环境里面这个是不可容忍的。最合适的架构往往是针对你去解决问题的那个架构,而不是去追求效率***的架构。所以我们具体在企业里面做项目的时候,显然适可而止是***的。盖过了你这个用户的***需求你就没必要去付出更多的精力来做,因为其他的问题有很多,你没必要停留在性能这个问题上,性能只是其中的一个问题,在一个问题上没必要投入太大的精力。但是,从开发人员个人的角度来说,追求性能的极限是一个很好的想法和行为,因为开发者自己对性能极限的追求体现出对***的追求,对于***的追求意味着它可以从上层到底层的专研,而专研是提升个人素质最有效的动力。所以是分开来看这个问题。

感谢各位的阅读,以上就是“Nginx_lua的优势和劣势有哪些”的内容了,经过本文的学习后,相信大家对Nginx_lua的优势和劣势有哪些这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Nginx_lua的优势和劣势有哪些

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Teradata的优势和劣势有哪些

Teradata是一种用于大数据分析和数据仓库的数据库管理系统。它有很多优势,但也有一些劣势。优势:高性能:Teradata专门设计用于处理大规模数据分析,可以提供高性能的查询和分析速度。可伸缩性:Teradata能够轻松扩展以处理不断
Teradata的优势和劣势有哪些
2024-03-08

Prometheus系统的优势和劣势有哪些

Prometheus是一个开源的监控系统,具有以下优势和劣势:优势:灵活性:Prometheus具有灵活的数据模型和查询语言,可以根据不同的需求定制监控指标和报警规则。可扩展性:Prometheus支持多种数据源和存储后端,可以轻松扩展
Prometheus系统的优势和劣势有哪些
2024-03-04

CDN服务器的优势和劣势有哪些

CDN(内容分发网络)服务器的优势和劣势如下:优势:提高网站性能:CDN服务器可以缓存网站的静态内容,加速用户访问速度,提高网站性能。减轻源服务器负担:CDN服务器可以分担源服务器的负荷,减轻源服务器的压力,提高源服务器的稳定性和安全性
CDN服务器的优势和劣势有哪些
2024-04-29

香港主机有哪些优势和劣势

这篇文章主要介绍“香港主机有哪些优势和劣势”,在日常操作中,相信很多人在香港主机有哪些优势和劣势问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”香港主机有哪些优势和劣势”的疑惑有所帮助!接下来,请跟着小编一起来
2023-06-07

多线服务器的优势和劣势有哪些

多线服务器的优势:提高性能:多线服务器可以同时处理多个请求,有效提高了服务器的处理能力,可以更快地响应客户端请求。提高稳定性:多线服务器可以在某一个线程出现问题时继续运行其他线程,提高了服务器的稳定性和可靠性。节约资源:多线服务器可以更有效
多线服务器的优势和劣势有哪些
2024-04-29

python的优劣势有哪些

本篇内容介绍了“python的优劣势有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、Python在AI中占主导地位Python在数据
2023-06-02

go语言有哪些优势劣势

go语言的优势:1、简洁、高效、安全;2、并发处理能力强;3、静态类型和编译型;4、丰富的标准库;5、跨平台和可移植性;6、强大的性能;7、原生支持多范式编程;8、垃圾回收机制;9、强大的并发模型。go语言的劣势:1、语法相对较新;2、生态
go语言有哪些优势劣势
2023-12-11

独立服务器有哪些优势和劣势

独立服务器有哪些优势和劣势?独立服务器是一种网络服务器,专门为一个客户或组织提供服务,与其他用户共享服务器资源不同。它具有独立的硬件和软件资源,拥有自主权和控制权。以下是独立服务器的优势和劣势。
独立服务器有哪些优势和劣势
2024-01-24

双线服务器的优势和劣势有哪些

双线服务器是指同时连接两根独立的网络线路,具有更高的稳定性和可靠性。其优势和劣势如下:优势:高可靠性:双线服务器能够提供双重备份的网络连接,一旦一条网络线路出现故障,另一条线路可以立即接管,确保服务器的稳定运行。高性能:双线服务器可以根据
双线服务器的优势和劣势有哪些
2024-04-30

C++ 函数重载的优势和劣势有哪些?

函数重载的优势包括增强代码可读性、可重用性和安全性,而劣势则包括名称冲突、编译器混淆和代码复杂性的增加。例如,可以创建两个具有相同名称但参数数量不同的 sum 函数,分别计算两个和三个数字的总和,从而提供更简洁、更可重用的代码。C++ 函数
C++ 函数重载的优势和劣势有哪些?
2024-04-13

台湾vps租用有哪些优势和劣势

优势:1. 网络环境稳定:台湾的网络环境相对比较稳定,可以保证VPS的稳定性和可靠性。2. 低延迟:台湾的VPS在中国大陆的访问速度比较快,延迟较低。3. 便宜:相比其他国家的VPS,台湾的VPS价格相对较低,性价比比较高。劣势:1. 机房
2023-05-25

免备案空间有哪些优势和劣势

免备案空间的优势:1. 免费:免备案空间是免费提供的,用户无需支付备案费用。2. 无需备案:免备案空间不需要备案,用户无需等待备案审核,可以快速搭建网站。3. 简单易用:免备案空间提供的网站搭建工具简单易用,用户可以轻松建立自己的网站。4.
2023-06-07

阿里云服务器的优势和劣势有哪些

阿里云服务器的优势在于它能够为用户提供更加快速、稳定、安全的云服务,同时具有优秀的性能和可靠性。这些优势使得阿里云服务器在诸如企业网站、游戏运营等场景中得到广泛应用。劣势在于:高峰时段资源紧张:由于阿里云服务器的高流量使用,在高峰时段,服务器上的资源会受到很大限制,可能会出现资源不足的情况,从而影响服务器的性能和稳定性。高额的使用成本:阿里云服务器的租金和使用成本相对较高,这也是很多企业
2023-10-26

单页网站搭建的优势和劣势有哪些

单页网站搭建的优势:1. 简洁明了:单页网站的设计简洁明了,可以让用户快速浏览网站内容,提高用户的满意度。2. 快速响应:单页网站只需要加载一次,所以响应速度比较快,用户体验更佳。3. 响应式设计:单页网站可以采用响应式设计,适应不同的设备
2023-06-13

老站有哪些优劣势

本篇内容介绍了“老站有哪些优劣势”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!  一.老站有什么样的优劣势?  优势:  1.老站一般都会度
2023-06-10

app服务器租用有哪些优势和劣势

优势:1. 稳定性高:app服务器租用通常由专业的服务提供商提供,具有高可靠性和稳定性。2. 灵活性强:租用app服务器可以根据业务需求灵活调整服务器配置和规格,避免资源浪费和不必要的成本。3. 技术支持:专业的服务提供商会提供技术支持,及
2023-06-04

成都主机托管有哪些优势和劣势

成都主机托管的优势:1.地理位置优越:成都作为西南地区的中心城市,其地理位置优越,对于西南地区的企业来说,选择成都主机托管能够更好地服务本地用户。2.稳定的电力供应:成都电力供应稳定,其电网系统完善,能够确保主机托管的稳定运行。3.优质的网
2023-06-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录