OpenResty、Lua介绍认识

文章目录

  • 官网网址
  • openrestry介绍
    • OpenResty 的关键特性包括:
    • 应用场景:
    • Lua 在 OpenResty 中的应用
  • 安装openrestry
  • 简单实验下

官网网址

开源版在线文档和支持
商业版支持
什么是Lua
学习Lua语法
每篇一问:什么是编译型语言,什么是解释型语言

编译型语言的源代码在执行之前需要通过编译器转换成目标机器码(通常是二进制代码01)。这个过程将源代码完全转换为计算机能直接执行的代码,通常是平台特定的。常见的编译型语言包括 C、C++、Go 等。
编译后的机器码是直接可执行的,运行时不需要额外的解释过程,因此执行速度较快。编译型语言通常在性能要求高的应用中使用,如操作系统开发、游戏引擎等。
编译后生成的机器码通常是针对特定平台(操作系统和硬件)生成的。要在不同平台上运行,可能需要重新编译源代码。这使得编译型语言程序在跨平台方面可能需要额外的处理。

解释型语言的源代码不需要先编译成机器码,而是由解释器逐行解析并执行。解释器会在运行时将源代码转换为机器可以理解的指令并立即执行。常见的解释型语言包括 Python、JavaScript、Ruby
由于每次执行时都需要解释器逐行解析和执行源代码,执行速度较慢。解释型语言通常用于开发周期较短、灵活性要求高的应用,如脚本语言和Web开发等。
解释型语言的源代码需要在目标机器上运行时由解释器逐行解释执行,因此需要确保目标环境中已安装相应的解释器。源代码文件本身也需要被一起分发。
在这里插入图片描述

openrestry介绍

说实话之前没听过,初来乍到的,但是你一定听过nginx并且懂一些配置,那么openresry就是nginx结合一些Lua脚本

OpenResty 是基于 Nginx 的一个高性能 Web 应用服务器,它在 Nginx 的基础上扩展了很多功能,主要通过集成 Lua 脚本语言来实现更加灵活和强大的应用开发。简单来说,OpenResty 是在 Nginx 的框架上,结合 Lua 脚本引擎来增强其动态处理能力,适用于构建复杂的 Web 应用和服务。

OpenResty 的关键特性包括:

Nginx 的高性能基础:OpenResty 继承了 Nginx 的所有高效性能,尤其是在处理并发请求时的优势。这使得 OpenResty 在处理大量 HTTP 请求时,依然保持出色的吞吐量和低延迟。

Lua 脚本支持:OpenResty 集成了 LuaJIT 引擎,允许用户在 Nginx 的各个阶段(例如请求处理、响应处理等)插入 Lua 脚本代码。这为开发者提供了极大的灵活性,能够处理复杂的业务逻辑和动态内容生成,而不仅仅依赖于传统的静态配置。

内建的模块支持:OpenResty 提供了大量的内建模块,涵盖了诸如 Web 服务接口(API)、缓存、数据库连接池、异步 I/O 操作等常见的 Web 应用需求。通过这些模块,开发者可以快速实现一些常见的 Web 功能,而无需额外的配置或开发工作。

高扩展性和可定制性:借助 Lua 脚本语言,开发者可以轻松实现自定义功能,做出特殊的请求处理逻辑,或者扩展 Nginx 的原有功能。而且,Lua 的高效性和灵活性使得在高负载场景下,依然可以保持较好的性能。

内存管理与异步 I/O:OpenResty 提供了非常高效的内存管理,支持非阻塞式的异步 I/O 操作,使得它能够高效地处理大量的并发连接和请求。这对于构建高性能、高可用的 Web 服务至关重要。

灵活的配置和开发环境:开发者可以在 OpenResty 中利用 Lua 脚本对请求、响应、缓存、重定向等进行高度自定义,同时也能够方便地扩展 Nginx 的配置文件,完成更为复杂的需求。

应用场景:

OpenResty 广泛应用于各种需要高性能和灵活扩展的 Web 应用场景,常见的包括:
API 网关:利用 OpenResty 的高性能处理能力,快速构建反向代理、负载均衡、API 请求的路由与控制。
实时数据处理与动态内容生成:通过 Lua 脚本的强大功能,实现动态 Web 内容的生成和数据处理。
Web 服务与微服务架构:由于其高度的可定制性,OpenResty 适用于微服务架构中的服务网关,提供灵活的请求分发和处理机制。

