限速服务RateLimitService和AuthService一样也是一个外部服务,处理流程也和AuthService一样。

限速服务RateLimitService是通过在Mapping中添加label进行声明的。在请求时label会通过gRPC接口传递到限速服务,声明的方式封为v1和v0。具体的含义没有看的很懂,v1方式声明始终没有测试通过,v0方式的声明测试通过了,下面以v0为例进行说明。

Ambassador提供了一个限速服务的样例,该限速服务接收到"x-ambassador-test-allow: true"请求头时,不限速,返回HTTP状态码200。其它的请求头值"x-ambassador-test-allow: xxxxx"都限速,返回HTTP状态码429。

#将example-rate-limit-service服务定义为RateLimitService
vi example-ratelimitservice.yaml
---
apiVersion: getambassador.io/v1
kind: RateLimitService
metadata:name: example-ratelimitservice
spec:service: "example-rate-limit:5000"
---
apiVersion: v1
kind: Service
metadata:name: example-rate-limit-service
spec:type: ClusterIPselector:app: example-rate-limitports:- port: 5000name: http-example-rate-limittargetPort: http-api
---
apiVersion: apps/v1
kind: Deployment
metadata:name: example-rate-limit
spec:replicas: 1strategy:type: RollingUpdateselector:matchLabels:app: example-rate-limittemplate:metadata:labels:app: example-rate-limitspec:containers:- name: example-rate-limitimage: agervais/ambassador-ratelimit-service:1.0.0imagePullPolicy: Alwaysports:- name: http-apicontainerPort: 5000resources:limits:cpu: "0.1"memory: 100Mikubectl apply -f example-ratelimitservice.yaml

创建httpbin服务,其中声明mapping,并添加限速label。

vi httpbin-rate-limit-service.yaml
---
apiVersion: v1
kind: Service
metadata:name: httpbinlabels:app: httpbinannotations:getambassador.io/config: |---apiVersion: ambassador/v0kind: Mappingname: httpbin-mappingprefix: /http/service: httpbin:80rate_limits:- descriptor: A test caseheaders:- "x-ambassador-test-allow"
spec:ports:- name: httpport: 80targetPort: 80selector:app: httpbin
---
apiVersion: apps/v1
kind: Deployment
metadata:name: httpbin
spec:replicas: 1selector:matchLabels:app: httpbintemplate:metadata:labels:app: httpbinspec:containers:- image: docker.io/kennethreitz/httpbinname: httpbinports:- containerPort: 80kubectl apply -f httpbin-rate-limit-service.yaml

测试一下效果。

#携带请求头"x-ambassador-test-allow: true",不限速。
curl -i -H "x-ambassador-test-allow: true" http://192.168.1.55:38080/http/status/200
HTTP/1.1 200 OK
server: envoy
date: Wed, 01 Jan 2020 01:27:07 GMT
content-type: text/html; charset=utf-8
access-control-allow-origin: *
access-control-allow-credentials: true
content-length: 0
x-envoy-upstream-service-time: 11#携带请求头"x-ambassador-test-allow: 1111",限速。
curl -i -H "x-ambassador-test-allow: 1111" http://192.168.1.55:38080/http/status/200
HTTP/1.1 429 Too Many Requests
x-envoy-ratelimited: true
date: Wed, 01 Jan 2020 00:54:38 GMT
server: envoy
content-length: 0

Ambassador Pro提供了一个高级限速服务,但是是收费的,如果业务需要限速服务,需要自己实现。

Ambassador系列文章

Ambassador系列-01-介绍、安装和使用

Ambassador系列-02-Module模块

Ambassador系列-03-服务配置和服务发现

Ambassador系列-04-服务配置Mapping

Ambassador系列-05-负载均衡

Ambassador系列-06-金丝雀发布、断路器、CORS和流量镜像

Ambassador系列-07-TCP映射TCPMapping

Ambassador系列-08-TLS配置-HTTPS重定向和TLS终结

Ambassador系列-09-AuthService认证服务

Ambassador系列-10-RateLimitService限速服务

Ambassador系列-11-Helm安装Ambassador Edge Stack 1.1.0

