专栏名称: 运维帮
互联网技术分享平台,分享的力量。帮主一直坚信技术可以改变世界,从毕业到现在干了15年运维,有许多话要和你说。
目录
相关文章推荐
运维  ·  再见,CDN 巨头:Akamai 宣布 ... ·  3 天前  
51好读  ›  专栏  ›  运维帮

作为服务端工程师,你用的Web服务器可能已经过时了

运维帮  · 公众号  · 运维  · 2019-05-22 18:25

正文


对服务端工程师来说,如果你的工作中涉及 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 最佳实践》作者,前 360 开源技术委员会委员。


他在互联网安全公司有 10 多年的工作经验,之前一直从事高性能服务端的开发和架构,负责开发过云查杀、反钓鱼和企业安全产品。


后来得知,温铭也是为一个新系统做技术选型时偶然了解到 OpenResty 的,那时他还是个 Pythoner, 不喜欢 Nginx C 模块的艰涩,还想享受它的高性能。


鱼与熊掌都想兼得, 怎么办呢? OpenResty 满足了他的需求


但是,目前市面上的 OpenResty 学习资料非常少 ,官方只提供了 API 文档,并没有入门和进阶的文档,网上找的资料也不够系统。


可以说,大部分的 OpenResty 使用者都是 摸着石头过河,过程相当痛苦 (他自己就是其中之一)。


所以,他在极客时间开了个课专门讲 OpenResty,目的很明确:帮你快速入门,建立 OpenResty 完整知识体系,进而真正掌握这款开发利器。


像他自己说的那样: 写出正确的 OpenResty 代码和写出高性能的优质 OpenResty 代码之间,相差十万八千里。


而跨越这个巨大鸿沟的零件,就散落在 OpenResty 开源项目的源码、文档、issue、PR、幻灯片、邮件列表中,需要你把它们串联起来,形成一个完整的学习路径和知识图谱。


多说无益,可以瞅瞅他总结的 OpenResty 学习路径图 ,内容出自他的专栏 《OpenResty 快速入门与实战》


△ 订阅专栏即可获取「高清知识图谱」



提前要了几篇专栏的文章,结合目录,我大致梳理了一下,如果用一句话概括这个专栏,我觉得是: “从实战中来,到实战中去”


专栏中的不少代码,都取自 开源 OpenResty 的测试案例和实际的开源项目 让你在入门之初,就了解真实的使用场景。


文章中还 穿插了多个视频 ,内容都取自 真实开源项目的功能点和 PR 。通过视频,可以更加直观地看到,刚学到的知识点是怎样在实际中应用的。


最后的 实战部分 ,看着也挺带劲,哥们会带你用 OpenResty 从零搭建一个微服务 API 网关 ,如果你想独立搭建一个更简单、更高性能的 API 网关,这部分内容可别错过。


从实际的开源项目中学习,再到实际的开源项目中去实战,将实战融入完整的知识体系 ,这逻辑没毛病,要是学完没有收获,直接来找我。


另外,我看哥们还挺走心,专门列了 几个学习 OpenResty 的重点 ,会在专栏里着重讲解那种,有 好几个特别「戳」我 ,这回跟着好好补补课:


  • 同步非阻塞的编程模式

  • 不同阶段的作用

  • LuaJIT 和 Lua 的不同之处

  • OpenResty API 和周边库

  • 协程和 cosocket

  • 单元测试框架和性能测试工具

  • 火焰图和周边工具链

  • 性能优化


关于 学习这个课需要什么基础 ,直接 引用 温铭原话 ,他比我总结得好:


OpenResty 是在 Nginx 和 LuaJIT 的基础上搭建的,所以 Nginx 和 LuaJIT 的基础知识还是需要的。








请到「今天看啥」查看全文