php node lua,aLiLua web框架——node.js般的异步处理遇上PHP般的开发效率

aLiLua是基于Lua语言的一款网络服务开发框架, 使用 epoll 进行网络/文件IO事件读写,对Lua协程进行调度,性能高效,使用简单。

为什么会有aliLua?

又拍云的oneoo欣赏 node.js 高效的异步处理,但是不喜欢 node.js 累人的基于回调的开发节奏,因此想到了 Lua 这个开发效率跟 PHP 一样快,而同步逻辑比 node.js 清晰的语言。于是,aliLua就诞生了。

Lua 语言

Lua是一种轻量语言,它的官方版本只包括一个精简的核心和最基本的库。这使得Lua体积小、启动速度快。它用标准C语言编写并以源代码形式开放,编译后仅仅一百余K,可以很方便的嵌入别的程式里。和许多"大而全"的语言不一样,网路通讯、图形界面等都没有默认提供。但是Lua可以很容易地被扩展:由宿主语言(通常是C或C++)提供这些功能,Lua可以使用它们,就像是本来就内置的功能一样。事实上,现在已经有很多成熟的扩展模块可供选用。

Lua是一个动态弱类型语言,支援增量式垃圾收集策略。有内建的,与操作系统无关的协作式多线程(coroutine)支援。

aLiLua 核心通过 epoll 处理异步IO事件,并引入 Lua 语言用于业务逻辑处理。aLiLua 的事件核心可非常高效的调度多个 Lua 协程,使之协同工作以实现高并发的网络服务。

简单的同步逻辑

在 aLiLua 开发框架之下的 Lua 脚本跟 PHP 类语言类似,但却支持异步IO,只消耗很小的系统资源就可达到很高的处理能力。以下是一个简单的例子:

local sock = cosocket:tcp()

local r,e = sock:connect(host, port)

r,e = sock:send(...)

r,e = sock:read(...)

print(r)

上面5行代码,中间3行就是异步的网络IO操作。看上去是不是跟 PHP 很像?作为 Lua 脚本开发者无需关心IO操作如何进行异步操作,只要专心于业务逻辑的开发就可以。

轻松的并发处理

aLiLua 核心可调度大量协程,当然我们可以并发处理更多的业务。以下是一个并发处理的例子:

function download(host, uri)

return newthread(function(host, uri)

local sock = cosocket:tcp()

local r,e = sock:connect(host, port)

r,e = sock:send(...)

r,e = sock:read(...)

return r,e

end, host, uri)

end

local t1 = download('www.alilua.com', '/')

local t2 = download('www.alilua.com', '/docs.html')

local r,e

r,e = wait(t1)

r,e = wait(t2)

上面的例子可以并行下载两个页面,跟下载工具的多线程下载类似,可在一个时间内一起做几件事情,提高效率。并且使用协程并发处理比起多线程所消耗的系统资源更少。

高性能

根据aLiLua开发者作的测试,由于 Lua 是调用 aLiLua 提供的 sendfile 方法发送页面内容,属原生 c 代码进行处理,所以性能明显高于 nodejs。占用的系统资源也因此会低于 nodejs,从 0~5000 并发情况看,其占用的资源跟并发数成正比,比较稳定。当与MySQL交换数据时,Lua 即使在 5000 高并发的情况下依然能保证很高的执行效率,而 nodejs 则不太稳定。

1b002679ce8697856963b39d1dc76613.gif

项目主页

aliLua还是一个新生的项目,目前大家可以尝试用aLiLua做些小应用,也欢迎大家为aLiLua贡献代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值