《用OpenResty搭建高性能服务端》笔记

《用OpenResty搭建高性能服务端》是OpenResty系列课程中的入门课程,主讲人:温铭老师。课程分为10个章节,侧重于OpenResty的基本概念和主要特点的介绍,包括它的指令、nginx_lua API、缓存、如何连接数据库、执行阶段等,并通过几个实际的操作和代码片段,告诉大家学习中如何搭建开发、测试环境,如何调试、查找和解决问题。

视频播放地址:https://study.163.com/course/introduction.htm?courseId=1520005

课程目录一览:

《用OpenResty搭建高性能服务端》笔记

个人评价:评分满分。内容由浅入深,思路清晰,内容组织有序,容易上手,为初学者打开了一扇学习的大门。非常不错的分享。学完后需再配合 《OpenResty最佳实践》 + 进行系统学习。

下面是学习笔记,内容主要是以老师的讲解为主,加上部分自己补充或理解的内容。

本文环境:

$ uname -a Linux ba2f3eedf7df 4.4.111-boot2docker #1 SMP Thu Jan 11 16:25:31 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux $ cat /etc/redhat-release CentOS release 6.8 (Final) $ /usr/local/openresty/bin/openresty -v nginx version: openresty/1.13.6.2 $ /usr/local/openresty/luajit/bin/luajit -v LuaJIT 2.1.0-beta3 -- Copyright (C) 2005-2017 Mike Pall. OpenResty 简介

OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

OpenResty 基于Nginx开发,可以简单认为是 Nginx + lua-nginx-module的组合版。

官网:https://openresty.org/cn/
官方文档:

高性能服务端两个重要要素:需要支持缓存,语言层面要支持异步非堵塞。

缓存速度上,内存 > SSD > 机械磁盘;本机 > 网络 ; 进程内 > 进程间 。异步非阻塞指的是事件驱动方式(事件完成后再通知)。

OpenResty 包含的技术:

Nginx:不仅仅是负载均衡+反向代理等功能,Nginx c module开发成本高。

LuaJIT:OpenResty用的是 LuaJIT,LuaJIT 是主打性能的Lua。

OpenResty 本质上是将 LuaJIT 的虚拟机嵌入到 Nginx的worker中,所以效率特别高,在性能上,OpenResty 接近或超过 Nginx c module:

《用OpenResty搭建高性能服务端》笔记

OpenResty已经颠覆了高性能服务端的开发模式。

OpenResty与市面上其他语言对比:

node.js:第一门将异步非阻塞特性放入自己语言中的,前端同学可以快速切入。但是 node.js 用回调(callback)实现异步非阻塞,代码写起来比较麻烦。

Python:3.4之后加入了异步的支持,比如异步io和aiohttp;3.5引入了协程。缺点是版本跨度大,因为很多人还是使用2.7。

Golang:最近几年非常火。缺点:代码写法上需要使用go关键字;线上热调试不方便(SystemTap 提供了有限的支持)。

Hello World OpenResty安装

以 CentOS 为例:

mkdir /opt && cd /opt # download openresty wget https://openresty.org/download/openresty-1.13.6.2.tar.gz tar zxvf openresty-1.13.6.2.tar.gz cd openresty-1.13.6.2 # configure ./configure --prefix=http://www.likecs.com/usr/local/openresty -j4 make -j4 && make install

其中 源码包可以到 https://openresty.org/cn/download.html 该页面获取。
-j4表示使用4核。configure那一步还可以指定各种参数:

./configure --prefix=http://www.likecs.com/usr/local/openresty \ --with-luajit \ --without-http_redis2_module \ --with-http_iconv_module \ --with-http_postgres_module

使用 ./configure --help 查看更多的选项。

其它系统环境上安装可以参考 https://openresty.org/cn/installation.html 。

其实安装 OpenResty 和安装 Nginx 是类似的,因为 OpenResty 是基于 Nginx 开发的。

如果已经安装了 Nginx,又想使用 OpenResty 的功能,可以参考 《Nginx编译安装Lua》:https://www.cnblogs.com/52fhy/p/10164553.html 一文安装lua-nginx-module模块即可。

第一个程序

修改 /usr/local/openresty/nginx/conf/nginx.conf:

worker_processes 1; error_log logs/error.log; events { worker_connections 1024; } http { server { listen 8080; location /hello { default_type text/html; content_by_lua ' ngx.say("<p>hello, world</p>") '; } } }

把默认的80端口改为8080,新增/hello部分。

其中content_by_lua便是 OpenResty 提供的指令,在官方文档可以搜索到:

《用OpenResty搭建高性能服务端》笔记

现在我们启动OpenResty:

/usr/local/openresty/nginx/sbin/nginx

启动成功后,查看效果:

curl :8080/hello <p>hello, world</p>

说明成功运行了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwzwd.html