成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Aeraki系列:如何設(shè)置本地限流規(guī)則

網(wǎng)絡(luò) 通信技術(shù)
Aeraki 可以幫助你在服務(wù)網(wǎng)格中管理任何七層協(xié)議。目前 Aeraki 已經(jīng)支持了 Dubbo、Thrit、Redis 等開源協(xié)議。

 

Aeraki 可以幫助你在服務(wù)網(wǎng)格中管理任何七層協(xié)議。目前 Aeraki 已經(jīng)支持了 Dubbo、Thrit、Redis 等開源協(xié)議。你還可以使用 Aeraki 的 MetaProtocol 協(xié)議擴展框架來管理私有協(xié)議的七層流量。

本系列教程將介紹如何通過 Aeraki 來在服務(wù)網(wǎng)格中為 Dubbo、Thrift 等協(xié)議的服務(wù)提供七層流量路由、本地限流、全局限流,以及如何基于 Aeraki Protocol 快速開發(fā)一個自定義協(xié)議,并在 Istio 服務(wù)網(wǎng)格中對采用自定義協(xié)議的服務(wù)進行管理。

本篇教程介紹如何利用 Areaki 提供的 MetaRouter CRD 資源對基于 MetaProtocol 開發(fā)的應(yīng)用協(xié)議設(shè)置本地限流規(guī)則。

安裝示例程序

