Dubbo學習系列之十七(微服務Soul網關)

 

論起微服務,哪能不談網關,老將有Zuul,後繼有Gateway,但這些都和SpringCloud關係密切,其餘網關如Kong,因Lua緣由,玩起來略不順手。html

這不,就來了個Soul,我順便拿來整進了我在寫的項目中,感受還行,也發現了些問題,表現有待觀察,另外一方面發現Soul資料略少,git

官方教程也不是很清晰,我就出點實戰樣例供看官參考參考。github

準備:web

Idea2019.03/Gradle6.0.1/JDK11.0.4/Lombok0.28/SpringBoot2.2.2RELEASE/mybatisPlus3.3.0/Sou2.1.2/Dubbo2.7.5/Mysql8.0.11spring

難度: 新手--戰士--老兵--大師sql

目標:apache

1.實現http模式下使用soul網關轉發bootstrap

2.使用soul網關多服務實例負載均衡微信

步驟:websocket

爲了碰見各類問題,同時保持時效性,我儘可能使用最新的軟件版本。代碼地址:https://github.com/xiexiaobiao/vehicle-shop-admin

1 Soul 網關特色

  • 插件式管理,動態熱加載
  • 獨立式部署,帶web管理界面
  • 可對接HTTP,Restful,websocket,dubbo和springcloud

2 http模式使用

2.1 項目中加入依賴:dubbo接入使用soul-client-apache-dubbo包,http接入使用:soul-client-springmvc包。

2.2 定義配置:

重點就是「contextPath」,即這個插件匹配到uri路徑爲 「 /stock/** 」

 

2.3 在Controller的方法上使用@SoulClient註解,好比:

@SoulClient(path = "/vehicle/stock/brand/list", desc = "獲取全部品牌列表")

此處由於我整個項目加了context-path: /vehicle,故有/vehicle前綴:

 

使用http接入須要使用zk,不然控制檯會報錯,但經測試不使用zk功能上也能夠,官方也說明已脫離對zk強依賴,應該是歷史遺留問題。

2.4 先啓動zookeeper(非必需),再啓動soul-admin.jar,再啓動soul-bootstrap.jar(這兩個能夠官網下載,依照說明使用),最後啓動項目。

結構關係以下:

 

 2.5 使用http接入爲例,啓動完畢後訪問 http://localhost:9095/index.html 

默認的用戶名:admin 密碼:123456,發現已自動加入了定義的「選擇器」和「選擇器規則」:

 

選擇器詳細:

「http配置」能夠有多個目標地址,即多個微服務實例,再配合選擇器規則便可作負載均衡。

「權重」越大,random模式下分配到的機率越大。本機的話ip也能夠直接用127.0.0.1

「條件」推薦使用uri模式匹配,這也是網關核心之一的路由功能了!

 

 

選擇器規則詳細:

這裏能夠配置負載均衡策略,三種:hash、random和robin。

 

 

2.6 並先關閉其餘插件,只保留divide:

 

2.7 測試:

直接http訪問項目API:

 

 使用soul網關訪問,注意對比url地址。注意這裏是soulClient的端口,不是soulAdmin的!!

 

同時能夠看到soul-bootstrap控制檯進行http路由轉發的信息:

 

總結

1.使用發現對RESTFUL支持只有GET/POST,其餘如PUT/DELETE,老是致使攜帶的參數丟失,沒法轉發到目標地址,可能設計上就只支持GET/POST。

2.Soul熱插件和web端操做,仍是體驗較好的,我使用的項目代碼較多,看官徹底能夠本身寫一個簡單的SpringbootMVC項目來測試。

3.請期待個人後續:集羣部署和Dubbo接入。

 

全文完!

 

微信公衆號,歡迎各位進行留言交流。


推薦閱讀:

 

原文出處:https://www.cnblogs.com/xxbiao/p/12306379.html

相關文章
相關標籤/搜索