内容简介:作者 | 温铭对服务端工程师来说,如果你的工作中涉及到 Nginx、高性能、高并发、动态控制、性能测试、分析等,那么,不论你使用什么开发语言和平台,OpenResty 都是不可多得的
作者 | 温铭
对服务端工程师来说,如果你的工作中涉及到 Nginx、高性能、高并发、动态控制、性能测试、分析等,那么,不论你使用什么开发语言和平台,OpenResty 都是不可多得的 高性能开发利器 。
如果你之前没接触过 OpenResty,我确信它会为你打开 服务端的「新世界大门」 。
作为一个 兼具开发效率和性能 的服务端开发平台,OpenResty 并不像其他开发语言一样从零开始搭建,而是 基于成熟的开源组件 —— Nginx 和 LuaJIT。
其核心是基于 Nginx 的一个 C 模块(lua-nginx-module),这个模块将 LuaJIT 嵌入到 Nginx 服务器中,并对外提供一套完整的 Lua API,透明地支持非阻塞 I/O,提供了轻量级线程、定时器等高级抽象。
围绕这个模块,OpenResty 构建了一套完备的测试框架、调试技术和由 Lua 实现的周边功能库。
你可以用 Lua 语言进行字符串和数值运算、查询数据库、发送 HTTP 请求、执行定时任务、调用外部命令等,还可以用 FFI 的方式调用外部 C 函数。
这基本上 满足了服务端开发所需要的全部功能 。所以,OpenResty 的适用范围 早已超出了反向代理和负载均衡 。
这就意味着,掌握了 OpenResty,就能同时拥有 脚本语言的开发效率和迭代速度 ,以及 Nginx C 模块的高并发和高性能优势 。
通过丰富的 lua-resty 库,OpenResty 已逐渐摆脱 Nginx 的影子,形成了自己的生态体系,在 API 网关、软 WAF 等领域被广泛使用。
目前,OpenResty 是 全球排名第五 的 Web 服务器,我们常用的 12306 的余票查询功能 、 京东的商品详情页 ,这些高流量的背后,都是 OpenResty 在默默地提供服务。
△扫描二维码试读或订阅
我与 OpenResty
说了这么多 OpenResty 的特点,我是谁?又是怎样跟它结缘的呢?
我是温铭,OpenResty 软件基金会主席,《OpenResty 最佳实践》作者,前 360 开源技术委员会委员。
我在互联网安全公司有 10 多年的工作经验,一直从事高性能服务端的开发和架构,负责开发过云查杀、反钓鱼和企业安全产品。
初识 OpenResty 是 2012 年,那会儿我正为一个新的系统做技术选型,作为一个 Pythoner,我 不喜欢 Nginx C 模块的艰涩,但还想享受它的高性能 ——鱼与熊掌都想兼得,怎么办呢?
经过一番搜寻,我读到一篇介绍 OpenResty 的文章,那感觉真是如获至宝。然而,兴奋只持续了很短的时间,我发现市面上并没有太多资料可供参考,只能摸索前行,踩了数不清的坑,才感觉自己真正拿下了 OpenResty。
后来,一个偶然的机会,我发现 GitHub 不仅可以开源代码,还有书籍!我一下子就被点燃了,当晚就列出了 《OpenResty 最佳实践》 的目录,并开始”鼓动“周围的工程师加入。
我们从未宣传过这个开源项目,但它逐渐成为了 OpenResty 入门者的最佳伙伴。
然而,在加入 OpenResty Inc. 后,我才意识到,写出正确的 OpenResty 代码和写出高性能的优质 OpenResty 代码之间,还差了十万八千里。
而跨越这个巨大鸿沟的零件,就散落在 OpenResty 开源项目的源码、文档、issue、PR、幻灯片、邮件列表中,需要你把它们串联起来,形成一个 完整的学习路径和知识图谱 。
但是,目前市面上的 OpenResty 学习资料非常少,官方只提供了 API 文档,并没有入门和进阶的文档,网上能找到的资料也不够系统。
可以说,大部分的 OpenResty 使用者都是摸着石头过河,过程相当痛苦,我自己就是其中之一。
所以,我与极客时间合作了这个专栏,目的很明确,就是让你轻松快速地入门 OpenResty ,建立起完整的知识体系,进而真正掌握这款开发利器。
△我总结的 OpenResty 学习路径图
我是如何讲解 OpenResty 的?
实践出真知,这句话用在互联网技术的学习上很恰当。在专栏中,我将秉承 “从实战中来,到实战中去” 的原则讲解。
专栏中的不少代码,都取自 开源 OpenResty 的测试案例和实际的开源项目 。目的是让你在入门之初,就接触最优秀的代码,了解真实的使用场景。
同时,我还会在专栏文章中 穿插多个视频课程 ,内容取自 真实开源项目的功能点和 PR 。通过视频,你会更加直观地看到,刚学到的知识点是如何在实际中应用的。
专栏最后的 实战部分 ,是我们的真实“战场”:我会带你一起, 用 OpenResty 从零搭建一个微服务 API 网关 。
根据我们在社区中的统计,接近一半的 OpenResty 使用者,都把 OpenResty 用在 API 网关的开发上,Kong 和 orange 是 OpenResty 领域中最流行的两个开源网关项目。如果你想 独立搭建一个更简单、更高性能的 API 网关 ,这部分内容不容错过。
从实际的开源项目中学习,再到实际的开源项目中去实战,将实战融入完整的知识体系,这就是我的教学理念,相信你一定会有所收获。
学习的重点在哪里?
学习要会抓重点,才能构建出脉络清晰的知识体系。根据我的实战经验,想要学好 OpenResty,你需要理解下面几个重点,在专栏中我也会着重讲解:
-
同步非阻塞的编程模式 ;
-
不同阶段的作用 ;
-
LuaJIT 和 Lua 的不同之处 ;
-
OpenResty API 和周边库 ;
-
协程和 cosocket;
-
单元测试框架和性能测试工具;
-
火焰图和周边 工具 链;
-
性能优化
学习这个专栏需要什么基础?
OpenResty 是在 Nginx 和 LuaJIT 的基础上搭建的,所以我们肯定需要 Nginx 和 LuaJIT 的基础知识。
但你只要了解很少的 Nginx 知识,就可以学习 OpenResty 了。少到什么程度呢?涉及到的 Nginx 的知识,我只用一节课就介绍完了。所以, 即使你从没接触过 Nginx 也没关系 。
要知道,OpenResty 并不等同于 Nginx, OpenResty 这个项目存在的目的之一,就是让你感知不到 Nginx 的存在 。
从编程语言的角度看,Lua 是一种很容易理解的语言, 你只要能够看懂它的代码,并不需要独立写出复杂的 Lua 代码 ,就可以完成专栏的学习了,我会用少数几节课带你入门 Lua,达到 OpenResty 的使用水准。
△扫描二维码试读或订阅
限时订阅福利
-
限时优惠 ¥68 ,原价 ¥129。
-
分享海报,邀请好友订阅即可获 ¥24 返现,多邀多得,上不封顶,APP 内立即提现。
-
订阅专栏 后,可以获得作者亲自整理的高清版 《OpenResty 学习路径图》 和开源书 《OpenResty 最佳实践》 ,获取方式:公众号后台回复 「 利器 」 。
妇联 4 首映票价的零头,就能上手 满钻灭霸 Web 服务器 ,这话不止是说说而已。
点击「 阅读原文 」免费试读或订阅。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 是时候谈谈JavaScript面向对象了!(我们什么时候更需要它)
- LWN:写文件的时候不希望写入一半的时候掉电丢失,怎么办?
- .NET / MSBuild 扩展编译时什么时候用 BeforeTargets / AfterTargets 什么时候用 DependsOnTargets?
- 什么时候要重写equals
- InnoDB数据页什么时候合并
- 放弃 OpenStack?恐怕还不到时候
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Django企业开发实战
胡阳 / 人民邮电出版社 / 2019-2 / 99.00元
本书以博客系统贯穿始末,介绍了Django的方方面面。书中共分四部分,第一部分介绍了正式进入编码之前的准备工作,内容包括需求分析、基础知识和Demo系统的开发;第二部分开始实现需求,内容涉及环境配置、编码规范以及项目结构规划,编写了Model层、admin页面、Form代码和View逻辑,引入了Bootstrap框架;第三部分重点介绍xadmin、django-autocomple-light和d......一起来看看 《Django企业开发实战》 这本书的介绍吧!