OpenResty api閘道器設計

2021-08-15 21:09:01 字數 2490 閱讀 9961

本文講述openresty api閘道器設計,主要涉及api閘道器介紹、openresty api閘道器 

請求路由(路由判斷、路由重寫、服務判斷、限流)、授權驗證(統一認證)、動態upstream 以及這三部分理論簡單實現的api閘道器和api閘道器admin。

1、什麼是api閘道器

在這個微服務這麼火的時代,隨之api閘道器常常被提到。我們知道在微服務架構風格中,乙個大應用被拆分成為了多個小的服務並提供 rest api 風格的介面來被 h5, android, ios 應用呼叫,由api網統一關管理這些介面的方方面面,

那麼什麼才是api閘道器?

api閘道器是乙個伺服器,是系統的唯一入口。從物件導向設計的角度看,它與外觀模式類似。api閘道器封裝了系統內部架構,為每個客戶端提供乙個定製的api。它可能還具有其它職責,如身份驗證、監控、負載均衡、快取、請求分片與管理、靜態響應處理。 api閘道器方式的核心要點是,所有的客戶端和消費端都通過統一的閘道器接入微服務,在閘道器層處理所有的非業務功能。通常,閘道器也是提供rest/http的訪問api。服務端通過api-gw註冊和管理服務。

2、openresty api閘道器

openresty 

是乙個基於 

nginx

與 lua 的高效能 web 平台,其內部整合了大量精良的 lua 庫、第三方模組以及大多數的依賴項。用於方便地搭建能夠處理超高併發、擴充套件性極高的動態 web 應用、web 服務和動態閘道器。

openresty 

通過匯聚各種設計精良的 

nginx

模組(主要由 openresty 團隊自主開發),從而將 

nginx

有效地變成乙個強大的通用 web 應用平台。這樣,web 開發人員和系統工程師可以使用 lua 指令碼語言調動 

nginx

支援的各種 c 以及 lua 模組,快速構造出足以勝任 10k 乃至 1000k 以上單機併發連線的高效能 web 應用系統。

開發api閘道器使用到的 openresty 乙個重要知識:openresty 對於乙個請求的處理流程。

nginx 把乙個請求分為不同的階段,從而讓第三方模組通過掛載行為在不同的階段來定製自己的行為;openresty 擁有同樣的特性,不過在不同階段掛載的是 lua 指令碼。

在不同的階段直接完成大部分典型處理了。

set_by_lua: 流程分之處理判斷變數初始化 

rewrite_by_lua: **、重定向、快取等功能(例如特定請求**到外網) 

access_by_lua: ip准入、介面許可權等情況集中處理(例如配合iptable完成簡單防火牆) 

content_by_lua: 內容生成 

header_filter_by_lua: 應答http過濾處理(例如新增頭部資訊) 

body_filter_by_lua: 應答body過濾處理(例如完成應答內容統一成大寫) 

log_by_lua: 回話完成後本地非同步完成日誌記錄(日誌可以記錄在本地,還可以同步到其他機器)

那麼我們可以開始的api閘道器設計了:

init_by_lua_block 載入路由資訊、服務資訊到lua_shared_dict。

init_worker_by_lua_block 持久化通過apiadmin新增或者修改的路由、服務資訊到磁碟、服務健康檢查。

rewrite_by_lua_block 根據url規則匹配路由資訊和服務資訊並賦值到ngx上下文

access_by_lua_block 進行統一授權

opengate_upstream 通過ngx上下文的url服務資訊通過ngx_balancer.set_current_peer對服務進行**。

adminapi 提供路由、服務資訊管理restful介面

示例**如下:

}通過如上我們就實現乙個簡單的api閘道器。

Linux CentOS修改網絡卡IP 閘道器設定

1.修改對應網絡卡ip的配置檔案 vi etc sysconfig network scripts ifcfg eth0修改以下內容 device eth0 描述網絡卡對應的裝置別名,例如ifcfg eth0的檔案中它為eth0 bootproto static 設定網絡卡獲得ip位址的方式,可能的...

linux網路路由 閘道器 dns和dhcp設定

1.回環介面lo ifcfg lo 相當於人的神經系統 很重要 不要修改!127.0.0.1 localhost 只有本機的人可以使用 主機內部溝通的ip 2.閘道器 閘道器 處在同一區域網ip,限制別的主機上網 route n 檢視閘道器資訊 vim etc sysconfig network s...

閘道器 閘道器位址

ip位址 tcp ip transmite control protocol 傳輸控制協議 internet protocol網際協議 已成為計算機網路的一套工業標準協議。在應用 tcp ip協議的網路環境中,為了唯一地確定一台主機的位置,必須為tcp ip協議指定三個引數,即ip位址 子網掩碼和閘...