openresty

CentOS7安装OpenResty

我的未来我决定 提交于 2020-08-17 06:49:30
有一个项目是Lua库写的,需要部署一个web服务器,考虑Openresty对lua的支持,部署Openresty。 OpenResty <p>官方说明:OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。</p> 下载地址: OpenResty官网: http://openresty.org/ OpenResty下载地址: http://openresty.org/cn/download.html 安装依赖库: $ yum install -y pcre-devel openssl-devel gcc curl 下载版本: $ wget https://openresty.org/download/openresty-1.15.8.1.tar.gz 解压: $ tar -xzvf openresty-1.15.8.1.tar.gz 进入解压目录: $ cd openresty-1.15.8.1/ 检查配置环境, 生成 Makefile,默认安装到/usr/local/openresty: $ ./configure 6.编译安装: $ gmake && gmake install 安装结果:

041. 通过 Lua 扩展 Nginx

北战南征 提交于 2020-08-14 20:11:19
1. ngx_lua 模块 Nginx 模块需要用 C 开发,而且必须符合一系列复杂的规则,最重要的用 C 开发模块必须要熟悉 Nginx 的源代码,使得开发者对其望而生畏。 ngx_lua 模块通过将 lua 解释器集成进 Nginx,可以采用 lua 脚本实现业务逻辑。 该模块具有以下特性: 高并发、非阻塞地处理各种请求。 Lua 内建协程,这样就可以很好地将异步回调转换成顺序调用的形式。 每个协程都有一个独立的全局环境(变量空间),继承于全局共享的、只读的“comman data”。 得益于 Lua 协程的支持,ngx_lua 在处理 10000 个并发请求时只需要很少的内存。根据测试,ngx_lua 处理每个请求只需要 2KB 的内存,如果使用 LuaJIT 则会更少。 ngx_lua 非常适合用于实现可扩展的、高并发的服务。 2. 协程(Coroutine) 1. 协程类似一种多线程,与多线程的区别 协程并非 os 线程,所以创建、切换开销比线程相对较小。 协程与线程一样有自己的栈、局部变量等,但是协程的栈是在用户进程空间模拟的,所以创建、开销很小。 多线程程序是多个线程并发执行,也就是说在一瞬间有多个控制流在执行。而协程强调的是一种多个协程间协作的关系,只有当一个协程主动放弃执行权,另一个协程才能取得执行权,所以在某一瞬间,多个协程间只有一个在运行。

开源软件创建SOC的一份清单

时光怂恿深爱的人放手 提交于 2020-08-14 06:17:49
https://www.freebuf.com/articles/network/169632.html 0×01 概要 现在各个公司都有自己的SOC安全日志中心,有的是自己搭建的,有的是买厂商的,更多的情况是,各种复合类的的组织结构。这些日志来自不同的服务器,不同的部门五花八门。如果是买的设备,设备可能是一整套的方案,有自己的流理量监听与安全日志中心,但因为成本的原因,不能所有地方都都部署商业产品,必然会有自己的SOC系统,商业系统也不可能去监听分析,太边界的日志,处理起来也力不从心,首先本地化的数据不通用,商用产品也没法构建安全策略。开源和自己构建的系统可以高度的定制化,但与商业产品不能有机的结合,就没办法发挥最大效用。 0×02 需求分析 抛出问题,我们首先要收集各种日志,监听流量,让设备去发现流量中的威胁,我们来汇总报告数据,结合我们收集来的所有数据,去溯源,去发现更多的历史痕迹。内网安全和外网不一样的地方是,内网有各种日志和设备,采用什么方式取,什么方式存,用什么工具,可能都不统一。但总来说,我们主要的手段监听危险行为:1.分析流量;2.分析日志。 像tenable这种工具,就是提供了全栈系列的解决方案。 她会把流量中各种协议解析出来配合自己的策略报警,还提供了与外部系统交互的方式,syslog和rest api都是典型变互手段,paloato的IDS也一样

语音识别服务分离计算内核

蹲街弑〆低调 提交于 2020-08-13 18:58:54
云栖号资讯:【 点击查看更多行业资讯 】 在这里您可以找到不同行业的第一手的上云资讯,还在等什么,快来! 背景 最近研究的同事对识别内核做了一些优化,将原先集成在casrserver的内核计算逻辑单独抽离出来做成了服务并且测试后性能有提升,需要casrserver服务配合做一些改造,我之前也有过类似的想法,这次正好识别工程团队没有人力支持,加上我之前维护过casrserver, 于是就去协助casrserver改造了。在修改之前先介绍一下当前的架构 当前架构 如上图,当前casrserver中既处理了网络连接,又完成了识别的计算任务,图中是一次语音请求的核心交互逻辑, 一条客户端连接过来,网络进程里会对应三个协程: recv协程负责接收客户端发上来的数据 rpc协程负责将recv的数据发送给计算进程,然后接收计算进程返回的识别结果 send协程将识别结果再回给客户端 为了做到异步三个协程之间用了两个队列进行通信, 关于这套架构更详细的介绍,见顺哥在2016年openresty大会做的 ppt分享。之前的架构介绍到这里,让我们再来看看新版修改后的架构。 改动后的架构 如图,原先在openresty中worker进程fork出来的计算进程已经抽离出来成为独立的服务,casrserver和asr kernel server通过cosocket进行通信。 实现 针对上述架构

基于Openresty+CEPH实现海量数据管理系统

