上一篇已經說到,Soul網關代理了咱們自定義的一個SpringBoot服務。
這一篇。咱們就來嘗試下如何實現網關的默認的Divide插件提供的負載均衡功能(好像也只能根據匹配的規則提供負載均衡的功能)
此選擇器爲我SpringBoot服務啓動並鏈接到soul-admin以後默認生成的,可是由此產生了一個問題,當個人應用下線以後,這個選擇器和選擇器規則並無下線?有待後續的研究。
同時觀察表單元素。參閱Soul文檔,發現有以下選擇器規則git
類型:custom flow 是自定義流量。full flow 是全流量。自定義流量就是請求會走你下面的匹配方式與條件。全流量則不走。github
匹配方式:and 或者or 是指下面多個條件是按照and 仍是or的方式來組合。
條件:面試
uri:是指你根據uri的方式來篩選流量,match的方式支持模糊匹配(/**)正則表達式
header:是指根據請求頭裏面的字段來篩選流量。小程序
query: 是指根據uri的查詢條件來進行篩選流量。微信
ip:是指根據你請求的真實ip,來篩選流量。restful
host:是指根據你請求的真實host,來篩選流量。負載均衡
post:建議不要使用。
條件匹配:
match : 模糊匹配,建議和uri條件搭配,支持 restful風格的匹配。(/test/**)
= : 先後值相等,才能匹配。
regEx : 正則匹配,表示前面一個值去匹配後面的正則表達式。
like :字符串模糊匹配。dom
可是官方文檔中,並未給出創造了Post這種篩選方式,可是仍然不建議使用的緣由,期待後續的源碼的閱讀能找到答案ide
另外在divide插件首頁咱們能夠看到,咱們能夠添加除了默認生成的規則以外的規則
最後實踐一下根據uri匹配的負載均衡,啓動多個客戶端程序,看看請求被轉發到那個服務上,能夠看到不一樣負載策略的不一樣表現
同時咱們在選擇器表單框內,能夠看到隨着多個客戶端程序的使用,增長了配置的狀況
另外,此處的weight權重策略和選擇器規則策略誰起做用?能夠試下。
將選擇器配置策略調整爲50,50 。選擇器均衡規則調整爲random。
若是選擇器規則優先,那麼應該兩個客戶端每一個客戶端接收一個請求,若是均衡規則優先。那麼能夠獲得隨機的請求,接下來咱們試下
能夠看到當一個選擇器和選擇器規則同時知足條件時,以粒度更小的選擇器規則均衡策略爲準。關於這個是如何實現的,期待後續經過源碼進行了解
歡迎搜索關注本人與朋友共同開發的微信面經小程序【大廠面試助手】和公衆號【微瞰技術】,以及總結的分類面試題https://github.com/zhendiao/JavaInterview