背景
先来说下今天的主角openresty,它是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。可以使用Lua编写脚本,然后部署到Nginx Web容器中运行。利用nginx的高并发处理能力,轻松构建自己的高性能的Web服务。
但个人觉得,使用lua编写一些复杂业务逻辑不是它的专长,编写成本也比较高。现有业务的web系统,大多还是以java、c#等为主。如要完全改为lua实现,几乎不可能完成。
上一篇分享《京东活动系统亿级流量架构应对之术》的核心,其实是活动页面的浏览与页面的渲染的异步化。即:活动页面在被浏览时,view工程直接从redis或者硬盘获取已经在engine工程被渲染好的页面返回。简而言之,就是通过engine工程提前渲染好页面,实现页面全静态化。保证view工程每次请求都直接获取静态页面返回,无需等待页面渲染。
这样复杂的业务逻辑已经被完全剥离到engine工程。view工程可以采用nginx+lua+redis+硬盘实现自己的高性能web服务。最终架构如下:

其中,硬盘和redis互为主备,做一个开关相互切换。

本文介绍了如何在京东活动系统中使用openresty结合lua处理高并发请求,通过lua与redis交互进行字符串压缩与解压,以及利用lua读取硬盘上的静态页面,实现高性能Web服务。同时,文章提到了lua代码结构和硬盘存储的url hash规则。
最低0.47元/天 解锁文章
145

被折叠的 条评论
为什么被折叠?



