APISIX 是一个基于云原生、高速可扩展的开源微服务网关节点实现,其自身主要优势是高性能和强大的扩展性。

APISIX 从 ​​etcd​​​ 中订阅获取所需的配置并以热更新的方式来更改自身行为,更改 ​​etcd​​ 中的配置即可完成对 APISIX 网关节点的控制,比如:动态上游、请求限速等。

快速上手

  1. 启动 APISIX
sudo apisix start


  1. 测试限流插件

为了方便测试,下面的示例中设置的是 60 秒最多只能有 2 个请求,如果超过就返回 503:

curl http://127.0.0.1:2379/v2/keys/apisix/routes/1 -X PUT -d value='
{
"methods": ["GET"],
"uri": "/index.html",
"id": 1,
"plugin_config": {
"limit-count": {
"count": 2,
"time_window": 60,
"rejected_code": 503,
"key": "remote_addr"
}
},
"upstream": {
"type": "roundrobin",
"nodes": {
"39.97.63.215:80": 1
}
}
}'
$ curl -i http://127.0.0.1:9080/index.html
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 13175
Connection: keep-alive
X-RateLimit-Limit: 2
X-RateLimit-Remaining: 1
Server: APISIX web server
Date: Mon, 03 Jun 2019 09:38:32 GMT
Last-Modified: Wed, 24 Apr 2019 00:14:17 GMT
ETag: "5cbfaa59-3377"
Accept-Ranges: bytes


...

设计架构

APISIX 全流量网关_html

APISIX 全流量网关_限流_02

特点

APISIX 是一个高性能、可扩展的微服务 API 网关。它是基于 Nginx 和 etcd 来实现,和传统 API 网关相比,
APISIX 作为微服务请求⽹关,通过插件提供负载平衡,⽇志记录,身份验证
等功能:

  • 动态负载均衡: ⽀持不同上游服务的动态负载均衡
  • 安全插件: 内置安全处理层,⽀持如OAuth2、ACL、CORS、动态 SSL 和
    IP 限制等
  • 流量控制插件: 速率限制,请求⼤⼩限制和响应速率限制等
  • 分析和监控插件:借助如 Prometheus,Datadog 和 Runscope 产品,完成
    API 流量的可视化、检查和监控
  • ⽇志插件:记录请求或响应⽇志,并通过 HTTP、TCP 或 UDP 等⽅式发送
    到你的系统(⽐如: StatsD, Syslog)

github:  https://github.com/iresty , 可以看到相较于于 ​​Kong​​​ 、 ​​Traefik​​ 从源码角度非常简洁。


功能体验

访问控制台: http://127.0.0.1:9080/apisix/dashboard/ ,直接访问即可

APISIX 全流量网关_微服务_03


  • 目标我们实现​​web服务的反向代理,并且可以实现限流​
  1. upstream > 添加

APISIX 全流量网关_微服务_04


routes > 添加

APISIX 全流量网关_限流_05

令牌桶限流配置

APISIX 全流量网关_微服务_06

  • rate # 流速 每秒
  • burst # 令牌桶的容积
  • key #根据哪个header 来限流
  • rejected_code # 返回错误码
  • 访问:ip:9080/ 体验限流效果

在线演示版本

官方部署了一个在线的 dashboard ,方便大家了解 APISIX。
​​​http://apisix.iresty.com​


关注公众号 soft张三丰 

APISIX 全流量网关_限流_07