OpenResty-Best-Practices.pdf

所需积分/C币:13 2017-10-11 11:22:45 3.65MB PDF
51
收藏 收藏
举报

openresty最佳实践,包括nginx,lua的介绍,和openresty插件的相关接口
子查询 1.6.10 不同阶段共享变量 1.6.11 防止SQL注入 1.6.12 如何发起新HTTP请求 1.6.13 LuaResty Redislibrary 1.7 访问有授权验证的Reds 1.7.1 select+set keepalive合操作引起的数据读写锆误 1.7.2 redis接口的二次封装(简化建连丶拆连等细节) 1.7.3 redis接口的二次封装(发布订) 1.7.4 pipeline压缩请求数量 1.7.5 script压缩复杂请求 1.7.6 动态生成的| a-resty-redis模块方法 1.7.7 LuaCjsonLibrary 1.8 json解析的异常捕获 1.8.1 稀疏数组 1.8.2 空 table编码为aray还是 object 18.3 PostgresNginxModule 1.9 调用方式简介 1.9.1 不支持事务 1.9.2 超时 1.9.3 健康监测 1.9.4 SQL注入 19.5 LuaNginx Module 1.10 执行阶段概念 1.10.1 正确的记录日志 1.10.2 热装载代码 1.10.3 阻塞操作 1.104 缓存 1.10.5 sleep 1.10.6 定时任务 1.10.7 禁止某些终端访问 1.108 请求返回后继续执行 1.10.9 调试 1.10.10 请求中断后的处理 1.10.11 我的ua代码需要调优么 1.10.12 变量的共享范围 1.10.13 动态限速 1.10.14 shared dict非队列性质 1.10.15 正确使用长链接 1.10.16 如何引用第三方 resty库 1.10.17 body在 location中的传递 1.10.18 典型应用场景 1.10.19 [NginX状态查看器] 1.10.20 怎样理解 csocket 1.10.21 如何使用高速缓存 1.10.22 如何安全启动唯一实例的tmer 1.10.23 如何正确的解析域名 1.10.24 LuaRestyDNSLibrary 1.11 使用动态DNS来完成HTTP请求 1.11.1 LuaRestyLock 1.12 缓存失效风暴 1.12.1 stream lua module 1.13 TCP代理负载] 1.13.1 [基本用法] 1.13.2 [故障细节] 1.13.3 balancer by lua 1.14 [自定义 upstream选举] 1.14.1 OpenResty与SSL 1.15 Https时代 1.15.1 动态加载证书和 OCSP stapling 1.15.2 TLS session resumption 1.15.3 测试 1.16 代码静态分析 1.16.1 单元测试 1.16.2 代码覆盖率 1.16.3 AP|测试 1.164 性能测试 1.16.5 持续集成 1.16.6 灰度发布 1.16.7 Web服务 1.17 AP|的设计 1.17.1 数据合法性检测 1.17.2 协议无痛升级 1.173 代码规范 174 连接池 1.175 C10K编程 1.17.6 TIME WA|T问题 1.17.7 与 Docker使用的网络瓶颈 1.17.8 火焰图 1.18 什么时候使用 1.18.1 如何安装火焰图生成工具 1.18.2 如何定位问题 1.18.3 OpenResty周边 1.19 Vanilla/香草 1.19.1 为什么要升发 Vanilla 1.19.1.1 Vanilla致力解决的问题 1.19.1.2 组织结构 1.19.1.3 性能指标 1.19.1.4 Demo示例 1.19.1.5 新浪移动的 OpenResty之路 1.19.1.6 ania项目实践] 1.19.1.7 新浪移动评论项目 1.19.1.7.1 新浪移动独立产品∨ anilla改造 1.19.1.7.2 Mashape/kong 1.19.2 Kong名字的来历( others/, kong/origin.md) 1.19.2.1 Kong能解决什么同题( others/kong/ apigateway. md) 1.19.2.2 国内外有哪些类似的产品( others/kong/ products. md) 1.19.2.3 关键概念( others/kong/ keyconcepts. md) 1.19.2.4 集群功能( others/kong/ cluster md) 1.19.2.5 升发自定义插件( others/kong/ plugin. md) 1.19.2.6 扩展已经存在的插件( others/kong/ plugin-upgrad.md) 1.19.2.6.1 开发一个新的插件( others/kong/ plugin-new. md) 1.19.2.6.2 如何添加自己的 ua ap 1.19.3 零碎知识点记录 1.20 2016-7月汇总 1.20.1 Test: Nginx能指定现成的 nginx.conf,而不是自动生成一个吗1.20.1.1 access日志字符编码问题 1.20.1.2 share dict中的过期时同有时候过期有时侯不过期? 1.20.1.3 Lua变量的传递和内存的使用 1.20.1.4 ngx log可不可以选择几个不同的 log path 1.20.1.5 2016-8月汇总 1.20.2 如何在后台升启轻量级线程来定时更新共享内存 1.20.2.1 如何使用os. getenv获取系统环境变量 1.20.2.2 2016-10月汇总 1.20.3 一个 penresty内存泄漏”问题 1.20.3.1 用do-end整理你的代码 1.20.3.2 lUa中如何 continue 1.20.3.3 调用FF|出现"tab| e overflow" 1.20.34 如何定位 openresty崩潰bug 1.20.3.5 序 Open Resty最佳实践 在2012年的时候加入到奇虎360公司’为新的产品做技术选型。由于之前一直混迹在 Python圈子里面,也接触过 Nginx C模块的高性能开发,一直想找到一个兼备 Python快速 开发和 Nginx C模坎高性能的产品。看到¤ pen Resty后’有发现新大的感觉。 于是在新产品里面力推 OpenResty,团队里面几乎没人支持,经过几轮性能测试’虽然轻松 击败所有的其他方案’但是其他开发人员并不愿意参与到基于 OpenResty这个“陌生”框架的 开发中来。于是我开始了一个人的 OpenResty之旅’刚开始经历了各种技术挑战’庆幸有详 细的文档,以及春哥和邮件列表里面热情的帮助,成了团队里面bug最少和几乎不用加班的 同学。 2014年’团队选来了一批新鲜血液,很有技术品味,先后选择 OpenResty来作为技术方 向。不再是一个人在战斗’而另外一个新问题摆在团队而前,如何保证大家都能写出高质量 的代码’都能对◎ perEs↓y有深λ的了解?知识的沉淀和升华’成为一个迫在眉睫的问题。 我们选择把这几年的一些浅薄甚至可能是错误的实践’通过 gitbook的方式公开出来,一方面 有利于团队自身的技术积累,另一方面,也能让更多的高手一起加入:让 OpenResty的使用 变得更加简单’更多的应用到服务端开发中,毕竟人生苦短’少一些加班,多一些陪家人 这本书的定位是最佳实践,同时会对 OpenResty做简单的基础介绍。但是我们对初学者的建 议是,在看书的同时下载并安装 OpenResty,把官方网站的 Presentations浏览和实践几 请一直使用最新的 Open Resty版本来运行本书的代码。 希望你能 enjoy openResty之旅! 我们团队在 OpenResty社区的待做任务列表,欢迎大家提交自己的贡献! 点我看书 本书源码在 Github上维护’欢迎参与∶我要写书。也可以加λQQ群来和我们交流 34782325(技术交流⑨群已满) 481213820(技术交流②群已满) ·124613000(技术交流③群) 序 Socket编程发展 Socket编程发展 Linux socket编程领域’为了处理大量连接请求场景,需要使用非阻塞ⅥO和复用υ select丶 po和epo川l是 LinUx AP|提供的O复用方式:自从 Linux26中加入了epo之后,高性能 服务器领域得到广泛的应用’现在比较岀名的Nginⅹ就是使用epol‖来实现VO复用支持高并 发’目前在高并发的场景下’ Nginx越来越收到欢迎。 据w3 techs在2015年8月10日的统计数据表明’在全球Top1000的网站中,有43.7%的 网站在使用 Nginx,这佼得 Nginx超越了 Apache,成为了高流量网站最信任的Web服务器 足足有两年时问。已经确定在使用 NginX的站点有: Wikipedia: Word Press, Reddit Tumblr’ Interest Dropbox Slideshare’ Stackexchange等’可以持续罗列好几个小时 他们太多了 下图是统计数据 56.8%0 51.4% Apache 39,49 32.4%6 27.3% 25.0 28.6% Nginx 38.1% 46.6 43.7% 13.1% 14.6% Microsoft -IIs 16.29 11.9% 8.7% 2.3% 2.19 LiteSpeed1.6% 1.09 0.4% 1.3 1129 Google Servers.9% ■2.0% 9.49 W3Techs. com, 10 August 2015 ■ Overall■top1,000,000■top100,000■top10,000■top1,000 Percentages of websites using various web servers broken down by ranking Socket编程发展 selec模型 下面是 select函数接口 int select (int n, fd set readfds, fd set *writefds, fd_ set *exceptfds, struct timeval *timeout); select函数监视的文件抽述符分3类,分别是 writefds丶 readfds和 exceptfds调用后 select 函数会阻塞’直到有描逑符就绪(有数据可读丶可写、或者有 except),或者超时( timeout 指定等待时间’如果立即返回设为nⅷ即可)。当 select函数返回后’通过遍历 fd set’来 找到就绪的描速符。 select日前几乎在所有的平台上支持,其良好跨平台攴持是它的一大优点。 select的一个缺点 在于单个进程能够监视的文件描逃符的数量存在最大限制’在 Linux上一般为1024,可以通 过修改宏定义甚至重新编译内核的方式提升这一限制’但是这样也会造成效率的降低。 po川模型 int poll(struct pollfd *fds, unsigned int nfds, int timeout)i 不同于 select使用三个位图来表示三个 fast的方式’po!使用一个 polled的指针实现 struct pollfd I int fd;/ file descriptor short events /k requested events to watch */ short revents: / returned events witnessed * } polled结构包含了要监视的 event和发生的 event’不再使用 select“参数-值”传递的方式。同 时, polled并没有最大数量限制(但是数量过大后性能也是会下降)。和 select函数一样, po返回后’需要轮询 polled来获取就绪釣描迹符。 从上面看’ select和po都需要在返回后’通过遍历文件描逑符来获取已经就绪的 socket 事实上’同时连接的大量客户端在一时刻可能只有很少的处于就绪状态,因此随着监视的描 逑符数量的增长’其效率乜会线性下降。 epo!模型 epoll的接口如下