与 Nginx 的比较:
尽管 OpenResty 是基于 Nginx 的,但它的灵活性和可扩展性更强。Nginx 原生不支持嵌入式脚本语言,通常需要通过 C 语言扩展或第三方模块来增加动态处理能力。而 OpenResty 提供了内置的 Lua 支持,简化了动态脚本的开发和集成,从而使得开发者能够直接在 Nginx 的配置中进行复杂的动态处理,而不需要外部扩展。

总之,OpenResty 是在 Nginx 基础上,通过集成 Lua 等功能,进一步提高了 Nginx 的可扩展性和灵活性,使其成为一个强大的 Web 应用开发框架。

Lua 在 OpenResty 中的应用

在 OpenResty 中,Lua 被用来编写处理 Web 请求的脚本。通过 Lua,OpenResty 能够灵活地控制请求的流程,比如实现动态路由、访问控制、数据处理、缓存控制等。与 Nginx 配合时,Lua 使得 OpenResty 可以在请求的生命周期中执行自定义的逻辑,而不需要重新编译 Nginx 或者依赖外部的扩展模块。

安装openrestry

我的ubuntu系统,可按照下面的链接安装
开源版在线文档和支持

systemctl stop apache2.service;systemctl stop nginx
ss -lntp| grep 80
#确保80没有
apt-get -y install --no-install-recommends wget gnupg ca-certificates lsb-release
wget -O - https://openresty.org/package/pubkey.gpg | sudo apt-key add -
echo "deb http://openresty.org/package/ubuntu $(lsb_release -sc) main"  | sudo tee /etc/apt/sources.list.d/openresty.list
apt-get update
apt-get -y install openresty
#安装成功后查看
ls /usr/local/openresty/bin
openresty  opm  resty
export PATH=/usr/local/openresty/bin:$PATH

简单实验下

根据官网的步骤

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/493968.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Flutter组件————Container

Container Container 是 Flutter 中最常用的布局组件之一 参数 参数名称类型描述alignmentAlignmentGeometry定义子组件在其内部的对齐方式,默认为 null,即不改变子组件的位置。paddingEdgeInsetsGeometry内边距,用于在子组件周围添加空间…

36. Three.js案例-创建带光照和阴影的球体与平面

36. Three.js案例-创建带光照和阴影的球体与平面 实现效果 知识点 Three.js基础 WebGLRenderer WebGLRenderer 是Three.js中最常用的渲染器,用于将场景渲染到网页上。 构造器 new THREE.WebGLRenderer(parameters)参数类型描述parametersobject可选参数&#…

vue2 - Day03 - (生命周期、组件、组件通信)

文章目录 一、生命周期1. 创建阶段2. 挂载阶段3. 更新阶段4. 销毁阶段5. 错误捕获总结 二、组件2.1 注册1. 全局注册 - 公共的组件。2. 局部注册总结 2.2 三大重要的组成部分1. 模板 (Template)主要功能:说明: 2. 脚本 (Script)主要功能:说明…

移动0 - 简单

************* C topic:283. 移动零 - 力扣(LeetCode) ************* Hello, hows your weekend. during my learning, topic about array perplex me. Just do it. Inspect the topic: It is a easy one but not easy for me now bec…

powershell美化

powershell美化 写在前面 除了安装命令,其他都是测试命令,后续再写进配置文件 安装主题控件 安装主题oh-my-posh,powershell中执行 winget install JanDeDobbeleer.OhMyPosh -s winget oh-my-posh init pwsh | Invoke-Expression # 查看…

3. Kafka入门—安装与基本命令

Kafka基础操作 一. 章节简介二. kafka简介三. Kafka安装1. 准备工作2. Zookeeper安装2.1 配置文件2.2 启动相关命令3. Kafka安装3.1 配置文件3.2 启动相关命令-------------------------------------------------------------------------------------------------------------…

Element@2.15.14-tree checkStrictly 状态实现父项联动子项,实现节点自定义编辑、新增、删除功能

背景:现在有一个新需求,需要借助树结构来实现词库的分类管理,树的节点是不同的分类,不同的分类可以有自己的词库,所以父子节点是互不影响的;同样为了选择的方便性,提出了新需求,选择…

基于Spring Boot的房屋租赁管理系统

一、系统背景与目的 随着城市化进程的加快和人口流动性的增强,租房市场需求急剧增长。传统的租房方式依赖于中介平台或线下交易,存在房源信息更新不及时、虚假信息泛滥、交易流程繁琐、沟通渠道不畅等问题。基于Spring Boot的房屋租赁管理系统旨在通过构…

