php實戰kong做微服務架構四(插件之網關限流)
- 序言
- kong插件介紹
- 限流
- 限制策略
- 應用范圍
- 源代碼
- 運行示例
序言
為了在多專案管理程序中,讓部分統一業務集中管理,比如鑒權、限流、權限、熔斷、協議轉換、錯誤碼統一、快取、日志、監控、告警等,
在此情況下我們需要尋找統一的專案入口,去設定這些業務,這個統一入口在此便是本系列文章介紹的kong網關,
這篇文章將主要介紹如何使用kong來實作限流,
寫這篇文章時因為kong還是0.13.1版本,尷尬~~本篇將以這個版本為主介紹,
kong插件介紹
插件提供了擴展Kong網關的使用,我們可以向網關添加新功能,可以將插件配置為在各種背景關系中運行,從特定路由到所有服務,插件可以為我們提供便捷服務,例如身份驗證,速率限制或對代理請求的轉換,
限流
使用的插件名:
rate-limiting或rate-limiting-advanced
相比較舊版的
rate-limiting, 新版本rate-limiting-advanced在支持http https的基礎上額外支持grpc grpcs
限制策略
此為可選配置
config.policy,三個值:
- local:計數器存盤在本地記憶體中的節點上,
- cluster:計數器存盤在kong的資料存盤區中【我此處為PostgreSQL】,并在節點之間共享,(默認值)
- redis:計數器存盤在Redis服務器上并在節點之間共享,
應用范圍
此插件可以添加到服務、路由、消費者,如果沒有指定任何一個,將會時全域插件,在每一個請求都會生效,
源代碼
<?php
/**
* 注冊服務
* @author: 飄逸的羅伯特
*/
//api注冊
$api_data = [
'name' => 'goods8',
'uris' => '/goods8',
'methods' => 'GET',
'upstream_url' => 'http://hz12.cn/goods8'
];
var_dump(http_request('http://hz12.cn:8001/apis', $api_data));
//限流設定及注冊
$limit = [
'name' => 'rate-limiting',
'config.second' => 2, //每秒鐘允許2次
'config.minute' => 3, //每分鐘允許3次
//config.hour
//config.day
//config.month
//config.year
];
var_dump(http_request('http://hz12.cn:8001/apis/goods8/plugins', $limit));
/**
* 發送post請求
* @param [string] $url 請求地址
* @param [array] $postdata post引數
* @return [ar] [description]
*/
function http_request($url, $postdata=[]){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $postdata);
$data = curl_exec($curl);
curl_close($curl);
return $data;
}
運行示例
- 注冊限流插件

- 運行注冊的api

- 繼續快速重繪

轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/263425.html
標籤:其他
下一篇:時間繼電器
