OpenResty

在高并发场景的应用

应对高并发场景的解决方式

  • 高性能服务器
  • 高性能数据库
  • 高效率编程语言
  • 高性能Web容器
  • 负载均衡
  • CDN
  • ......

OpenResty是什么

OpenResty是一个基于 Nginx Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

源自“金砖国家”

应用场景

Web应用

进行一些业务逻辑处理,甚至进行耗CPU的模板渲染,一般流程:mysql/redis/http获取数据、业务处理、产生JSON/XML/模板渲染内容,比如京东的列表页/商品详情页。

接入网关

实现如数据校验前置、缓存前置、数据过滤、API请求聚合认证管理、负载均衡、流量控制、灰度发布、降级、监控等功能。

Web防火墙

可以进行IP/URL/UserAgent/Referer黑名单、限流等功能

用户案例

新浪移动 && OpenResty

业务特征

  • 静态新闻内容
  • 登录用户占比很小
  • 业务由CPU密集型向IO密集型转移

解决的问题

  • 并发量猛增后服务挂掉的问题

面临新的问题

  • PHP性能问题
  • nginx里控制业务逻辑较为复杂,无法做到快速开发
  • 对缓存需要更细颗粒度的控制

ngx_lua模块

init_by_lua

init_worker_by_lua

balancer_by_lua

capture

lua-resty-redis

性能对比

系统:centos7

CPU核心:2

内存:2G

资料

Thank You

Made with Slides.com