Soul 網關使用 - divide 插件

Soul 提供了一系列方便易用的插件用于支持不同的協(xié)議苫拍,如 http、dubblo 等。我們可以在項目源碼下找到 soul-examples 測試這些插件的使用绘迁,本文我們關注用于支持 http 的 divide 插件。

divide 插件是進行 http 正向代理的插件卒密,所有 http 類型的請求缀台,都是由該插件進行負載均衡的調用。
下面我們先使用一下 divide 插件哮奇,從應用層看下它是如何工作的膛腐。

啟動測試環(huán)境

這里我們要分別啟動 admin、bootstrap 和 soul-examples-http屏镊,admin 和 bootstrap 的啟動可以參考前文:源碼編譯和簡單使用
找到 soul-examples-http 項目依疼,我們可以使用 IDEA 這種集成化開發(fā)環(huán)境運行,也可以使用 maven 打包后運行而芥。因為這里我暫時不調試代碼律罢,所以直接使用 maven 打包使用。

cd $SOUL/soul-exampls/soul-examples-http/
# 打包 soul-examples-http
mvn package -Dmaven.javadoc.skip=true -Dmaven.test.skip=true
# 啟動 soul-examples-http 服務
java -jar target/soul-examples-http.jar

通過 log 和 admin 管理平臺看做了哪些事情

soul-examples-http 服務啟動時棍丐,我們可以通過 log 看到它以 http client 的形式向 admin 注冊了一些規(guī)則误辑,下面是這些 log:

...
http client register success: {"appName":"http","context":"/http","path":"/http/test/**","pathDesc":"","rpcType":"http","host":"192.168.0.103","port":8188,"ruleName":"/http/test/**","enabled":true,"registerMetaData":false}
http client register success: {"appName":"http","context":"/http","path":"/http/order/save","pathDesc":"Save order","rpcType":"http","host":"192.168.0.103","port":8188,"ruleName":"/http/order/save","enabled":true,"registerMetaData":false}
http client register success: {"appName":"http","context":"/http","path":"/http/order/path/**","pathDesc":"","rpcType":"http","host":"192.168.0.103","port":8188,"ruleName":"/http/order/path/**","enabled":true,"registerMetaData":false}
http client register success: {"appName":"http","context":"/http","path":"/http/order/path/**/name","pathDesc":"","rpcType":"http","host":"192.168.0.103","port":8188,"ruleName":"/http/order/path/**/name","enabled":true,"registerMetaData":false}
http client register success: {"appName":"http","context":"/http","path":"/http/order/findById","pathDesc":"Find by id","rpcType":"http","host":"192.168.0.103","port":8188,"ruleName":"/http/order/findById","enabled":true,"registerMetaData":false}

通過日志我們可以看到 soul-examples-http 服務啟動時向 Soul 網關一共注冊了 5 組規(guī)則用于 http 請求轉發(fā)。這些規(guī)則我們同樣可以在 admin 的管理控制臺看到歌逢。


Soul 網關管理控制臺界面

通過網關訪問 soul-examples-http 的接口

通過查看 soul-examples-http 源碼中的 controller 代碼巾钉,我們可以看到 soul-examples-http 提供了哪些接口,接下來我們通過網關訪問這些接口秘案。
Soul 網關的訪問地址是:http://127.0.0.1:9195

curl -X GET \
  http://127.0.0.1:9195/http/test/path/abc\?name\=yiwenlong
# result:
# {"userId":"abc","userName":"hello world"}

curl -X POST -H "Content-Type:application/json"  -d '{"userId":"aaa","userName":"bbb"}' \
  http://127.0.0.1:9195/http/test/payment
# result:
# {"userId":"aaa","userName":"bbb"}

curl -X PUT -H "Content-Type:application/json" -d '{"userId":"aaa","userName":"bbb"}' \ 
  http://127.0.0.1:9195/http/test/putPathBody/aaa
# reuslut:
# {"userId":"aaa","userName":"hello world"}

soul-example-http 是如何配置的