...展开详情
试读 127P OpenResty-Best-Practices.pdf
立即下载
限时抽奖 低至0.43元/次
身份认证后 购VIP低至7折
一个资源只可评论一次,评论内容不能少于5个字
您会向同学/朋友/同事推荐我们的CSDN下载吗?
谢谢参与!您的真实评价是我们改进的动力~
上传资源赚钱or赚积分
最新推荐
OpenResty-Best-Practices.pdf 13积分/C币 立即下载
1/127
OpenResty-Best-Practices.pdf第1页
OpenResty-Best-Practices.pdf第2页
OpenResty-Best-Practices.pdf第3页
OpenResty-Best-Practices.pdf第4页
OpenResty-Best-Practices.pdf第5页
OpenResty-Best-Practices.pdf第6页
OpenResty-Best-Practices.pdf第7页
OpenResty-Best-Practices.pdf第8页
OpenResty-Best-Practices.pdf第9页
OpenResty-Best-Practices.pdf第10页
OpenResty-Best-Practices.pdf第11页
OpenResty-Best-Practices.pdf第12页
OpenResty-Best-Practices.pdf第13页
OpenResty-Best-Practices.pdf第14页
OpenResty-Best-Practices.pdf第15页
OpenResty-Best-Practices.pdf第16页
OpenResty-Best-Practices.pdf第17页
OpenResty-Best-Practices.pdf第18页
OpenResty-Best-Practices.pdf第19页
OpenResty-Best-Practices.pdf第20页

试读结束, 可继续阅读

13积分/C币 立即下载