您现在的位置:智能制造网>技术中心>技术趣读|Kong与Nginx的媒介—Openresty

直播推荐

更多>

企业动态

更多>

推荐展会

更多>

技术趣读|Kong与Nginx的媒介—Openresty

2022年02月24日 11:46:49人气:120来源:上海派拉软件股份有限公司


接着上次说的话题,我们来看看Kong又是怎么和Nginx互动的,要揭开它们的神秘面纱之前,咱们还得先聊聊Nginx的架构模型。


Nginx采用的是Master-Worker模型,一个Master进程管理多个Worker进程,基本的事件处理都放在 Worker 中,Master负责部分全局初始化以及对Worker的管理。Master进程监控着 Worker进程的运行状态,当 Worker进程因异常情况退出后,会自动启动新的 Worker进程,请求方不会有任何感觉。


为了一窥全貌,这里引用下Nginx的架构图,如果你的嗅觉足够,肯定会发现一些有技术含量的东西,这图可是弥漫着众多高可用性的强大气息啊。





关于内部功能模块,Nginx主要有5大块,分别是核心模块、配置模块、事件模块、HTTP模块、Mail模块。配置模块和核心模块是其他模块的基础,事件模块则是HTTP模块和Mail模块的基础。





而HTTP模块处理几乎所有用户客户端发起的请求,请求通过Master进入Worker进程主循环后,系统会根据请求调用11个阶段的处理模块,其中有7个阶段可以调用第三方的处理模块,几乎包含了所有的解析阶段,这就是我们经常会说的业务可扩展的切入点,在不需要调整Nignx源码的情况下而实现功能插件的调用,只不过被Nginx调用的功能插件是需要基于C/C++语言编写的,但这已不是重点,重要的是为满足企业不同的业务需求而打开了潘多拉盒子。






窥探了Nginx架构模型后,我们再看看OpenResty又是什么?


简单的说是ngx_http_lua_module插件模块、Nginx、Luajit三者的整合,是Nginx的扩展,并提供了诸多公共组件供开发插件调用,安装OpenResty就不需要再安装Nginx了。当然!如果不想用OpenResty而直接用Nginx搭配ngx_http_lua_module和Luajit也是可以的,*喜欢走不寻常路的技术大咖们,这有点像组装机和品牌机的区别,只要够专业,搭配随意,变腐朽为传奇往往也只是一念之间而已。



Kong启动意味着OpenResty启动,也就等同于Nginx的启动,Kong会把配置文件通过OpenResty最终传递给Nginx。在OpenResty中Nginx启动会自动装载ngx_http_lua_module插件模块,该模块扩展了Nginx可支持的几个阶段。


在来自外部请求触发后,Nginx会调用ngx_http_lua_module插件模块中相应的方法,而这些方法已经集成了Luajit库的解析接口,会由LuaVM来解析用lua语言编写的脚本模块,这就是整个Kong的业务模块与Nginx交互的基本处理过程。


到这里也已解决了不会C/C++语言却又想编写Nginx插件模块的问题,做运维的兄弟们可以洗洗睡了。






OpenResty的作用就像媒介或桥梁,解决了原本并不能连接的两个端点,既然是连接自然是双向的,在Luajit库中除了提供C/C++语言调用lua语言外,也提供了FFI接口从lua语言调用C/C++语言的通道。


简单吧,还能想到什么?


对了,咱们缺的就是一个解析器!如果够专业,*可以自定义任何语言让Nginx来调用,只要拥有一个自己的解析器,外加一个供Nginx调用的插件模块,那么属于你的世界来了,KVM、JVM、LLVM、LuaVM……等诸多神器都在欢迎你的到来,当能力匹配上任性时,才算堪称!做开发的兄弟们也可以洗洗睡了。



全年征稿/资讯合作 联系邮箱:1271141964@qq.com

免责声明

  • 凡本网注明"来源:智能制造网"的所有作品,版权均属于智能制造网,转载请必须注明智能制造网,https://www.gkzhan.com。违反者本网将追究相关法律责任。
  • 企业发布的公司新闻、技术文章、资料下载等内容,如涉及侵权、违规遭投诉的,一律由发布企业自行承担责任,本网有权删除内容并追溯责任。
  • 本网转载并注明自其它来源的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品来源,并自负版权等法律责任。
  • 如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

<
更多 >

工控网机器人仪器仪表物联网3D打印工业软件金属加工机械包装机械印刷机械农业机械食品加工设备制药设备仓储物流环保设备造纸机械工程机械纺织机械化工设备电子加工设备水泥设备海洋水利装备矿冶设备新能源设备服装机械印染机械制鞋机械玻璃机械陶瓷设备橡塑设备船舶设备电子元器件电气设备


我要投稿
  • 投稿请发送邮件至:(邮件标题请备注“投稿”)1271141964.qq.com
  • 联系电话0571-89719789
工业4.0时代智能制造领域“互联网+”服务平台
智能制造网APP

功能丰富 实时交流

智能制造网小程序

订阅获取更多服务

微信公众号

关注我们

抖音

智能制造网

抖音号:gkzhan

打开抖音 搜索页扫一扫

视频号

智能制造网

公众号:智能制造网

打开微信扫码关注视频号

快手

智能制造网

快手ID:gkzhan2006

打开快手 扫一扫关注
意见反馈
关闭
企业未开通此功能
详询客服 : 0571-87858618