openresty

[转] 浅谈 OpenResty

二次信任 提交于 2019-12-03 04:44:30
一.前言 我们都知道Nginx有很多的特性和好处,但是在Nginx上开发成了一个难题,Nginx模块需要用C开发,而且必须符合一系列复杂的规则,最重要的用C开发模块必须要熟悉Nginx的源代码,使得开发者对其望而生畏。为了开发人员方便,所以接下来我们要介绍一种整合了Nginx和lua的框架,那就是OpenResty,它帮我们实现了可以用lua的规范开发,实现各种业务,并且帮我们弄清楚各个模块的编译顺序。关于OpenResty,我想大家应该不再陌生,随着系统架构的不断升级、优化,OpenResty在被广泛的应用。 二.OpenResty运行原理 Nginx 采用的是 master-worker 模型,一个 master 进程管理多个 worker 进程,基本的事件处理都是放在 woker 中,master 负责一些全局初始化,以及对 worker 的管理。在OpenResty中,每个 woker 使用一个 LuaVM,当请求被分配到 woker 时,将在这个 LuaVM 里创建一个 coroutine(协程)。协程之间数据隔离,每个协程具有独立的全局变量_G。 ps. 协程和多线程下的线程类似:有自己的堆栈,自己的局部变量,有自己的指令指针,但是和其他协程程序共享全局变量等信息。线程和协程的主要不同在于:多处理器的情况下,概念上来说多线程是同时运行多个线程

再谈 APISIX 高性能实践

跟風遠走 提交于 2019-12-03 04:00:54
2019 年 8 月 31 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙·成都站,APISIX 主要作者王院生在活动上做了《APISIX 高性能实践》的分享。 OpenResty × Open Talk 全国巡回沙龙是由 OpenResty 社区、又拍云发起,邀请业内资深的 OpenResty 技术专家,分享 OpenResty 实战经验,增进 OpenResty 使用者的交流与学习,推动 OpenResty 开源项目的发展。 王院生,APISIX 项目发起人和主要作者,OpenResty 社区、OpenResty 软件基金会发起人,《OpenResty 最佳实践》主要作者。 以下是分享全文: 首先做下自我介绍,我大学毕业后在传统金融行业工作九年,2014 年加入奇虎 360,期间撰写了《OpenResty 最佳实践》。我个人比较喜欢研究技术和开源,可能是受老罗影响,喜欢尝试理想化的事情。今年 3 月份与志同道合的伙伴一起创办了深圳支流科技公司,这是一家以开源方式创业的科技公司,在国内屈指可数,APISIX 是我们目前的主要项目。 APISIX 是微服务 API 网关产品,今年 7 月份我在上海做过一次关于“ APISIX 高性能实践”的分享,这次的内容是在上次分享的基础上,并会将最近的新积累分享给大家。 什么是 API

docker实践

匿名 (未验证) 提交于 2019-12-03 00:39:02
安装Docker # 删除系统中旧的Docker(如果有) sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-selinux docker-engine-selinux docker-engine # 安装 yum 工具 sudo yum install -y yum-utils device-mapper-persistent-data lvm2 # 添加 Docker 的软件仓库 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo # 安装 Docker 软件包 sudo yum install docker-ce # 启动 Docker systemctl start docker 配置国内镜像仓库 # 编辑配置文件 vim /etc/docker/daemon.json # 将下面的内容写到 daemon.json 文件中 { "registry-mirrors": ["https://registry.docker-cn.com"

dz̸ OpenResty

