自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(7)
  • 收藏
  • 关注

原创 开源星球:用utopia框架10行代码实现URI改写

要让一个功能热加载其对应的配置,要做两方面:配置管理和配置使用。配置管理又要做配置存储和配置生效,但是呢配置存储前要做配置验证。它实现了配置热加载,让开发者基于它只写自己的业务功能。之前的代码里,我们用utopia.lua这一个文件演示了IP黑名单功能,在这个例子里,我们实现更加接近生产级别的代码。这是一个更简单的例子,展示如何用utopia框架不用reload nginx就能改写URI。conf.lua:配置验证模块。init.lua:入口文件。http.lua:业务模块。

2023-09-04 10:47:00 81 1

原创 开源星球:Utopia框架例子,百行Lua代码实现NGINX IP黑名单

nginx-http-lua-module和utopia框架的核心目标是解决nginx reload问题,本文以IP黑名单为例,演示如何从零实现这一功能。然后定时将这个JSON配置同步到各个进程的Lua模块,让Lua代码可以快速的访问。要实现任何的热加载功能,需要两部分,一部分是配置的管理,一部分是配置的使用。为了让每个进程快速访问到配置,需要将配置定时同步到Lua模块里。接着是配置的使用,每个http请求都有可能用到Lua里的配置。lua对象:ngx和r​​​​​​​。nginx指令:​​​​​​​。

2023-08-28 10:21:36 70

原创 开源星球:设计 Utopia 框架,彻底解决 nginx reload 问题

因此,配置应定期更新>到每个进程内。我们的设计原则是用Lua只写业务逻辑,算法和数据结构等跟性能有关的,用C去实现,这些隐藏在nginx lua c模块里。举个例子,有些开发者用Lua实现json的解析,我们会将这种常见的功能放在 C模块里,然后提供接口来使用,比如ngx.json_encode,ngx.json_decode。所有的Lua代码都运行在NGINX进程里,配置更新进进程里的Lua模块后,Lua代码就能正常使用配置,而不用做类似nginx reload这样的操作,以达到热加载的效果。

2023-08-18 21:59:05 104 1

原创 开源星球:开发解决nginx reload问题的框架

将配置保存在共享内存,所有的进程都可以访问它,而且是只读的方式,也不用锁,这是可行的。然而在现在的视频时代,长连接尤其的多,一个长视频就是一个长连接,几十分钟的很常见,这意味着旧进程会继续占着很长时间,进程是个比较消耗资源的东西,尤其内存。在不改变源码的方式下是不可能更新NGINX配置的,比如location这种配置,我们做的是另一个思路,设计一个全新的配置,能让它做跟NGINX同样的功能,可能没法100%完全相同,但尽量满足自己的业务。这种对源码入侵比较大,缺点就是要同步官方的源码,有维护上的麻烦。

2023-08-13 14:12:40 219 1

原创 开源星球:原创能力,我在NGINX社区学到的最好技能

之后,Igor开发了NGINX Unit以构建更现代化的应用软件,同时他也开发了NJS,让NGINX具备脚本语言开发的能力。为了更好用,减少依赖:NGINX的红黑树实现已经很好了,但是Igor在写Unit时,又重新实现了一个新的红黑树,个人感觉接口和实现都比NGINX更好。如果有人能写出比以前更好的软件,功能,工具,这就像在经济学中的搭便车效应,他们为后来者提供了更好的服务。重造轮子的成本并非想象中的高:在开源世界里,我们更追求价值和质量,所以有时候花费几周或者几个月的时间去重造一个有价值的轮子是值得的。

2023-08-07 14:16:13 61

原创 开源星球:一个真实的开源开发案例

本文目的是通过分享一个真实的开源案例,让感兴趣的开发者了解一个功能怎么从零合并到GitHub项目。

2023-08-07 14:13:53 106

原创 开源星球:成为优秀开源开发者

我们需要找一个脚本语言,个人认为Lua是最适合的C胶水语言,也就是说跟C交互最好,从开发门槛和性能综合考虑,Lua 5.4是最适合的。除了NJS,Unit也是我感兴趣的项目,这也是Igor写的项目,代码质量不在话下,甚至设计上更好。它没有明确目标,纯粹打造一个开源项目的练兵场,但是代码会跟NGINX社区的标准一样,还有技术交流。我想从零开始打造一个项目,见证它的成长应该是件很有意思的事情,也是参与者进步最快的方式之一。学英语得有个英语的环境,可能是工作环境是讲英语的,也有可能生活在英语的环境里。

2023-08-07 14:11:54 58

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除