OpenResty是一个基于Nginx的高性能Web平台,能够方便地搭建处理超高并发的动态Web应用、Web服务和动态网关。
与现有的其他开发语言/环境相比,OpenResty有着高性能、高灵活性、易于学习和扩展等许多优点,近年来得到了越来越多开发者的关注,也有了很多成功的应用范例,如Adobe、Dropbox、GitHub等知名公司都基于OpenResty构建了自己的后端业务应用。
OpenResty自带完善的帮助文档,开发社区也很活跃,但相关的学习资料——特别是中文资料较少。本书基于作者多年使用OpenResty的经验,系统地阐述了OpenResty相关的各方面知识和要点,帮助读者快速掌握这个高效易用的Web开发平台,进而实现HTTP/HTTPS/TCP/UDP等多种网络应用。
本书结构严谨、详略得当,具有较强的实用性,适合广大软件开发工程师、系统运维工程师、编程爱好者和计算机专业学生阅读参考。
畅销技术作家又一经验力作:蕴含OpenResty的方方面面,入门与提高OpenResty上选
罗剑锋(网名Chrono)
主要研究方向为C/C++、设计模式、高性能网络服务器开发
业余爱好是阅读、旅游、欣赏音乐和电影
随感
本书肇始于三年多前我的《Nginx模块开发指南》一书。最初是以书末的附录形式出现,只有短短的几页,粗略地介绍了OpenResty的核心组件ngx_lua。连我自己也没有想到,几年后的今天它竟然“脱胎换骨”,进化成了一本颇具规模的正式图书。
写作本书还是有感于目前国内技术书刊市场的现状。
十几二十几年前只有少数资深专家掌握核心技术,通过著书立说的方式来分享知识,普惠大众。但随着互联网的高速发展,知识的获取方式变得越来越简单了,任何人都可以在网上轻松地查找到所需的资料,也可以在网上很容易地发表文章。书——曾经被誉为“进步的阶梯”“精神的食粮”——已经不是那么重要了。
另一方面,互联网的普及也降低了书的严肃性和出版门槛。个人“恶意推测”,也许是为了“图省事”或者“赚快钱”,有相当多的人只是把若干博客文章集合在一起,再加以少量修改就“攒”成了一本书。这种“乱炖”“杂烩”形式的书籍拼凑的痕迹十分明显,缺乏内在的逻辑和连贯性,不过凭借着网络上积累的“人气”也能够获得不错的销量,但在我看来实在是对读者的不尊重和不负责。
一个极端的例子是前段时间偶然遇到的名为《□□开发实战》的书,其粗制滥造程度简直是“超乎想象”,“不料,也不信竟会凶残到这地步” [ 原文出自鲁迅《记念刘和珍君》。]——几乎90%的内容都是原封不动地拷贝网络上现成的材料,再有就是直接复制数十页全无注释的杂乱代码,通篇看下来可能只有前言是“原创”,着实是“钦佩”该书作者厚颜无耻的“功力”。
单纯地感慨“世风日下”“人心不古”是没有用的,我所能做的,就是尽自己“微茫”的努力,写出一些无愧于己于人的文字。
关于OpenResty
有这样一种说法:“Nginx是网络世界里的操作系统,而OpenResty则是Nginx上的Web服务器”。
Nginx在Web Server业内的领军地位早已经得到了公认,是高性能服务器的杰出代表。它采用C语言开发,能够跨平台运行,把性能挖掘优化技术发挥到了极致。正因为如此,Nginx也很自然地成为了一个超越原生操作系统的开发平台,程序员可以完全无视底层系统之间的差异,在Nginx的框架里调用丰富的数据结构和功能接口,开发出高性能高可移植的各种应用程序。[ 通常来说Nginx适合运行单线程的I/O密集型应用,但实际上它也可以使用多线程技术运行CPU密集型应用。]
但基于Nginx开发主要使用的语言是C/C++,开发难度高周期长,虽然没有达到“望而生畏”的程度但亦不远矣。好在OpenResty应运而生,在Nginx里嵌入了LuaJIT环境和Lua语言,就如同给裸系统添加了一个高效易用的Shell,瞬间就让Nginx开发的难度直线下降,降低到了普通的心智模型可以理解掌握的水平。
早期OpenResty对于自身的定位主要还是HTTP Server(其实也是受到Nginx的限制),可以利用“胶水语言”Lua来操纵Nginx,灵活定制业务逻辑,方便快捷地搭建出超高并发的各种Web服务,从而节约时间和人力成本。多年来的实践证明,这方面它的确工作得非常出色。
近两年OpenResty的发展开始加速,支持了TCP/UDP协议,扩充了众多的专用库、应用框架以及外围工具,逐渐形成了一个比较独立自洽的生态体系。虽然Nginx仍然是核心,但看得出OpenResty有淡化自身“Nginx Bundle”色彩的趋势,力图成为一个更伟大的存在。
随着软件基金会和商业公司的成立,OpenResty获得了前所未有的成长动力。“路远,正未有穷期”,在此借本书送上诚挚的祝福与期待。
致谢
首先要感谢Nginx的作者Igor Sysoev和OpenResty的作者agentzh,正是因为他们多年来持续无私的奉献,我们才能够拥有如此强大易用的Web Server。
接下来我要感谢父母多年来的养育之恩,感谢妻子和两个可爱的女儿(“点心”组合)在生活中的陪伴,愿你们能够永远幸福快乐。
我也要感谢读者选择本书,希望读者能从中汲取有用的知识,让OpenResty成为工作中的得力助手。
您的朋友 罗剑锋
2018年7月18日 于 北京 798园区