在我的印象中很多人还是选择nginx+php这种组合搭配,你的选择是nginx+lua,那么nginx+lua比和php的组合优势在哪里?

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

你认为目前nginx+lua能满足你现在的需求吗?有没有尝试或寻找其他最佳的搭档?

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

作为一名技术架构师,在性能这块你认为到何处为止?还是无止境的追求?

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

你刚刚在大会上也讲了一些nginx lua的优势和劣势,能不能在这里也给我们网友分享一些?

清无:刚才也说了一个是周边模块不完善,不健全。如果你用到的这个东西比较复杂的时候可能生产力上不去,目前Nginx_lua最适合的人员是数据接口层,以及所有的网络中间层,你需要最求并发,高性能的网络中间层。因为它本身的逻辑相对来说比较简单,或者完全用lua本身就可以变现出来,这个用起来收效比例是最大的。那么如果你目前要做一个复杂的WEB访问站,有大量模板要套,有大量的复杂逻辑嵌在里面,然后要访问mail要访问其他服务的话,目前来说我觉得还是php或者其他比较成熟的语言。就我们目前应用来说也是这样,中间层会大量的使用lua,但是前端展现层的话要么全部移到浏览器上面用JS+模板的形式来实现,要么就是用PHP这样来做。另外的劣势就是调试的辅助工具不太多,因为高级点的php程序员会往往会使用XDebug或者其它的调试工具,可以单步调试,在线调试。跟php相比目前还欠缺这样的一个机制。到时候我们会仿照XDebug 去实现DPT V2协议,我们实现兼容DPT V2这样的一种机制内连到Nginx_lua里面,那样Nginx_lua也可以单步调试。到时候我们也会分享给大家。

nginx_lua vs nginx+php 应用场景的更多相关文章

  1. 全面了解Nginx主要应用场景【转】

    前言 本文只针对 Nginx 在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得.所以还请见谅,同时欢迎留言交流 ...

  2. Nginx详解十:Nginx场景实践篇之Nginx静态资源场景配置

    一.静态资源WEB服务 1.静态资源类型:非服务器动态运行生成的文件 2.静态资源服务场景-CDN 假设静态资源存储中心在云南,用户在北京去请求一个文件,那么就会造成一个传输的延时,而如果Nginx同 ...

  3. nginx之旅(第三篇):代理、正向代理、反向代理、代理的原理、nginx反向代理场景、nginx反向代理配置、nginx反向代理语法

    一.代理服务与反向代理 什么是代理服务 代理-代理办理(代理理财.代理收货.代理购物等等). 一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术.关于正向代理的概念如下: 正向代理(forw ...

  4. Nginx也应用场景小结

    Nginx简介    Nginx一是一款轻量级的.高性能的HTTP和反向代理服务器, 具有很高的稳定性和支持热部署.模块扩展也很容易.当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器 ...

  5. 全面了解 Nginx 主要应用场景

    前言 本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得.所以还请见谅,同时欢迎留言交流 N ...

  6. 全面了解Nginx主要应用场景(数漫江湖)

    前言 本文只针对Nginx在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得.所以还请见谅,同时欢迎留言交流 N ...

  7. 【Nginx】应用场景

    一.概述 二.Nginx虚拟主机配置 2.1 外网映射工具 2.2 基于虚拟主机配置域名 2.3 基于端口的虚拟主机 三.Nginx配置反向代理 3.1 反向代理的作用 3.2 反向代理的好处 3.3 ...

  8. Nginx 主要应用场景

    前言 本文只针对 Nginx 在不加载第三方模块的情况能处理哪些事情,由于第三方模块太多所以也介绍不完,当然本文本身也可能介绍的不完整,毕竟只是我个人使用过和了解到过得.所以还请见谅,同时欢迎留言交流 ...

  9. 全面了解Nginx主要应用场景

    http://www.raye.wang/2017/02/24/quan-mian-liao-jie-nginxdao-di-neng-zuo-shi-yao/

随机推荐

  1. Linux USB驱动学习总结(三)---- USB鼠标的加载、初始化和通信过程

    1.usbmouse的定义:usb鼠标既包含usb设备(usb_device)的属性也包含input输入设备(input_dev)的属性 struct usb_mouse { ];///USB鼠标设备 ...

  2. c++语言知识点汇总

    c++ primer version-5 的整理 section 1: 内置类型和自定义类型: main函数的返回值:指示状态.0:成功:1:系统定义. unix和win系统中,执行完程序可以使用ec ...

  3. SSD的SLC MLC 和TLC哪个好?

    <1>SLC = Single-Level Cell ,即1bit/cell,速度快寿命长,价格超贵(约MLC 3倍以上的价格),约10万次擦写寿命MLC = Multi-Level Ce ...

  4. [转载]Windows服务编写原理及探讨(3)

    (三)对服务的深入讨论之下 现在我们还剩下一个函数可以在细节上讨论,那就是服务的CtrlHandler函数. 当调用RegisterServiceCtrlHandler函数时,SCM得到并保存这个回调 ...

  5. Kaggle案例分析1--Bestbuy

    1. 引言 Kaggle是一个进行数据挖掘和数据分析在线竞赛网站, 成立于2010年. 与Kaggle合作的公司可以提供一个数据+一个问题, 再加上适当的奖励, Kaggle上的计算机科学家和数据科学 ...

  6. centos7连接阿里云长时间连接不上

    一.手动修改网卡配置 手上有几台centos7的linux,当连接阿里云的ecs服务器时候长时间连接不上,最后失败的问题. 使用 -vvv参数到如下语句就卡着不动了 ssh -vvv XXX.XXX. ...

  7. 洛谷P1242 新汉诺塔

    传送门啦 首先要将第n个盘子从x到y,那么就要把比n小的盘子全部移到6-x-y,然后将n移到y 仔细想想:6代表的是3根初始柱,3根目标柱. 6-(x+y) 便是我们的中转柱了,因为到这个位置是最优的 ...

  8. NOIP2015 D2T3 运输计划

    拿到题目的第一眼 首先这是一棵n个节点的树(别说你看不出来) 然后对于树上的m条链我们可以选取树上的唯一一条边使它的边权变为0 求处理后最长链的长度 20分 m=1好啦,好像可做一眼望去全是水 只需求 ...

  9. TypeScript 2 : 获取当前日期及前后范围日期【Array】

    前言 今天有个接口字段需求,要写一个今天及前几天的日期传过去: 在网上找了下都木有什么比较好的方案:就自己写了一个. 因为技术栈就是NG2+TS2+WEBPACK,这里的代码需要一定的TS2及ES6的 ...

  10. HTML小工具

    一般可能用的到的符号代码: 符号 HTML 符号 HTML     & & < < > > ⁄ ⁄ " " ¸ ¸ ° ° ½ ½ ¼ ¼ ...