阿⾥P9⼤⽜整理总结出进阶架构师必备知识:NginxLua开发
实战
前⾔
在学习和使⽤ ngx_lua 的过程中我们发现,⽹络上资料其实⾮常多,但是⾮常零散,没有整体性,虽然技术本⾝是很清晰和易⽤的,但是对于刚接触这门技术的开发者来说,想要有条理、系统地把这些知识学完,可能会⾛⼀些弯路。
因为很多资料已经过时了,甄别和调试会耗费很多时间和精⼒,同时查阅英⽂⽂档也⽐较花时间。于是,我就有了把⾃⼰的学习过程和⼼得整理成书的想法。
随后的时间⾥,将⾃⼰学习Nginx下Lua开发的思路,以及这个过程中的资料⼀点点总结出来加以整理,终成本⽂。
希望本⽂可以帮助跟我有⼀样需求的研发⼯程师快速了解并掌握Nginx下Lua开发技术。
⾸先,我们看⼀下⽬录
其次,是主要内容的介绍
本⽂主要分五部分:
第⼀部分(第1~5章)介绍Nginx的基本操作,同时讲解了MySQL、PostgreSQL、Redis、Memcached、MongoDB、 OpenResty 的基本操作。通过对本部分的学习可以掌握这些服务的安装和使⽤⽅法,⼀般⽤于研发环境的搭建。这⾥还讲解了Nginx 核⼼技术和⼯作流程,⽤于帮助读者进⼀步掌握Nginx的架构和流程。各个层次的读者都可以从本部分读起。
第1章Nginx⾼效服务器,Nginx使⽤了⼤量的⾼并发和低内存占⽤技术,并使⽤了⾼可靠性技术,拥有⾼过Apache--个数量级以上的接⼈能⼒。因为并发能⼒强的特点,Nginx在中国的互联⽹公司中得到了⼤量应⽤,中国的⼤型互联⽹公司⽆⼀不使⽤了Nginx,以应对中国众多的⽹民,以及各种抢购热潮(如“双⼗⼀”)、 世界杯等热点事件。Nginx在这种⼤量的流量涌⼊、需要分流、导流、反向代理的场合下得到⼤量应⽤。
第2章数据库的基本操作,Nginx 应⽤系统通过以 ginx 为核⼼,合理搭配 is Memcac ed MySQL Postgre SQL Mongo 等服务器,可起到数据内存缓存、内存数据库、关系型数据库、 NoSQL 数据库等作⽤ 互联⽹系统上有各种关系型数据需要存储,需要⽤到关系型数据库互联⽹要应对⼤量的⾼并发请求,就需要⾼速处理 TTP 请求,需要⽤到各种数据缓存、页⾯缓存、操作缓存等 同时互联⽹上有⼤量的结构⾮关系型数据要存储,还有各类⾳/视频、图⽚要缓存,需要⽤到各类内存型数据库、 NoSQ 数据库等,以形成完整的应⽤ 所以本章将从这些数据库、缓存产品的作⽤ 特点 安装⽅法、常⽤命令及配置⽂件解析展开。
第3章OpenResty,⼀个典型的互联⽹系统或云计算系统⼤量使⽤到关系型数据库、⾮关系型数据库、缓存、内存数据库等,以提供⾼速、⾼扩展性的服务,通常组成集。以前协调这些系统开发是⾮常⿇烦的,现在OpenResty提供的Nginx+Lua+Module的机制,使我们可以实现快速开发,让开发者着眼于应⽤,使⽤同⼀语⾔开发。在这种架构的应⽤领域⾥,其效率是其他语⾔和技术不能⽐拟的。
本章介绍OpenResty的组成及安装、配置⽅法。
第4章Nginx核⼼技术,在开发Nginx时,Apache 已经是-⼀个成熟的Web服务器了,性能不错、功能丰富、应⽤⼴泛。Nginx从设计之初就定位为⾼性能、⾼可靠性、⾼扩展性、⾼并发性的Web服务器,
⽐Apache性能更好。Nginx 是基于HTTP协议的Web服务器,受HTTP 协议的制约,有些问题解决起来⽐较棘⼿,所以采⽤了⼀系列技术解决这些问题。
本章介绍这些有特⾊的技术,以便我们更了解Nginx,知道Lua开发的⼯作机制,这些技术和思想也可以应⽤到我们的项⽬中去。
mongodb和mysql结合第5章Nginx的⼯作流程,详细了解Nginx的主要⼯作流程,可以让我们更好地认识Nginx,从⽽更好地使⽤Nginx,同时可以让我们更好地掌握Lua在Nginx中的⼯作流程。根据对Nginx核⼼技术和架构的了解,我们知道了管理进程1⼯作进程机制,以及HTTP核⼼模块和配置对Nginx的重要性,也知道了Ngi
nx 的框架代码不多,只负责环境管理,本章将介绍这些部分的⼯作流程。
第⼆部分(第6~7章)详细讲解了Lua脚本语⾔和Lua通⽤库。学习Lua语⾔或查阅Lua语法的初学者可以直接阅读该部分相应章节。
第6章Lua教程,Lua是⼀种轻量、⼩巧的脚本语⾔,⽤标准C语⾔编写并以源代码形式开放。其设计⽬的是嵌⼊应⽤程序中,从⽽为应⽤程序提供灵活的扩展和定制功能。⽬前Lua⼤量应⽤于Nginx、嵌⼊式设备、游戏逻辑开发等⽅⾯。
在Nginx中,Lua中的例程机制可以很好地和Nginx的全异步、⾮阻塞的多阶段处理机制结合,使开发者使⽤同步的模式,开发全异步的应⽤,⽽不⽤考虑异步的处理机制。
本章介绍Lua的基础语法知识。
第7章Lua通⽤库,Lua提供了-⼀些通⽤库,使⽤者在Lua中可以直接进⾏字符串操作、表操作、⽂件操作、访问操作系统、进⾏科学计算等。本章汇总这些常⽤函数和操作,⽅便读者使⽤中查。
第三部分(第8~10章)讲解了在Nginx开发中经常使⽤的⼀-些技术,如JSON数据交换格式、f 配置⽅法和配置指令;还讲解了Nginx' 下Lua开发的实现机制。学习Nginx配置的读者,学习和查阅JSON的读者可以直接阅读该部分相应章节,也可以跳过其他章节,直接学习Nginx'下Lua的实现机制。
第8章JSON数据交换格式,JSON是JavaScript Object Notation ( JavaScript对象表⽰法)的缩写,JSON是⼀种存储和交换⽂本信息的语法,类似XML。JSON⽐XML更⼩、更快,更易解析,是JavaScript内部使⽤的- - 种格式。JSON因为其特点,在互联⽹应⽤、嵌⼊式应⽤上得到了⼤量应⽤。
我们在Nginx下的Lua开发中也⼤量使⽤JSON进⾏数据交换。本章介绍JSON这种常⽤的数据交换格式。
第9章f⽂件配置,f是Nginx的配置⽂件。Nginx 的⼯作流程是:在编译阶段选择要使⽤的模块并编译进整体⼯程中去。模块和业务的使⽤通过f配置⽂件中配置指令的配置得以控制和实现,复杂的业务和⾃定义的业务逻辑使⽤Lua脚本实现。所
以,f 是我们开始开发及调整服务⾏为的⾸要途径。
配置正确的f为我们提供⼀个正常运⾏且⾼效的服务框架,可以在框架内选择我们要介,⼈的HTTP请求处理阶段,编写Lua代码提供具体实现。
第10章Nginx 下Lua实现机制,Nginx中的⼤部分功能是通过模块提供的,这种⽅式使得Nginx开发和扩展很⽅便,模块可以依次串起来形成-⼀个过滤器。⼀个模块的失效不会影响其他部分,是Nginx扩展性和可靠性的⼀个保证。系统提供了如http模块、
mail模块、event 等模块。根据业务需要,通过配置或编译将不同的模块组合起来,形成⾃⼰业务特有的Web服务器,实现⼀些特定的功能。Nginx使⽤⽐较多的场合是反向代理,使⽤Nginx在前端做登录校验、JS合并、数据库访问、访问鉴权等,具体业务由反向代理实现,发挥Nginx业务开发灵活、有⼤并发接⼈和会话保持能⼒的优点。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论