
跟我学Nginx+Lua开发
文章平均质量分 81
jinnianshilongnian
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
第一章 安装OpenResty(Nginx+Lua)开发环境
首先我们选择使用OpenResty,其是由Nginx核心加很多第三方模块组成,其最大的亮点是默认集成了Lua开发环境,使得Nginx可以作为一个Web Server使用。借助于Nginx的事件驱动模型和非阻塞IO,可以实现高性能的Web应用程序。而且OpenResty提供了大量组件如Mysql、Redis、Memcached等等,使在Nginx上开发Web应用更方便更简单。目前在京东如实时价格...2015-02-17 14:35:08 · 1226 阅读 · 0 评论 -
使用Nginx+Lua(OpenResty)开发高性能Web应用
在互联网公司,Nginx可以说是标配组件,但是主要场景还是负载均衡、反向代理、代理缓存、限流等场景;而把Nginx作为一个Web容器使用的还不是那么广泛。Nginx的高性能是大家公认的,而Nginx开发主要是以C/C++模块的形式进行,整体学习和开发成本偏高;如果有一种简单的语言来实现Web应用的开发,那么Nginx绝对是把好的瑞士军刀;目前Nginx团队也开始意识到这个问题,开发了nginx...2016-03-06 17:13:38 · 3419 阅读 · 0 评论 -
跟我学OpenResty(Nginx+Lua)开发目录贴
扫一扫,关注我的公众号 购买地址 使用Nginx+Lua开发近一年的时间,学习和实践了一些Nginx+Lua开发的架构,为了让更多人使用Nginx+Lua架构开发,利用春节期间总结了一份基本的学习教程,希望对大家有用。也欢迎谈探讨学习一些经验。 目录第一章 安装Nginx+Lua开发环境第二章 Nginx+Lua开发入门第三章 Redis/SSD...2015-03-07 17:29:46 · 657 阅读 · 0 评论 -
第八章 流量复制/AB测试/协程
流量复制在实际开发中经常涉及到项目的升级,而该升级不能简单的上线就完事了,需要验证该升级是否兼容老的上线,因此可能需要并行运行两个项目一段时间进行数据比对和校验,待没问题后再进行上线。这其实就需要进行流量复制,把流量复制到其他服务器上,一种方式是使用如tcpcopy引流;另外我们还可以使用nginx的HttpLuaModule模块中的ngx.location.capture_multi进行...2015-03-07 17:25:14 · 450 阅读 · 0 评论 -
第七章 Web开发实战2——商品详情页
本章以京东商品详情页为例,京东商品详情页虽然仅是单个页面,但是其数据聚合源是非常多的,除了一些实时性要求比较高的如价格、库存、服务支持等通过AJAX异步加载加载之外,其他的数据都是在后端做数据聚合然后拼装网页模板的。http://item.jd.com/1217499.html 如图所示,商品页主要包括商品基本信息(基本信息、图片列表、颜色/尺码关系、扩展属性、规格参数、包装清单、售后...2015-03-03 21:40:15 · 1380 阅读 · 0 评论 -
第六章 Web开发实战1——HTTP服务
此处我说的HTTP服务主要指如访问京东网站时我们看到的热门搜索、用户登录、实时价格、实时库存、服务支持、广告语等这种非Web页面,而是在Web页面中异步加载的相关数据。这些服务有个特点即访问量巨大、逻辑比较单一;但是如实时库存逻辑其实是非常复杂的。在京东这些服务每天有几亿十几亿的访问量,比如实时库存服务曾经在没有任何IP限流、DDos防御的情况被刷到600多万/分钟的访问量,而且能轻松应对。支...2015-03-02 22:05:30 · 332 阅读 · 0 评论 -
第五章 常用Lua开发库3-模板渲染
动态web网页开发是Web开发中一个常见的场景,比如像京东商品详情页,其页面逻辑是非常复杂的,需要使用模板技术来实现。而Lua中也有许多模板引擎,如目前我在使用的lua-resty-template,可以渲染很复杂的页面,借助LuaJIT其性能也是可以接受的。 如果学习过JavaEE中的servlet和JSP的话,应该知道JSP模板最终会被翻译成Servlet来执行;而lua-rest...2015-03-01 17:23:31 · 569 阅读 · 0 评论 -
第五章 常用Lua开发库2-JSON库、编码转换、字符串处理
JSON库 在进行数据传输时JSON格式目前应用广泛,因此从Lua对象与JSON字符串之间相互转换是一个非常常见的功能;目前Lua也有几个JSON库,本人用过cjson、dkjson。其中cjson的语法严格(比如unicode \u0020\u7eaf),要求符合规范否则会解析失败(如\u002),而dkjson相对宽松,当然也可以通过修改cjson的源码来完成一些特殊要求...2015-02-28 18:46:35 · 1670 阅读 · 0 评论 -
第五章 常用Lua开发库1-redis、mysql、http客户端
对于开发来说需要有好的生态开发库来辅助我们快速开发,而Lua中也有大多数我们需要的第三方开发库如Redis、Memcached、Mysql、Http客户端、JSON、模板引擎等。一些常见的Lua库可以在github上搜索,https://github.com/search?utf8=%E2%9C%93&q=lua+resty。 Redis客户端lua-resty-red...2015-02-28 09:31:23 · 553 阅读 · 1 评论 -
第四章 Lua模块开发
在实际开发中,不可能把所有代码写到一个大而全的lua文件中,需要进行分模块开发;而且模块化是高性能Lua应用的关键。使用require第一次导入模块后,所有Nginx 进程全局共享模块的数据和代码,每个Worker进程需要时会得到此模块的一个副本(Copy-On-Write),即模块可以认为是每Worker进程共享而不是每Nginx Server共享;另外注意之前我们使用init_by_lua...2015-02-27 10:02:56 · 394 阅读 · 0 评论 -
第三章 Redis/SSDB+Twemproxy安装与使用
目前对于互联网公司不使用Redis的很少,Redis不仅仅可以作为key-value缓存,而且提供了丰富的数据结果如set、list、map等,可以实现很多复杂的功能;但是Redis本身主要用作内存缓存,不适合做持久化存储,因此目前有如SSDB、ARDB等,还有如京东的JIMDB,它们都支持Redis协议,可以支持Redis客户端直接访问;而这些持久化存储大多数使用了如LevelDB、Rock...2015-02-26 11:39:39 · 335 阅读 · 0 评论 -
第二章 OpenResty(Nginx+Lua)开发入门
Nginx入门本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章:nginx启动、关闭、重启http://www.cnblogs.com/derekchen/archive/2011/02/17/1957209.htmlagentzh 的 Nginx 教程http://openresty.org/download/agentzh-nginx-tut...2015-02-22 19:16:23 · 1832 阅读 · 1 评论 -
Nginx+Lua(OpenResty) HelloWorld
《使用Nginx+Lua(OpenResty)开发高性能Web应用》中已经介绍了使用Nginx+Lua(OpenResty)开发Web应用,但是没有具体代码示例。 本文将按照《使用Nginx+Lua(OpenResty)开发高性能Web应用》介绍的Web应用项目结构提供HelloWorld代码。 初始化准备1、安装OpenResty,下载地址:https://github.c...2016-04-09 16:23:48 · 1300 阅读 · 0 评论