HAProxy 将完全使用 Lua 重写,之前使用的是 C 语言。HAProxy 1.6 计划在 2016 年 4 月 1 日发布,HAProxy 刚好使用 366 天完成这个重大的任务!
这段时间 HAProxy 开发的进度越来越慢,主要原因是:
- 代码库不断在增长,而构建的时间越来越长。十年前,1.1.31 版本只有 6716 行代码;现在,主线代码就有 108395,比之前增长了 16 倍。
- gcc 的开发也越来越慢
- 开发中每天至少需要半个小时来进行项目构建
- 学校已经不再学习 C 语言,很难找到新的贡献者。事实上,大部分会 C 的人都已经有工作,而且只有很少的时间投入到开源事业
与此同时,HAProxy 的作者也已经 41 岁了,不能像以前那样很好的优化代码了。
当前的 Lua 组件速度非常快,虽然可能没有 C 那么快,但是 Lua 在不断改进,所以相信几年后将会越来越快,追上 C,因此,HAProxy 的作者希望使用 Lua 来完全重写 HAProxy,那样会带来很多益处。
首先,Lua 非常容易学习,这样更容易找到更多的开发者和贡献者。还有一个好处就是不再担心资源分配了,使用 strdup() 来保存字符串副本,当简单操作 “a = b” 的时候无需再担心内存使用。
其次,Lua 不要求编译器,所以每天 200 个构建可以节省 30 分钟的时间,这会加快每个开发者的开发速度。
第三,HAProxy 最新的版本有大量的新样本获取函数和转换器。现在不再需要这些了,因为代码和配置将会混合在一起,就像每个人用 Shell 脚本一样。
最后,当前的 HAProxy 将会只保留 Lua 引擎,也许以后会找到更好的,HAProxy 将会作为 Lua 库分发到每个地方,也许会出现在 IoT(物联网)设备,如果有意义的话。 (也许有人都想着在手表中使用 HAProxy?)
这些步骤不再需要做代码版本控制了,因为每个人都有自己的 fork,代码会不断的增长。同时也意味着 Git 对 HAProxy 已经无用了。安全方面也会是更好的选择。
HAProxy 技术的大部分资源都会分配给这个任务,明显的,所有开发团队都是全职工作,同时会培训 sales 人员使用 Lua 编码,加快开发速度。
当然,HAProxy 将会继续提供 HAPEE fork 而来的企业版本,重命名为 “Luapee”。Luapee 将会提供所有的组件和 VRRP,SNMP 等等专业的解决方案。从长远来看,期望能用 Lua 重写这些组件。
ALOHA 应用也会做些相应的改进,可以说是 Lua 引擎,用来运行所有的代码,也许会重命名为 HALUA。
一旦全部都移植,HAProxy 作者将会使用微架构体系领域的技能设计一个原生的 Lua 处理器,提升应用的速度。
使用 Lua 重写的过程会很枯燥,就像使用 Lua 重写 OpenSSL,不会简单也不会有什么乐趣。但是为了安全和速度,一切都值得。
这么重大的任务,HAProxy 团队计划 2016 年 4 月 1 日发布 HAProxy 1.6 版本,使用 366 天来完成这个任务。希望大家能理解,他们也是没有其他选择:)
更多内容请看这里:http://www.haproxy.org/#news。