OpenResty搭建高性能nginx

OpenResty
OpenResty是基于Ngnix和Lua的高性能web平台,内部集成精良的LUa库、第三方模块、依赖项。
用于方便搭建能够处理高并发、扩展性极高的动态web应用、web服务、动态网关。
可以使用Lua脚本调用Ngnix支持的C以及Lua模块,快速构建10K~1000K单机并发连接的高性能web应用系统。
OpenResty的目标是让web服务直接运行在Nginx服务内部,
利用Ngnix的非阻塞IO模型,对HTTP客户端请求和后端DB进行一致的高性能响应。
OpenResty的出现可以说是颠覆了高性能服务端的开发模式。OpenResty实际上是Nginx+LuaJIT的完美组合。
OpenResty工作方式
由于Nginx采用的是master-worker模型,也就是一个master主进程管理多个worker进程,
基本的事件处理都是放在worker中,master仅负责一些全剧初始化,以及对worker的管理。
在OpenResty中,每个worker使用一个LuaVM,每个请求被分配到worker时,
将在这个LuaVM中创建一个coroutine协程。协程之间数据隔离,每个协程具有独立的全局变量_G。
Lua中的协程和多线程下的线程类似,都有自己的堆栈、局部变量、指令指针...,
但是和其他协程程序共享全局变量等信息。线程和协程主要不同在于:多处理器的情况下,
概念上来说多线程是同时运行多个线程,而协程是通过代码来完成协程的切换,
任何时刻只有一个协程程序在运行。并且这个在运行的协程只有明确被要求挂起时才会被挂起。
根据实际测试,OpenResty性能接近于Nginx 性能之王c module,甚至超过。
OpenResty 架构
  1. 负载均衡
    LVS+HAProxy将流量转发给核心Nginx1和Nginx2,即实现了流量的负载均衡。

    在这里插入图片描述

  2. 单机闭环
    所有想要的数据都能从本服务器直接获取,大多数时候无需通过网络或去其他服务器获取。
    在这里插入图片描述
    单机闭环会遇到2个主要问题
    数据不一致
    例如没有主从架构导致不同服务器数据不一致
    遇到存储瓶颈
    磁盘或内存遇到天花板
    解决数据不一致比较好的办法是采用主从或分布式集中存储,而遇到存储瓶颈就需要进行按业务键进行分片,将数据分散到多台服务器。
    分布式闭环

OpenResty环境搭建

安装前准备,必须安装perl、libpcre、libssl库。

# 从系统路径中查看必备库是否已经安装
$ sudo ldconfig -v

安装必备库

$ sudo apt install libpcre3-dev libssl-dev perl make build-essential curl libreadline-dev libncurses5-dev

#或者
yum install openssl-devel or yum install *gcc* -y
yum install -y pcre pcre-devel openssl openssl-devel gcc gcc gcc-c++ ncurses-devel perl 

下载并解压OpenResty后进入其目录

$ wget https://openresty.org/download/ngx_openresty-1.13.6.1.tar.gz
$ tar -zxvf ngx_openresty-1.13.6.1.tar.gz
$ mv openresty-1.13.6.1 openresty
$ cd openresty
$ ./configure

默认会被安装到/usr/local/openresty目录下

# 编译并安装
$ sudo make && make install
$ cd /usr/local/openresty

启动Nginx

$ sudo /usr/local/openresty/nginx/sbin/nginx 
$ ps -ef | grep nginx
$ service nginx status

配置文件
个人习惯配置文件单独放项目统一管理

/usr/local/openresty/nginx/sbin/nginx  -c /home/backend/config/scripts-server/nginx/conf/nginx.test.conf
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值