Ambassador系列-10-RateLimitService限速服务相关推荐

  1. Ambassador系列-03-服务配置和服务发现

    Ambassador 服务配置 Ambassador提供了三种服务配置方法. CRDs方式:Customer Resource Definitions 注解方式:Kubernetes Service ...

  2. Ambassador系列-09-AuthService认证服务

    Authservice使用外部服务来实现身份验证和授权.简单来说,Client向Ambassador网关发送的请求,都会被Ambassador拦截,Ambassador会将拦截的请求报文体去除,只将报 ...

  3. Ambassador系列-01-介绍、安装和使用

    介绍 Ambassador是由Datawire公司开源的一个API网关项目,在Github上有2.3K star. Ambassador当前(2019-12-11)的最新的版本是0.86.0,马上准备 ...

  4. Ambassador系列-04-服务配置Mapping

    Ambassador设计旨在让Kubernetes服务的开发者可以轻松灵活地配置流量如何路由到该服务,其核心是Mapping资源,支持7层的HTTP,GRPC和Websocket,也可以通过TCPMa ...

  5. Ambassador系列-11-Helm安装Ambassador Edge Stack 1.1.0

    Ambassador已经发布1.1.0版本,其中最大的变化就是将原来的版本Ambassador和Ambassador Pro版本拆为三个版本:Ambassador API Gateway.Ambass ...

  6. Ambassador系列-02-Module模块

    Ambassador的全局配置,可以通过Module模块配置Ambassador的一些全局的配置参数.当前只有两种Module模块: ambassador:配置全局的系统参数. tls:配置tls参数 ...

  7. Ambassador系列-05-负载均衡

    Ambassador支持多种负载均衡算法. round_robin,轮询算法,依次把客户端的请求分发到不同的上游服务实例. least_request,最少请求算法,请求会被转发到请求数最少的上游服务 ...

  8. Ambassador系列-12-Prometheus Operator监控Ambassador Edge Stack

    Prometheus Operatorde的安装部署见Helm部署Prometheus Operator和自定义监控. Ambassador Edge Stack的安装部署见Ambassador系列- ...

  9. envoy实现_微服务之服务治理:Envoy 全局 gRPC 限速服务 lyft/ratelimit 详解

    发布 | 才云 Caicloud 作者 | Keon(才云首席客户成功官) 应用微服务架构后,你是否遇到过这些问题?后台资源被大量请求淹没耗尽.客户端持续发起请求直至服务宕机.分布式系统因超时而雪崩- ...

最新文章

  1. CBS多机器人路径规划
  2. python3.6.5安装教程-Centos7安装python3.6.5
  3. mysql查看死锁和解除锁
  4. Ethereum Bootstrap 以太坊本地私有链开发环境搭建
  5. Codeforces 570D Tree Requests(树上启发式合并)
  6. vue 实现任意组件之间的通信
  7. hci0 没反应_哄女朋友专用表情包~你说你没女朋友?先收藏着嘛,万一有了呢?...
  8. 清华大学 ucore-lab0 MacOS
  9. django/python日志logging 的配置以及处理
  10. mul ab 的执行结果是_实战总结:为xxljob定制化的 php 执行器
  11. 微信小程序登陆注册界面前后端完整代码展示
  12. 互联网行业的颜值担当,李彦宏!
  13. Postgresql 配置远程访问
  14. 四火的唠叨51CTO访谈--有关面试
  15. Python 根据身份证号计算生日,年龄和性别
  16. “北上广曹”商标被抢注,商标过期后企业可以抢注吗?
  17. Word-embeding 【paper】
  18. gulp仿移动端网易云音乐播放界面
  19. 【找不到与请求 URI匹配的 HTTP 资源】(转)
  20. Latex中排序的使用方法

热门文章

  1. 你易忽略的三极管电路问题1:下拉电阻
  2. 壳聚糖(CS)/京尼平(GP)/明胶(G)/β-甘油磷酸钠(β-GP)共混的温敏性水凝胶/壳聚糖载银水凝胶的研究制备
  3. 这只上了纳斯达克的加密货币指数,对市场严重看空
  4. pagehelper联表分页查询
  5. 100种思维模型之三层解释思维模型-020
  6. 设计模式之外观模式php,php设计模式之外观模式
  7. 一篇文章带你精通Redis 缓存数据库
  8. CVE-2018-8174 IE浏览器远程代码执行漏洞
  9. python tabula 使用方法_Python使用Tabula提取PDF表格数据
  10. 苹果CEO乔布斯在斯坦福大学的演讲稿(中英对照版)