Divide插件的使用
上一篇已經說到,Soul網關代理了我們自定義的一個SpringBoot服務,
這一篇,我們就來嘗試下如何實作網關的默認的Divide插件提供的負載均衡功能(好像也只能根據匹配的規則提供負載均衡的功能)

此選擇器為我SpringBoot服務啟動并連接到soul-admin之后默認生成的,但是由此產生了一個問題,當我的應用下線之后,這個選擇器和選擇器規則并沒有下線?有待后續的研究,
同時觀察表單元素,參閱Soul檔案,發現有如下選擇器規則
-
型別:custom flow 是自定義流量,full flow 是全流量,自定義流量就是請求會走你下面的匹配方式與條件,全流量則不走,
-
匹配方式:and 或者or 是指下面多個條件是按照and 還是or的方式來組合,
條件: -
uri:是指你根據uri的方式來篩選流量,match的方式支持模糊匹配(/**)
-
header:是指根據請求頭里面的欄位來篩選流量,
-
query: 是指根據uri的查詢條件來進行篩選流量,
-
ip:是指根據你請求的真實ip,來篩選流量,
-
host:是指根據你請求的真實host,來篩選流量,
-
post:建議不要使用,
條件匹配:
match : 模糊匹配,建議和uri條件搭配,支持 restful風格的匹配,(/test/**)
= : 前后值相等,才能匹配,
regEx : 正則匹配,表示前面一個值去匹配后面的正則運算式,
like :字串模糊匹配,但是官方檔案中,并未給出創造了Post這種篩選方式,但是仍然不建議使用的原因,期待后續的原始碼的閱讀能找到答案
另外在divide插件首頁我們可以看到,我們可以添加除了默認生成的規則之外的規則
最后實踐一下根據uri匹配的負載均衡,啟動多個客戶端程式,看看請求被轉發到那個服務上,可以看到不同負載策略的不同表現
同時我們在選擇器表單框內,可以看到隨著多個客戶端程式的使用,增加了配置的情況

另外,此處的weight權重策略和選擇器規則策略誰起作用?可以試下,
將選擇器配置策略調整為50,50 ,選擇器均衡規則調整為random,
如果選擇器規則優先,那么應該兩個客戶端每個客戶端接收一個請求,如果均衡規則優先,那么可以得到隨機的請求,接下來我們試下


可以看到當一個選擇器和選擇器規則同時滿足條件時,以粒度更小的選擇器規則均衡策略為準,關于這個是如何實作的,期待后續通過原始碼進行了解
問題
- 當我的應用下線之后,這個默認選擇器和選擇器規則并沒有下線?這個有什么其他的考量嗎?
- post篩選條件被創造,但又不建議使用的原因?
- 選擇器配置權重規則和負載規則的原始碼實作
歡迎搜索關注本人與朋友共同開發的微信面經小程式【大廠面試助手】和公眾號【微瞰技術】,以及總結的分類面試題https://github.com/zhendiao/JavaInterview


轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/249323.html
標籤:Java
上一篇:java中ArrayList 和 LinkedList 有什么區別
下一篇:java8函式式編程
