OpenResty与API Gateway

Nov 27 2017

公司业务向微服务方向迁移实践中, API Gateway成为接入层最重要的部分, 在完成开发的同时给同事做了一次OpenResty的分享, 以下是分享的内容整理.

当我谈论高性能时我们谈论什么 ?

讨论时间, 大家自由发挥

  • 机器
  • 语言
  • 架构

学习指南 #1

同步编程

  • 多线程, 用户态/内核态相互切换
  • 阻塞, 带来线程切换

异步编程

OpenResty

无聊的分割线

  • 基于lua的Nginx开发
  • Nginx的异步机制+lua coroutine
  • 够用的内置lua libs cosocket异步支持
  • 内置cache

ngx_lua模块的原理

  • 每个worker(工作进程)创建一个Lua VM,worker内所有协程共享VM;
  • 将Nginx I/O原语封装后注入 Lua VM,允许Lua代码直接访问;
  • 每个外部请求都由一个Lua协程处理,协程之间数据隔离;
  • Lua代码调用I/O操作等异步接口时,会挂起当前协程(并保护上下文数据),而不阻塞worker;
  • I/O等异步操作完成时还原相关协程上下文数据,并继续运行;

学习指南 #2

API Gateway

  • 微服务
  • 入口
  • 授权、监控、负载均衡、缓存、请求分片和管理、静态响应处理

学习指南 #3

Kong

  • 基于Openresty
  • 自带武器库
  • 灵活的插件定制

学习指南 #4

定制需求

  • eebo auth
    • 独立auth模块
    • 灵活配置api是否需要auth
    • Python服务无需关注认证细节
  • eebo limiting
    • 基于内置rate-limiting开发
    • 提供company_id/user_id维度
  • eebo balancer

自带的插件

  • CORS
  • IP Restriction
  • Correlation ID
  • Syslog

首页 - Wiki
Copyright © 2011-2025 iteam. Current version is 2.144.0. UTC+08:00, 2025-07-08 15:33
浙ICP备14020137号-1 $访客地图$