匿名 (未验证) 提交于 2019-12-03 00:37:01
点击打开链接 一.前言 我们都知道Nginx有很多的特性和好处,但是在Nginx上开发成了一个难题,Nginx模块需要用C开发,而且必须符合一系列复杂的规则,最重要的用C开发模块必须要熟悉Nginx的源代码,使得开发者对其望而生畏。为了开发人员方便,所以接下来我们要介绍一种整合了Nginx和lua的框架,那就是OpenResty,它帮我们实现了可以用lua的规范开发,实现各种业务,并且帮我们弄清楚各个模块的编译顺序。关于OpenResty,我想大家应该不再陌生,随着系统架构的不断升级、优化,OpenResty在被广泛的应用。 二.OpenResty运行原理 Nginx 采用的是 master-worker 模型,一个 master 进程管理多个 worker 进程,基本的事件处理都是放在 woker 中,master 负责一些全局初始化,以及对 worker 的管理。在OpenResty中,每个 woker 使用一个 LuaVM,当请求被分配到 woker 时,将在这个 LuaVM 里创建一个 coroutine(协程)。协程之间数据隔离,每个协程具有独立的全局变量_G。 ps. 协程和多线程下的线程类似:有自己的堆栈,自己的局部变量,有自己的指令指针,但是和其他协程程序共享全局变量等信息。 线程和协程的主要不同在于:多处理器的情况下,概念上来说多线程是同时运行多个线程

再谈 APISIX 高性能实践

匿名 (未验证) 提交于 2019-12-03 00:15:02
2019 年 8 月 31 日,OpenResty 社区联合又拍云,举办 OpenResty × Open Talk 全国巡回沙龙・成都站,APISIX 主要作者王院生在活动上做了《APISIX 高性能实践》的分享。 OpenResty × Open Talk 全国巡回沙龙是由 OpenResty 社区、又拍云发起,邀请业内资深的 OpenResty 技术专家,分享 OpenResty 实战经验,增进 OpenResty 使用者的交流与学习,推动 OpenResty 开源项目的发展。 王院生,APISIX 项目发起人和主要作者,OpenResty 社区、OpenResty 软件基金会发起人,《OpenResty 最佳实践》主要作者。 以下是分享全文: 首先做下自我介绍,我大学毕业后在传统金融行业工作九年,2014 年加入奇虎 360,期间撰写了《OpenResty 最佳实践》。我个人比较喜欢研究技术和开源,可能是受老罗影响,喜欢尝试理想化的事情。今年 3 月份与志同道合的伙伴一起创办了深圳支流科技公司,这是一家以开源方式创业的科技公司,在国内屈指可数,APISIX 是我们目前的主要项目。 APISIX 是微服务 API 网关产品,今年 7 月份我在上海做过一次关于“ APISIX 高性能实践”的分享,这次的内容是在上次分享的基础上,并会将最近的新积累分享给大家。 API

openresty 火焰图收集

匿名 (未验证) 提交于 2019-12-03 00:15:02
注:本次安装以下都是基于centos6的 uname -a ; rpm -qa kernel\* | sort 相关rpm包下载: http://rpm.pbone.net http://debuginfo.centos.org yum install systemtap 测试安装是否成功: stap -v -e 'probe vfs.read {printf("read performed\n"); exit()}' 安装成功: 出现下面的情况,是kernel-devel不匹配导致的 kernel-debug 版本不匹配 https://github.com/openresty/openresty-systemtap-toolkit https://github.com/openresty/stapxx https://github.com/brendangregg/FlameGraph.git 1、 openresty-systemtap-toolkit sample-bt 注:-t 5,指采集5s的数据,下同 sample-bt-off-cpu 例:./sample-bt-off-cpu -p 10901 -t 5 > a.bt ngx-sample-lua-bt https://github.com/openresty/openresty-systemtap-toolkit

openrestry安装及hello world