為{幸葍}努か 提交于 2020-08-11 16:07:38
「持续更新中,欢迎关注...」 1. 需求: 作为一家专注于三维高精度地图服务的公司,有海量(PB级)的原始数据、中间数据、成功数据,需要存储、管理、并定期归档。 按项目管理数据,数据分类航飞数据、控制点数据、中间数据、成果数据、其他数据。数据来源包括无人机数据、载荷数据、地面站数据、人工打点数据等。不同渠道汇集而来的数据。 采用类似百度网盘的形式,上传、下载,支持断点续传、进度跟踪。 支持细化到文件级别的权限控制,以及更多的文件(夹)属性。 2. 分析: 系统重点在于数据存储的选型,支持海量数据的存储,能够支持在复杂网络下的数据上传。选用CEPH作为数据存储,RGW对象存储,S3协议上传下载,完美支持分片和断点续传。 系统难点在于文件级别的业务权限控制,以及文件(夹)更多的属性支持。CEPH RGW本身支持权限控制,但是无法和业务权限做对接。对象存储本身没有文件夹的概念,无法对文件夹做分类、数量展示、大小展示。所以实现自定义索引服务,CEPH主要负责存储,自定义索引服务实现展示与查询。 3. 实现 系统重点在于海量数据上传的可靠性与海量数据索引的管理。 3.1 架构 上传助手就是类百度网盘的桌面端软件,采用 Electron JS )实现。主要实现功能:项目展示、上传、下载。 业务层包括网关服务、账号服务、项目服务、文件索引服务等。采用Java + Spring Boot +

Springboot快速上手- 第七篇 单元测试

痴心易碎 提交于 2020-08-08 17:59:59
1 概述 SpringBoot对测试提供了一些简化支持,只需要添加起步依赖即可使用: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> </dependency> 2 以前的测试方式 SpringJUnit支持,由此引入Spring-Test框架支持,通过这个注解让SpringJUnit4ClassRunner这个类提供Spring测试上下文 @RunWith(SpringJUnit4ClassRunner.class) 指定SpringBoot工程的Application启动类,通过这个注解加载和配置Spring应用上下文 @SpringApplicationConfiguration(classes = App.class) 由于是Web项目,Junit需要模拟ServletContext,因此需要给测试类加上@WebAppConfiguration @WebAppConfiguration 3 常见的第一种方式 @RunWith(SpringRunner.class) @SpringBootTest(classes = App.class)

systemTab动态分析linux下lua性能

杀马特。学长 韩版系。学妹 提交于 2020-08-08 14:01:48
https://github.com/openresty/openresty-systemtap-toolkit https://sourceware.org/systemtap/langref/ https://github.com/brendangregg/FlameGraph 参考ngx-sample-lua-bt 现代linux 动态追踪技术 主要是基于 ebpf systemtap 是 动态追踪的前端, 技术原理是 编译一个 类似c的脚本 生成 内核模块, 来监控用户空间的lua程序 对openResty的脚本改造两点, 1: 去掉nginx相关函数的 probe 探针 2:如何获取LuaState 状态机的方法 调整, 可以使用程序内部的 全局变量定义 if(\@defined(\@var("globalL", "$lua_path"))) { L = \@var("globalL", "$lua_path") } 对timer 采样也可以调整 timer.profile 每个CPU周期 timer.ms 是 定时毫秒 动态追踪核心: 定义probe 探针位置 定义timer 采样 在timer中判断 PID 进程ID, 来确定自己要观察的程序 timer.s 观察总时长后结束 systemtap 的堆栈格式是 一次堆栈每层 文件:行号 总共出现次数 fix-bt 之后

Springboot快速上手- 第三篇 注解/流程/依赖

不问归期 提交于 2020-08-08 04:52:47
1:SpringBootApplication注解 简介 在启动类上有一个非常重要的注解,就是SpringBootApplication注解,理解它对于理解SpringBoot的启动过程很有帮助。 可以查看一下SpringBootApplication的源码,里面有很多注解,其中最重要的有: 1: @Configuration ,这个是在@SpringBootConfiguration里面用的 2:@EnableAutoConfiguration 3:@ComponentScan @EnableAutoConfiguration 2:SpringApplication执行流程 可以配着看源码 3:起步依赖 什么是起步依赖 Spring Boot通过提供众多起步依赖来降低项目依赖的复杂度。所谓起步依赖,就是一个Maven项目对象模型(Project Object Model,POM),定义了对其他库的传递依赖,这些东西加在一起即支持某项功能 好处 不用管究竟需要哪些依赖:添加相应的起步依赖,就相当于把一堆需要的依赖都加入了。 也不用管具体要依赖什么版本:起步依赖本身的版本是由正在使用的Spring Boot的版本来决定 的,而起步依赖则会决定它们引入的传递依赖的版本。 Springboot目前有哪些起步依赖 可以参看官方文档: https://docs.spring.io

nginx lua脚本 操作文件目录或者文件的默认路径的坑

天大地大妈咪最大 提交于 2020-08-07 21:13:39
最近线上出现了BUG,就是在服务器迁移之后,发现 nginx 的lua 脚本不能采集nginx的log数据 经过排查发现是因为 lua 不能找到对应文件,所以不能将nginx 数据写入 文件中。即 lua 不能创建创建文件目录,因此找不到文件。 明明 服务器未迁移之前好好的,怎么迁移重启之后就 报错了? 这块是 离职同事写的,那时候比较忙交接的时候也没有怎么认真看。 坑啊! 重现步骤 启动nginx /usr/servers/nginx/sbin/nginx nginx 配置 user nginx; worker_processes 1; #error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; #pid logs/nginx.pid; events { worker_connections 1024; } http { include mime.types; default_type application/octet-stream; lua_package_path "/usr/local/servers/lualib/?.lua;;"; lua_package_cpath "/usr/local/servers/lualib/?.so;;";