端点安全系统(EDR、CWPP的混合)的Agent端选用Lua这门语言作为脚本语言,这篇文章分析一下如何权衡出这种选择的。
一般来说,端侧使用脚本语言,主要还是加快业务迭代,另外一个大的原因是脚本语言的门槛比较低。
Lua这门语言,缺点比较明显:
- 语法非主流
- 库生态比较孱弱,主要是依赖C、C++生态
但是优点也存在:
- 内存占用小(LuaJIT)
另外一门脚本语言Python,除了内存占用,其他各个方面都是吊打Lua的,但是我们项目的Agent内存占用是一个硬指标(POC测试中占分比较高),在Agent端还有其他业务跑着的情况下,拉起一个Python进程,很容易触发内存阈值而被kill。
针对Lua的缺点:
- 语法我们限制了一些写法,并且引入了luacheck这类lint工具
- 好在团队C、C++基础还行,这方面不是问题