如果你還沒有安裝示例程序,請參照 快速開始(https://www.aeraki.net/zh/docs/v1.0/quickstart/) 安裝 Aeraki,Istio 及示例程序。

安裝完成后,可以看到集群中增加了下面兩個 NS,兩個 NS 中分別安裝了基于 MetaProtocol 實現(xiàn)的 Dubbo 和 Thrift 協(xié)議的示例程序。你可以選用任何一個程序進行測試。

  1. ➜  ~ kubectl get ns|grep meta 
  2. meta-dubbo        Active   16m 
  3. meta-thrift       Active   16m 

Aeraki 的限流規(guī)則設(shè)計直觀而靈活,既支持對一個服務(wù)的所有入向請求進行限流,也支持按照不同的條件對一個服務(wù)器的請求進行細(xì)粒度的限流控制。

對服務(wù)的所有入向請求進行限流

  1. kubectl apply -f- <<EOF 
  2. apiVersion: metaprotocol.aeraki.io/v1alpha1 
  3. kind: MetaRouter 
  4. metadata: 
  5.   name: test-metaprotocol-thrift-route 
  6.   namespace: meta-thrift 
  7. spec: 
  8.   hosts: 
  9.   - thrift-sample-server.meta-thrift.svc.cluster.local 
  10.   localRateLimit: 
  11.     tokenBucket: 
  12.       fillInterval: 60s 
  13.       maxTokens: 2 
  14.       tokensPerFill: 2 
  15. EOF 

備注:因為本地限流是在一個服務(wù)實例上進行處理的,因此當(dāng)服務(wù)有多個實例,實際的限流效果為限流數(shù)量乘以實例數(shù)量。

使用 aerakictl 命令來查看客戶端的應(yīng)用日志,可以看到客戶端每分鐘只能成功執(zhí)行 4 次請求(有兩個服務(wù)實例,每個服務(wù)實例限流為每分鐘 2 次):

  1. ➜  ~ aerakictl_app_log client meta-thrift -f --tail 10 
  2. Hello Aeraki, response from thrift-sample-server-v1-5c8476684-842l6/172.17.0.40 
  3. Hello Aeraki, response from thrift-sample-server-v2-6d5bcc885-hpx7n/172.17.0.41 
  4. Hello Aeraki, response from thrift-sample-server-v1-5c8476684-842l6/172.17.0.40 
  5. Hello Aeraki, response from thrift-sample-server-v2-6d5bcc885-hpx7n/172.17.0.41 
  6. org.apache.thrift.TApplicationException: meta protocol local rate limit: request '5' has been rate limited 
  7.         at org.apache.thrift.TServiceClient.receiveBase(TServiceClient.java:79) 
  8.         at org.aeraki.HelloService$Client.recv_sayHello(HelloService.java:61) 
  9.         at org.aeraki.HelloService$Client.sayHello(HelloService.java:48) 
  10.         at org.aeraki.HelloClient.main(HelloClient.java:44) 
  11. Connected to thrift-sample-server 
  12. org.apache.thrift.TApplicationException: meta protocol local rate limit: request '1' has been rate limited 
  13. ... 

按條件對服務(wù)的入向請求進限流

Aeraki 支持按照條件為服務(wù)設(shè)置多個限流規(guī)則,以滿足細(xì)粒度的限流要求。例如按照用戶或者對接口對請求進行分組,并對每個分組設(shè)置不同的限流規(guī)則。

分組限流的匹配條件和路由匹配條件相同,任何可以從請求數(shù)據(jù)包中提取出來的屬性都可以用于限流規(guī)則的匹配條件。

例如下面的規(guī)則為 sayHello 和 ping 兩個接口分別設(shè)置了不同的限流條件:

  1. apiVersion: metaprotocol.aeraki.io/v1alpha1 
  2. kind: MetaRouter 
  3. metadata: 
  4.   name: test-metaprotocol-thrift-route 
  5.   namespace: meta-thrift 
  6. spec: 
  7.   hosts: 
  8.   - thrift-sample-server.meta-thrift.svc.cluster.local 
  9.   localRateLimit: 
  10.     conditions: 
  11.     - match: 
  12.         attributes: 
  13.           method: 
  14.             exact: sayHello 
  15.       tokenBucket: 
  16.         fillInterval: 60s 
  17.         maxTokens: 10 
  18.         tokensPerFill: 10 
  19.     - match: 
  20.         attributes: 
  21.           method: 
  22.             exact: ping 
  23.       tokenBucket: 
  24.         fillInterval: 60s 
  25.         maxTokens: 100 
  26.         tokensPerFill: 100 

同時設(shè)置按服務(wù)和按條件的限流規(guī)則

可以同時設(shè)置服務(wù)粒度的限流規(guī)則和按照條件的限流規(guī)則,這適用于需要對一個服務(wù)的所有請求設(shè)置一個整體的限流規(guī)則,同時又需要對某一組或者幾組請求設(shè)置例外的情況。

例如下面的限流規(guī)則為服務(wù)設(shè)置了一個 1000 條/分鐘的整體限流規(guī)則,同時單獨為 ping 接口設(shè)置了 100 條/分鐘的限流條件。

  1. apiVersion: metaprotocol.aeraki.io/v1alpha1 
  2. kind: MetaRouter 
  3. metadata: 
  4.   name: test-metaprotocol-thrift-route 
  5.   namespace: meta-thrift 
  6. spec: 
  7.   hosts: 
  8.   - thrift-sample-server.meta-thrift.svc.cluster.local 
  9.   localRateLimit: 
  10.     tokenBucket: 
  11.       fillInterval: 60s 
  12.       maxTokens: 1000 
  13.       tokensPerFill: 1000 
  14.     conditions: 
  15.     - match: 
  16.         attributes: 
  17.           method: 
  18.             exact: ping 
  19.       tokenBucket: 
  20.         fillInterval: 60s 
  21.         maxTokens: 100 
  22.         tokensPerFill: 100 

理解原理

Aeraki 向 Sidecar Proxy 下發(fā)的配置中為服務(wù)對應(yīng)的 Listener 設(shè)置了 MetaProtocol Proxy,配置中設(shè)置了 local rate limit filter。

Aeraki 會將 MetaRouter 中配置的限流規(guī)則翻譯為local rate limit filter 的限流配置,通過 Aeraki 下發(fā)給 MetaProtocol Proxy。

可以通過下面的命令查看服務(wù)的 sidecar proxy 的配置:

  1. aerakictl_sidecar_config server-v1 meta-thrift |fx 

其中 Thrift 服務(wù)的 Inbound Listener 中的 MetaProtocol Proxy 配置如下所示:

  1.  "name""envoy.filters.network.meta_protocol_proxy"
  2.  "typed_config": { 
  3.   "@type""type.googleapis.com/udpa.type.v1.TypedStruct"
  4.   "type_url""type.googleapis.com/aeraki.meta_protocol_proxy.v1alpha.MetaProtocolProxy"
  5.   "value": { 
  6.    "stat_prefix""inbound|9090||"
  7.    "application_protocol""thrift"
  8.    "route_config": { 
  9.     "name""inbound|9090||"
  10.     "routes": [ 
  11.      { 
  12.       "route": { 
  13.        "cluster""inbound|9090||" 
  14.       } 
  15.      } 
  16.     ] 
  17.    }, 
  18.    "codec": { 
  19.     "name""aeraki.meta_protocol.codec.thrift" 
  20.    }, 
  21.    "meta_protocol_filters": [ 
  22.     { 
  23.      "name""aeraki.meta_protocol.filters.local_ratelimit"
  24.      "config": { 
  25.       "@type""type.googleapis.com/aeraki.meta_protocol_proxy.filters.local_ratelimit.v1alpha.LocalRateLimit"
  26.       "stat_prefix""thrift-sample-server.meta-thrift.svc.cluster.local"
  27.       "token_bucket": { 
  28.        "max_tokens": 2, 
  29.        "tokens_per_fill": 2, 
  30.        "fill_interval""60s" 
  31.       } 
  32.      } 
  33.     }, 
  34.     { 
  35.      "name""aeraki.meta_protocol.filters.router" 
  36.     } 
  37.    ] 
  38.   } 
  39.  } 

 

責(zé)任編輯:武曉燕 來源: 趙化冰
相關(guān)推薦

2022-02-18 14:41:49

Aerakiistio指標(biāo)

2024-01-03 08:30:54

Redis分布式項目

2010-03-01 15:51:01

WCF限流

2016-10-09 09:28:22

Windows 10組策略配置

2023-08-08 08:01:22

微服務(wù)架構(gòu)服務(wù)

2024-11-05 15:02:41

2023-11-20 10:09:59

2011-03-16 16:41:57

清空iptables

2011-07-20 16:42:46

本地組策略

2024-11-29 16:02:17

2012-03-13 11:00:41

imo即時通訊

2025-04-10 08:00:00

服務(wù)限流開發(fā)高并發(fā)

2024-06-11 10:03:56

2024-12-25 15:44:15

2011-08-11 10:50:08

本地組策略組策略用戶配置

2024-02-04 10:08:34

2025-04-08 09:20:00

Sentinel限流微服務(wù)

2019-09-26 16:40:57

Linux敏捷項目

2012-12-17 09:50:40

路由器訪問路由器設(shè)置路由器控制

2023-04-07 09:37:42

NixOS家庭管理員
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久久噜噜噜久久中文字幕色伊伊 | 日日天天| 国产精品国产三级国产aⅴ无密码 | 日韩第1页 | 2018国产精品 | 亚洲性视频在线 | 久久久久一区二区三区 | 亚洲日日| 欧美精品在线观看 | 伊人在线 | 九九热精品视频在线观看 | 久久高清国产 | 久久久久久亚洲精品 | 国产精品欧美精品 | 国产精品久久网 | 国产精品久久久久久久久 | 国产女人与拘做受视频 | 日韩一二三区视频 | 国产高清免费 | 亚洲精品视频观看 | 在线91| 日韩成人精品一区二区三区 | 欧美日韩亚洲一区 | 日韩中文字幕 | 中文字幕免费视频 | 精品视频在线播放 | 色视频网站免费 | 国产精品三级 | 成人国产精品久久 | 欧美在线国产精品 | 农夫在线精品视频免费观看 | 国产99视频精品免费播放照片 | 国产精品激情小视频 | 国产美女免费视频 | 国产欧美日韩一区 | 中文字幕久久精品 | 日韩中文字幕在线观看 | 日韩精品一区二区三区在线播放 | 国产一区二区三区在线 | av一级在线观看 | 精品免费国产 |