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

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

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 核心可调度大量协程,当然我们可以并发处理更多的业务。以下是一个并发处理的例子:

functiondownload(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 则不太稳定。

image.png

项目主页

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


相关文章
|
9天前
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
30 1
|
9天前
|
开发框架 JavaScript 前端开发
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势
TypeScript 是一种静态类型的编程语言,它扩展了 JavaScript,为 Web 开发带来了强大的类型系统、组件化开发支持、与主流框架的无缝集成、大型项目管理能力和提升开发体验等多方面优势。通过明确的类型定义,TypeScript 能够在编码阶段发现潜在错误,提高代码质量;支持组件的清晰定义与复用,增强代码的可维护性;与 React、Vue 等框架结合,提供更佳的开发体验;适用于大型项目,优化代码结构和性能。随着 Web 技术的发展,TypeScript 的应用前景广阔,将继续引领 Web 开发的新趋势。
25 2
|
14天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第40天】在这篇文章中,我们将一起探索Node.js的奥秘,从基础概念到实际应用,逐步揭示如何利用Node.js构建高效、可扩展的后端服务。通过实际案例分析,我们将了解Node.js在现代Web开发中的应用,以及如何克服常见的开发挑战。无论你是初学者还是有一定经验的开发者,这篇文章都将为你提供宝贵的见解和实用的技巧,帮助你在Node.js的道路上更进一步。
27 4
|
18天前
|
SQL 安全 前端开发
PHP与现代Web开发:构建高效的网络应用
【10月更文挑战第37天】在数字化时代,PHP作为一门强大的服务器端脚本语言,持续影响着Web开发的面貌。本文将深入探讨PHP在现代Web开发中的角色,包括其核心优势、面临的挑战以及如何利用PHP构建高效、安全的网络应用。通过具体代码示例和最佳实践的分享,旨在为开发者提供实用指南,帮助他们在不断变化的技术环境中保持竞争力。
|
20天前
|
PHP 开发者
深入浅出PHP:构建你的第一个Web应用
【10月更文挑战第35天】在数字时代的浪潮中,掌握编程技能已成为通往未来的钥匙。本文将带你从零开始,一步步走进PHP的世界,解锁创建动态网页的魔法。通过浅显易懂的语言和实际代码示例,我们将共同打造一个简单但功能强大的Web应用。无论你是编程新手还是希望扩展技能的老手,这篇文章都将是你的理想选择。让我们一起探索PHP的魅力,开启你的编程之旅!
|
24天前
|
Web App开发 存储 JavaScript
深入浅出Node.js后端开发
【10月更文挑战第31天】本文将引导你进入Node.js的奇妙世界,探索其如何革新后端开发。通过浅显易懂的语言和实际代码示例,我们将一起学习Node.js的核心概念、搭建开发环境,以及实现一个简单但完整的Web应用。无论你是编程新手还是希望拓展技术的开发者,这篇文章都将为你打开一扇通往高效后端开发的大门。
|
19天前
|
Web App开发 JavaScript 前端开发
深入浅出Node.js后端开发
【10月更文挑战第36天】本文将引导您探索Node.js的世界,通过实际案例揭示其背后的原理和实践方法。从基础的安装到高级的异步处理,我们将一起构建一个简单的后端服务,并讨论如何优化性能。无论您是新手还是有经验的开发者,这篇文章都将为您提供新的视角和深入的理解。
|
20天前
|
API PHP 数据库
PHP中哪个框架最适合做API?
在数字化时代,API作为软件应用间通信的桥梁至关重要。本文探讨了PHP中适合API开发的主流框架,包括Laravel、Symfony、Lumen、Slim、Yii和Phalcon,分析了它们的特点和优势,帮助开发者选择合适的框架,提高开发效率、保证接口稳定性和安全性。
41 3
|
22天前
|
XML JSON API
【PHP开发专栏】PHP RESTful API设计与开发
随着互联网技术的发展,前后端分离成为Web开发的主流模式。本文介绍RESTful API的基本概念、设计原则及在PHP中的实现方法。RESTful API是一种轻量级、无状态的接口设计风格,通过HTTP方法(GET、POST、PUT、DELETE)操作资源,使用JSON或XML格式传输数据。在PHP中,通过定义路由、创建控制器、处理HTTP请求和响应等步骤实现RESTful API,并强调了安全性的重要性。
25 2
|
23天前
|
SQL 安全 PHP
探索PHP的现代演进:从Web开发到框架创新
PHP是一种流行的服务器端脚本语言,自诞生以来在Web开发领域占据重要地位。从简单的网页脚本到支持面向对象编程的现代语言,PHP经历了多次重大更新。本文探讨PHP的现代演进历程,重点介绍其在Web开发中的应用及框架创新,如Laravel、Symfony等。这些框架不仅简化了开发流程,还提高了开发效率和安全性。
25 3