匿名 (未验证) 提交于 2019-12-02 23:49:02
yum install pcre-devel openssl-devel gcc curl wget https://openresty.org/download/openresty-1.13.6.2.tar.gz tar -xzvf openresty-1.13.6.2.tar.gz cd openresty-1.13.6.2 ./configure make sudo make install sudo dnf install 'dnf-command(copr)' sudo dnf copr enable openresty/openresty # 安装相关依赖包 sudo apt install libpcre3-dev openssl libssl-dev ruby zlib1g zlib1g.dev # 下载源码 wget https://openresty.org/download/openresty-1.13.6.2.tar.gz # 解压、配置、编译、安装: tar xzvf openresty-1.13.6.2.tar.gz cd openresty-1.13.6.2/ ./configure make sudo make install 1.3. OpenResty "hello world" 创建以下目录 mkdir ~/work cd ~/work

openresty中lua的数据类型及案例演示

匿名 (未验证) 提交于 2019-12-02 23:40:02
版权声明:原创文章,未经允许不得转载. https://blog.csdn.net/shengqianfeng/article/details/91458482 openresty输出helloworld的两种方式 进入luajit目录,查看luajit版本 信息: 使用luajit执行lua脚本,我们编写一个hello.lua,输出hello world! ./luajit -v 使用resty命令来执行打印hello world,因为resty最终也是调用luajit的。 /usr/local/openresty-1.11.2.5/bin/resty -e 'print("hello world")' openresty打印Lua的数据类型 输出:string /usr/local/openresty-1.11.2.5/bin/resty -e 'print(type(print))' 输出:function /usr/local/openresty-1.11.2.5/bin/resty -e 'print(type(true))' 输出:boolean /usr/local/openresty-1.11.2.5/bin/resty -e 'print(type(0.1))' 输出:number 输出:table 输出:nil 数据类型案例 字符串拼接 /usr/local

bad argument #2 to 'set_keepalive' (number expected, got nil)的解决办法

匿名 (未验证) 提交于 2019-12-02 23:38:02
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/miachen520/article/details/91353525 分发层架构中,我们会在nginx里去写lua脚本,因为我们需要自定义一些特殊的业务逻辑 比如说,流量分发,自己用lua去写分发的逻辑,在分发层nginx里去写的 再比如说,要用l缓存架构中的的控制逻辑,在应用层nginx里去写的 nginx+lua 用最流行的开源方案,就是用OpenResty 这次我下了一个最新的OpenResty,自己用lua去写分发的逻辑,在分发层nginx里去写的,发现OpenResty最新的 http.new() new出来的对象request_uri方法老是报错,原来一直都是这样就可以的 local resp, err = httpc:request_uri(hostUrl, { method = “GET”, path = requestBody }) 结果居然报错了,提示 lua entry thread aborted: runtime error: /usr/hello/lualib/resty/http.lua:909: bad argument #2 to ‘set_keepalive’ (number expected, got nil) 以前做类似的分发代码的时候

[视频教程] 包管理器方式安装使用openresty新手上路

匿名 (未验证) 提交于 2019-12-02 22:11:45
OpenResty是一个通过Lua扩展Nginx实现的可伸缩的Web平台,内部集成了大量精良的Lua库、第三方模块以及大多数的依赖项。 用于方便地搭建能够处理超高并发、扩展性极高的动态Web应用、Web服务和动态网关。 功能和nginx类似,就是由于支持lua动态脚本,所以更加灵活,可以实现鉴权、限流、分流、日志记录、灰度发布等功能。 OpenResty通过Lua脚本扩展nginx功能,可提供负载均衡、请求路由、安全认证、服务鉴权、流量控制与日志监控等服务。 视频地址: https://www.bilibili.com/video/av70803354/ 访问官网可以看到有包管理器的安装方式,这种方式不需要编译和处理依赖问题,尽量使用这样简单的方式进行安装 # 安装导入 GPG 公钥时所需的几个依赖包(整个安装过程完成后可以随时删除它们): sudo apt-get -y install --no-install-recommends wget gnupg ca-certificates # 导入我们的 GPG 密钥: wget -O - https://openresty.org/package/pubkey.gpg |apt-key add - # 安装 add-apt-repository 命令 # (之后你可以删除这个包以及对应的关联包) sudo apt-get -y