CSDN采访陶辉的关于开发Nginx模块的建议

CSDN:目前国内知名的互联网公司很多都在使用Nginx,您觉得企业在使用Nginx\开发Nginx模块的过程中需要注意什么?

陶辉:仅当需要并发处理万级别或以上的TCP连接时,才应当考虑Nginx。

当官方Nginx无法满足项目需求,在开发你的个性化模块之前,先看一看大量的Nginx第三方模块里,有没有能够解决问题的Nginx模块,不要重复开发轮子,尤其Nginx轮子的开发难度还不低。Nginx.conf里可以玩的花样很多(这由每一个Nginx模块决定,如ngx_lua这样的模块还可以在里面插入lua语法),或许一段几十行的配置就能完成复杂的功能。

如果确实没有满足需求的模块,那么,再看看能不能通过类似subrequest这样的机制将问题分解为多个子问题,其中多数子问题可以由现成的模块完成,或者通过proxy机制来与其他现成的组件通过tcp协议交互完成。组合这些子问题来构成解是个好习惯。

若真有必要编写Nginx模块,先要确保它只是解决一个非常纯粹、简单的子问题,不要耦合太多的需求。Nginx进程里是拒绝任何阻塞操作的,这是因为模块都运行在IO核心处理线程中的。任何一个边缘化的模块都可能因为自己小小的阻塞调用毁掉Nginx的高性能。所以,慎重的考虑模块中的每一个调用,确认它们不会导致进程进入sleep状态,确认它们不会在那里空转占用系统资源。好好使用Nginx定时器事件、共享内存,往往能解掉上述问题。

写模块时,使用好Nginx的变量机制,让自己的模块插上http框架的翅膀,根据框架解析出的变量来做灵活的处理。甚至,提供一些新的变量作为底层模块而给上层模块使用。

使用好nginx.conf,通过灵活的配置来提供丰富的功能。

debug级别的error.log日志非常详尽,仅有它就可以定位出很多你的模块bug,别忘了使用它必须在编译时加入--with-debug

最后,如果模块可能对其他人有帮助,那么,分享它吧。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值