soul-examples-http 依賴了 soul-spring-boot-starter-client-springmvc砰苍,當服務啟動時潦匈,soul-examples-http 以客戶端的形式向 Soul 網關的 admin 發(fā)起注冊請求,我們通過配置文件可以看到 Soul 網關 admin 的配置:

# soul-examples-http: application.yml
soul:
  http:
    adminUrl: http://localhost:9095
    port: 8188
    contextPath: /http
    appName: http
    full: false

@SoulSpringMvcClient 注解用于告訴 soul-spring-boot-starter-client-springmvc 需要向 Soul 網關注冊哪些規(guī)則赚导,注解可以注冊到 controller 類上面茬缩,用于匹配 controller 類下面的所有接口:

@RestController
@RequestMapping("/test")
@SoulSpringMvcClient(path = "/test/**")
public class HttpTestController {
  ...
}

也可以注冊到接口的方法上面,用于注冊特定的某一個接口:

@RestController
@RequestMapping("/order")
@SoulSpringMvcClient(path = "/order")
public class OrderController {

    /**
     * Save order dto.
     *
     * @param orderDTO the order dto
     * @return the order dto
     */
    @PostMapping("/save")
    @SoulSpringMvcClient(path = "/save" , desc = "Save order")
    public OrderDTO save(@RequestBody final OrderDTO orderDTO) {
        orderDTO.setName("hello world save order");
        return orderDTO;
    }
}
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末吼旧,一起剝皮案震驚了整個濱河市凰锡,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌圈暗,老刑警劉巖掂为,帶你破解...
    沈念sama閱讀 207,113評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異员串,居然都是意外死亡勇哗,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評論 2 381
  • 文/潘曉璐 我一進店門昵济,熙熙樓的掌柜王于貴愁眉苦臉地迎上來智绸,“玉大人,你說我怎么就攤上這事访忿∏评酰” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評論 0 344
  • 文/不壞的土叔 我叫張陵海铆,是天一觀的道長迹恐。 經常有香客問我,道長卧斟,這世上最難降的妖魔是什么殴边? 我笑而不...
    開封第一講書人閱讀 55,449評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮珍语,結果婚禮上锤岸,老公的妹妹穿的比我還像新娘。我一直安慰自己板乙,他們只是感情好是偷,可當我...
    茶點故事閱讀 64,445評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著募逞,像睡著了一般蛋铆。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上放接,一...
    開封第一講書人閱讀 49,166評論 1 284
  • 那天刺啦,我揣著相機與錄音,去河邊找鬼纠脾。 笑死玛瘸,一個胖子當著我的面吹牛蜕青,可吹牛的內容都是我干的。 我是一名探鬼主播捧韵,決...
    沈念sama閱讀 38,442評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼市咆,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了再来?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,105評論 0 261
  • 序言:老撾萬榮一對情侶失蹤磷瘤,失蹤者是張志新(化名)和其女友劉穎芒篷,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體采缚,經...
    沈念sama閱讀 43,601評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡针炉,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,066評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了扳抽。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片篡帕。...
    茶點故事閱讀 38,161評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖贸呢,靈堂內的尸體忽然破棺而出镰烧,到底是詐尸還是另有隱情,我是刑警寧澤楞陷,帶...
    沈念sama閱讀 33,792評論 4 323
  • 正文 年R本政府宣布怔鳖,位于F島的核電站,受9級特大地震影響固蛾,放射性物質發(fā)生泄漏结执。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,351評論 3 307
  • 文/蒙蒙 一艾凯、第九天 我趴在偏房一處隱蔽的房頂上張望献幔。 院中可真熱鬧,春花似錦趾诗、人聲如沸蜡感。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽铸敏。三九已至,卻和暖如春悟泵,著一層夾襖步出監(jiān)牢的瞬間杈笔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評論 1 261
  • 我被黑心中介騙來泰國打工糕非, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留蒙具,地道東北人球榆。 一個月前我還...
    沈念sama閱讀 45,618評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像禁筏,于是被迫代替她去往敵國和親持钉。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,916評論 2 344

推薦閱讀更多精彩內容