1.openresty+lua+kafka 1.1 openresty+lua+kafka方案 之前的项目基于nginx反向代理后转发到Tomcat的API接口进行业务处理,然后将json数据打入kafka中,但是随着业务的扩大,访问量越来越大,并发数也很高,导致程序遇到性能问题: 基于nginx的高性能特点,现在考虑使用一种openresty+lua+kafka,直接在nginx阶段将数据打入kafka中,来提高性能. 1.1.1 OpenResty运行原理 Nginx 采用的是 master…
简介 在很多数据采集场景下,Flume作为一个高性能采集日志的工具,相信大家都知道它.许多人想起Flume这个组件能联想到的大多数都是Flume跟Kafka相结合进行日志的采集,这种方案有很多他的优点,比如高性能.高吞吐.数据可靠性等.但是我们如果要求对日志进行实时的采集,这显然不是一个好的解决方案.原因如下: 就目前来说,Flume能支持实时监控一个目录的数据文件,一旦对某个目录的文件采集完成,就会打上completed的标志,若之后再有数据进入这个文件中,Flume则不会检测到. 所以,我们…
********************* 部署过程 ************************** 一:场景描述 对于线上大流量服务或者需要上报日志的nginx服务,每天会产生大量的日志,这些日志非常有价值.可用于计数上报.用户行为分析.接口质量.性能监控等需求.但传统nginx记录日志的方式数据会散落在各自nginx上,而且大流量日志本身对磁盘也是一种冲击. 我们需要把这部分nginx日志统一收集汇总起来,收集过程和结果需要满足如下需求: 支持不同业务获取数据,如监控业务,数据分析统计…
一.lua中redis的配置依赖: 1.OpenResty的lua访问redis的插件:https://github.com/openresty/lua-resty-redis 二.下载后,导入对应的插件: lua_package_path "/opt/openresty/lualib/kafka/?.lua;;"; lua_need_request_body on; 三.lua代码 2.使用lua访问redis: server {        location /test {   …
kafka 官网: https://kafka.apache.org/quickstart zookeeper 官网:https://zookeeper.apache.org/ kafka 运行需要 zookeeper 支持,所以安装 kafka 的时候需要先安装 zookeeper. kafka.zookeeper 的安装按照官网说的即可,我安装的时候没遇到什么问题,centos.mac都尝试安装了(mac 还是推荐使用 brew,很强大) 项目已经在使用 kafka 了,所以自己研究了下 o…
openresty+lua在反向代理服务中的玩法 phith0n · 2015/06/02 10:35 0x01 起因 几天前学弟给我介绍他用nginx搭建的反代,代理了谷歌和维基百科. 由此我想到了一些邪恶的东西:反代既然是所有流量走我的服务器,那我是不是能够在中途做些手脚,达到一些有趣的目的. openresty是一款结合了nginx和lua的全功能web服务器,我感觉其角色和tornado类似,既是一个中间件,也结合了一个后端解释器.所以,我们可以在nginx上用lua开发很多“有趣”的东…
写在前面 OpenResty(后面简称:OR)是一个基于Nginx和Lua的高性能Web平台,它内部集成大量的Lua API以及第三方模块,可以利用它快速搭建支持高并发.极具动态性和扩展性的Web应用.Web服务或动态网关. OR最大的特点就是,将Lua协程与Nginx事件驱动模型及非阻塞I/O结合起来.使用户可以在handler中使用 同步但是依然是非阻塞 的方式编写其应用代码,而无需关心底层的协程调度以及与Nginx事件驱动模型的交互. 本文将先从总体上介绍OR的协程调度机制,然后结合源码以…
最近在项目中负责Tomcat高并发优化方案写一写新得. 优化1)tomcat默认的并发是75,可以启用线程池根据生产环境硬件设定线程池大小. <Executor name="tomcatThreadPool" namePrefix="catalina-exec-" maxThreads="150" minSpareThreads="40"/>      并在使用时引用线程池. 并发在150左右      优化2)t…
前面一篇文章介绍了Openresty Lua协程调度机制,主要关心的是核心调度函数run_thread()内部发生的事情,而对于外部的事情我们并没有涉及.本篇作为其姊妹篇,准备补上剩余的部分.本篇将通过一个例子,完整介绍OpenResty中Lua钩子的调用流程,包括初始化阶段的工作.新连接进来时如何进入钩子.I/O等待时如何出去.事件触发时如何恢复.钩子正常执行结束时的操作.钩子内出错的情况.本文同样是基于stream-lua模块的代码. 本博客已经迁移至CatBro's Blog,那里是我自己…
tengine  lua 开源一 调用内部接口高效发送文件 开源自己封装的sendfile 模块,可以高效的通过lua发送文件 源码地址:https://github.com/weinyzhou/Lua-sendfile 调用方法 local sendfile=require "sendfile"; sendfile.call(filename,-1,-1); 第一个参数文件名, 第二个参数开始位置 第三个参数长度…