【NLP 16、实践 ③ 找出特定字符在字符串中的位置】

看着父亲苍老的白发和渐渐老态的面容 希望时间再慢一些 —— 24.12.19 一、定义模型 1.初始化模型 ① 初始化父类 super(TorchModel, self).__init__(): 调用父类 nn.Module 的初始化方法,确保模型能够正确初始化。 ② 创建嵌入层 self.embedding n…

jvm栈帧中的动态链接

“-Xss”这一名称并没有一个特定的“为什么”来解释其命名,它更多是JVM(Java虚拟机)配置参数中的一个约定俗成的标识。在JVM中,有多个配置参数用于调整和优化Java应用程序的性能,这些参数通常以一个短横线“-”开头&am…

使用Vscode+EIDE+Jlink开发STM32环境配置教程

环境准备 电脑,最好有梯子。一块开发板。烧录调试工具。比如Jlink。 参考文章 超级馒头神的教程 安装环境 安装Vscode,这里不多说,直接百度下载安装即可。 安装如下插件。 然后重启vscode,就可以看到左侧工具栏有了EIDE图标…

信创技术栈发展现状与展望:机遇与挑战并存

一、引言 在信息技术应用创新(信创)战略稳步推进的大背景下,我国信创技术栈已然在诸多关键层面收获了亮眼成果,不过也无可避免地遭遇了一系列亟待攻克的挑战。信创产业作为我国达成信息技术自主可控这一目标的关键一招&#xff0c…

微信小程序开发入门

实现滚动 需要设置高度和边框 轮播图 差值表达式( {{表达式的值}} ),info数据要写到js文件的data数据中 小程序中常用的事件

cad c# 二次开发 ——动态加载dll 文件制作(loada netloadx)

原理:制作一个dll工具,此dll工具可动态加载调试代码所生成的dll。 using System.Collections.Generic; using System.IO; using System.Reflection; using System.Windows.Forms; using Autodesk.AutoCAD.ApplicationServices.Core; using Autodesk.Aut…

基于AT89C52单片机的6位电子密码锁设计

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/90166684?spm1001.2014.3001.5503 14 部分参考设计如下: 目 录 摘要 1 abstract 2 1 绪论 3 1.1 课题背景 3 1.2 课题的目的和意义 3 1.3 电子密码…

文件解析漏洞中间件(iis和Apache)

IIS解析漏洞 IIS6.X #环境 Windows Server 2003 在iis6.x中&#xff0c;.asp文件夹中的任意文件都会被当做asp文件去执行 在默认网站里创建一个a.asp文件夹并创建一个1.jpg写进我们的asp代码 <%now()%> #asp一句话 <%eval request("h")%> 单独创建一…

ASP.NET|日常开发中数据集合详解

ASP.NET&#xff5c;日常开发中数据集合详解 前言一、数组&#xff08;Array&#xff09;1.1 定义和基本概念1.2 数组的操作 二、列表&#xff08;List<T>&#xff09;2.1 特点和优势2.2 常用操作 三、字典&#xff08;Dictionary<K, V>&#xff09;3.1 概念和用途…

OpenCV putText增加中文支持

OpenCV 默认并不支持中文字符显示&#xff0c;需要增加 freetype 支持&#xff0c;也需正确设置中文字体才能正常显示中文。 OpenCV 2.x 版本没有该模块&#xff0c;而 OpenCV 3.x 及以上版本才正式引入了 freetype 模块 &#xff0c;可检查并更新到较新且包含该模块的版本。 O…

设计模式期末复习

一、设计模式的概念以及分类 二、设计模式的主题和意图 设计模式的主题是关于软件设计中反复出现的问题以及相应的解决方案。这些主题是基于长期实践经验的总结&#xff0c;旨在提供一套可复用的设计思路和框架&#xff0c;以应对软件开发中的复杂性和变化性。 三、面向对象程…

Windows脚本清理C盘缓存

方法一&#xff1a;使用power文件.ps1的文件 脚本功能 清理临时文件夹&#xff1a; 当前用户的临时文件夹&#xff08;%Temp%&#xff09;。系统临时文件夹&#xff08;C:\Windows\Temp&#xff09;。 清理 Windows 更新缓存&#xff1a; 删除 Windows 更新下载缓存&#xff0…