這里從部署運維的角度描述如何將網關系統動作起來,由於線上實戰的系統是分布式,所以項目依賴的組件會相對多一些,為了簡化,將配置組件(apollp)做了移除。這篇以網關最基本的分流組件做為演示,其它組件的應用不在此篇中描述。
依賴組件
基礎組件
以下組件需要提前安裝好,本地跑的話建議用docker跑。
1、redis
用於緩存數據
2、zookeeper
用於在分布式系統中同步數據
3、mysql
用於存儲網類的配置數據,比如分流規則,RPC協議轉換等數據。
應用組件
以下組件是基於應用層面的應用軟件,更好的處理業務中的問題。
1、緩存
引入了jetcache做為項目中緩存組件,支持多級緩存
2、限流
引入了sentinel處理限流、熔斷
后台系統
后台系統也可以理解成一個配置系統,針對不同的網關插件做不同的數據配置。實戰版本中有預發環境以及生產環境,但本地跑起來可以只選用預發環境就可以。
后台系統的代碼70%來自於開源項目[soul],我們在此基礎上做了一些擴展性的功能,比如:預發環境下生產環境;RPC協議插件配置;分布系統數據同步等。
1、創建數據庫:diablo_pre
2、執行diabol-admin項目中scripts目錄下的diablo_pre.sql,創建表結果以及初始化數據
3、修改application.yml,按實際情況修改對應的mysql,redis,zookeeper等配置
4、指定預發環境標識
啟動參數中配置diablo.admin.apollo.cluster=pre;此處的key名稱后續會更改。
5、啟動項目
啟動成功后,瀏覽器輸入:http://127.0.0.1:8887 即可看到后台登錄頁面
6、配置分流插件
配置流量選擇器,實戰中我們是以域名做為維護,有點類似nginx中監聽的域名;分流插件第一步是在預發環境中配置,測試通過后同步到線上,同步后如果有問題提供了回滾功能。
配置流量選擇器后面的分流規則,有點類似nginx中的location配置;具體的分流規則可以將線上的請求跑由到后端的做任意服務上。
上圖中有一欄是路由主機選擇,比如將/order開頭的請求路由到order-api服務,我們可以通過接口形式將order-api后端服務器列表數據同步過來。
測試系統
由於我們主要是與分流插件為側,就需要啟動一個后端的用於測試的api項目,比如提供這樣的接口:http://127.0.0.1:8898/hi?name=123456
網關系統
diablo-web啟動比較簡單,與一般的web項目沒有大的差異。
1、配置application.yum;
2、啟動網關系統;
3、測試轉發能力
輸入http://127.0.0.1:8899/hi?name=123,如能看到如下輸入就說明分流插件運轉正常。
網關項目開源
以上內容基於業務網關的一個小模塊,詳細請看這里:diablo在這里