一、组成

openresty包含4个部分,

第一个部分lua-nginx-module,ngx的c module,将lua协程的唤醒和挂起纳入nginx事件驱动模块中,并提供丰富的lua api,使得开发者可以使用lua语言可以完成http层操作

第二个部分,测试集,对lua-ngx-module做全面测试,工作量,复杂度高

第三部分,resty库,lrucache,beanstalkd,redis

第四部分,在生产环境中,出现cpu过高,或者单个cpu占用率过低问题,工具集中包含丰富systemap脚本,可以打印当前情况下,ngx和lua函数cpu占用时间,或者内存占用量

二、技术特点

1、lua中揉合和处理各种不同的nginx上游输出,ssdb,drizzle,postgres,redis,memcached

2、或者在访问请求到达上有服务器前,lua可以随心所欲的做复杂的访问控制和安全检查,防止一些sql注入,xss攻击

3、在内容句柄中随意编写复杂的web应用,使用同步的编程方式,内部是异步非阻塞的执行过程,去访问数据库或其他存储

4、在rewrite阶段,通过lua完成非常复杂的URL dispatch

三、业务使用

总体为两类,将ngx作为入口,另一类将ngx作为web application。得益于lua的易用性,和c的高效性。这些控制的时间复杂的不会太高,但是执行效率又非常优秀,上述技术特点决定,openresty业务场景很广泛。但目前只在c端行业广泛应用,在电商,存储,游戏设计到。

openresty组成和技术特点相关推荐

  1. 网关技术选型,为什么选择 Openresty ?事件驱动、协程...

    今天跟大家聊下关于网关的话题 互联网公司,不论体量大小如何,其内部的技术架构基本都是相似的,体现在以下几个方面: 数据量过大,如何定制化存储 访问量高了,如何集群化部署,流量负载均衡 响应速度慢了,如 ...

  2. [转]OpenResty的现状、趋势、使用及学习方法

    温铭,奇虎 360 企业安全服务端架构师,OpenResty 社区咨询委员会成员.一直在互联网安全公司从事服务端的开发和架构工作,致力于用互联网技术帮助企业提高安全防护.曾负责开发过木马云查杀和反钓鱼 ...

  3. OpenResty的现状趋势使用学习方法

    OpenResty的现状.趋势.使用及学习方法 原创  2015-12-08  温铭  高可用架构 编者按:高可用架构分享及传播在架构领域具有典型意义的文章,本文根据奇虎 360 安全架构师温铭的分享 ...

  4. B站Up主上传质量调优实践

    Up主上传的大量优质视频内容使得bilibili(B站)深受年轻用户的喜爱.bilibili视频云高级研发经理 唐君行在LiveVideoStack线上交流分享中详细介绍了B站为提供更流畅.稳定用户体 ...

  5. 京东商品详情页服务闭环实践

    原文地址:http://blog.csdn.net/hackercn9/article/details/59508095 该文章是根据OpenResty Con 2015技术大会的演讲<Ngin ...

  6. 收集的计算机编程电子书目录,仅供日后查阅方便

    本人有收集电子书的癖好.每日在网上收集经典的电子书籍,尤其喜欢原版的,看起来舒服.不过总是心血来潮,当时下载后瞅几眼,之后就束之高阁,再也不问津了.很为此苦恼,过后找某本书时也总是不知道在哪,为了查找 ...

  7. Java实现lucene搜索功能

    直接上代码: package com.sand.mpa.sousuo;//--------------------- Change Logs---------------------- //<p ...

  8. openresty 前端开发序

    还记得第一次尝试前后端分离的时候,是使用nginx + react 构建的spa应用,后端是java,主要处理业务逻辑逻辑部分,返回json数据,在nginx里面配置好html + js纯静态文件,再 ...

  9. 使用容器的正确方式,Docker在雪球的技术实践

    " 雪球目前拥有一千多个容器,项目数量大概有一百多个,规模并不是很大.但是得益于容器技术,雪球部署的效率非常高,雪球的开发人员只有几十个,但是每个月的发布次数高达两千多次. 2018 年 5 ...

最新文章

  1. 商城数据库表设计介绍
  2. 【算法与数据结构】B-树学习笔记
  3. python一般用来开发什么-python主要用来做什么?Python开发简单吗?
  4. Atitit.5gl 第五代语言编程语言 PROLOG教程  人工智能语言的标准 与实现
  5. mysql map 键值对获取_mysql map_get function,用于解析map结构数据,根据key返回相对应value...
  6. VTK:Rendering之MotionBlur
  7. 解决:com.sun.jersey.api.client.ClientHandlerException: java.net.ConnectException: Connection refused:
  8. macos sierra怎么升级到catalina_Mac os 下 Pyhon 库老是安装失败?
  9. Struts与MVC分层理解
  10. python全栈脱产第20天------常用模块---re模块和subprocess模块
  11. mysql 关联顺序_Mysql 多表关联链接顺序说明
  12. 长时间看电脑的朋友,怎么保护您的眼睛
  13. 邮件合并批量制作邀请函
  14. 设值单元格字体和背景色的颜色-实例
  15. 循环-菲波那切数列II
  16. 【AD封装】RJ45座子(带3D)
  17. 【论文精读1】基于BN的模型剪枝-Learning Efficient Convolution Networks through Network Slimming
  18. 山外看山 —— 评The Art of Unix Programming
  19. 数据中台,概念炒作还是另有奇效? | TVP思享
  20. 2018最受欢迎开源免费CMS建站系统排行榜

热门文章

  1. VO、DTO、DO、PO的概念
  2. 使用qsort()和bsearch()函数对值和字符串进行排序和查找
  3. Linux 命令(105)—— service 命令
  4. 【Java并发编程】之十六:深入Java内存模型——happen-before规则及其对DCL的分析(含代码)...
  5. Mybatis非mapper代理配置
  6. C/C++的内存泄漏检测工具Valgrind memcheck的使用经历
  7. 20180209-sys模块
  8. 【a202】【9208】输油管道问题
  9. 细说Activity与Task(任务栈)
  10. Android 返回键的处理