为什么重复制造轮子 – aLiLua

其实早在 2010 年我就在 Lua 用于 Web 开发方面做过尝试,当时还以 PaaS 形式对外提供服务的。但工作重点转移到云存储方向,并且服务也没见起色就停止维护了。

而到了 2013 年工作稍微轻松,想搞点小东西玩玩,也尝了把 node.js,但过程中发现基于回调的形式进行 Web 开发还是比较累的,开发效率相对于 PHP 低得多,尤其是业务逻辑多起来的时候。但 node.js 的异步处理效率很高,换用 node.js 是有得也有失啊。这让我再次想起 Lua,这个开发效率跟 PHP 一样快,同步逻辑的思维相对 node.js 来说清晰太多了。但之前做的 yo2lua 项目由于个人对 Lua 的了解不够深入,基于堵塞 IO 实现,可以说性能一败涂地。当时居然还搞什么 PaaS,搞笑了~(个人经验:回头看自己,会发现有很多sb,哈哈)既然这样我就重新搞搞 Lua 吧,aLiLua.com 这个域名在 2010 年做 yo2lua 的时候就注册好了,现在就以此名开展这个开源项目。

设计目的:
1. 开发简单、效率高
2. 运维简单、性能高
3. 稳定性高、资源消耗少
4. 满足 Web 开发中的常用功能需求

Lua 语言跟 PHP 类似的同步逻辑开发模式,满足开发效率要求。而 Lua 语言的运行效率可以说是这么多高级语言当中的佼佼者,满足性能高的要求。并且该语言至今已迎来第 20 个生日,在语言本身而言是非常稳定的。

为了简化运维和提高性能,所以决定采用 epoll 事件来驱动整个系统,而不是基于 nginx 来实现。(在第一版成熟后,会考虑其他平台的支持)当然完全自主实现有各有利弊,好处是可定制性高、相对的业务逻辑少,更纯粹于提供 Web 服务。

aLiLua 第一版所支持的功能列表:
1. cosocket (异步网络IO)
2. connection pool
3. HTTP/1.1 (keepalive)
4. gzip/deflate 压缩
5. session
6. 基于共享内存的 key/value cache (Yac weibo.com 在用)
7. template 模板引擎
8. sandbox (可用于做 PaaS 服务)
9. iconv/字符串处理
10. hooker/filter 钩子和过滤器
11. CLI 支持命令行模式
12. writev/sendfile 高性能的网络操作
13. ssl socket
14. mysql/memcached/redis/http client (由 ngx_lua 提供)

计划功能列表:
1. cron 定时任务
2. queue 任务队列
3. aio 文件异步IO
4. cluster key/value 存储支持集群分布
5. mbstring 字符串处理
6. Web Framework 基于 aLiLua 的 Web 开发框架
7. ssl server
8. msgpack rpc
9. …

在完成第一版时我对 Lua 和 node.js 等做了很多压力测试,性能跟 node.js 差不多,但如用 LuaJit 则高出 30%+。最主要的是 Lua 所消耗的内存和 CPU 都比 node.js 少,且占有率比较稳定。压力测试中使用的业务逻辑会比实际项目少,很可能实际效果比 node.js 更好一些。

aLiLua 是个新生的开发模式,底层兼容 ngx_lua ,大家可以先尝试用 aLiLua 来做些小应用 :) 我们提供免费终生保养服务。更希望大家在使用过程中能提出宝贵意见,以使 aLiLua 更完善

下载地址: https://github.com/yo2oneoo/alilua

  • tcdona

    前排~ 大神又重新开始啦~~

  • 店小二来福

    个人觉得的话, web framework 可以参考 laravel,
    很友好的 php框架。
    希望写个博文 教下 如何 配置 alilua环境 并 运行(ubuntu)
    菜鸟一个,研究官网好几天了 没弄明白。。
    想试试 手痒