拉取代碼,修改配置
首先訪問https://github.com/dromara/soul 對該倉庫進行star和watch,作爲一個網關使用的新手。需要在後續關注soul的開發動向,把他更好的用在工作當中
隨後將該倉庫fork到自己的github中。方便自己後續進行代碼的學習和註釋。然後對自己fork的倉庫進行clone
git clone [email protected]:zhendiao/soul.git
然後將自己的代碼導入到IDEA當中,首先觀察Soul項目的目錄結構
我們可以很明顯的猜到Soul-admin爲該網關的管理控制檯項目。打開配置文件,雖然可以提供內置的H2數據庫作爲數據源,但是爲了使用方便,我們還是使用MySQL作爲數據源,建議MySQL版本爲mysql5。修改mysql的配置,無需手動創建數據庫,啓動之後自動創建了數據庫。
可以看到啓動之後的界面
網關核心層Soul-Bootstrap
soul-bootrap作爲攔截外部請求的核心層,目前默認的數據同步方式爲websocket配置,配置如下
soul :
file:
enabled: true
corss:
enabled: true
dubbo :
parameter: multi
sync:
websocket :
urls: ws://localhost:9095/websocket
同時註釋的代碼中也包含了其他諸如Zookeeper,nacos,http等同步方式。在後面幾天的嘗試中,會嘗試其他幾種方式
測試項目
參考官網進行http(springboot)方式進行最簡單的代理環境搭建,首先新建一個springboot項目,配置如下
soul:
# Soul 針對 SpringMVC 的配置項,對應 SoulHttpConfig 配置類
http:
admin-url: http://127.0.0.1:9095 # Soul Admin 地址
context-path: /soulboot # 設置在 Soul 網關的路由前綴,例如說 /order、/product 等等。
# 後續,網關會根據該 context-path 來進行路由
app-name: soulboot # 應用名。未配置情況下,默認使用 `spring.application.name` 配置項
port: 7070 #你本項目的啓動端口
full: false # 設置true 代表代理你的整個服務,false表示代理你其中某幾個controller
server:
port: 7070
新建一個測試controller
package org.dromara.soul.boot.controller;
import org.dromara.soul.client.springmvc.annotation.SoulSpringMvcClient;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/user")
public class HomeController {
@GetMapping("/get")
@SoulSpringMvcClient(path = "/user/get", desc = "獲得用戶詳細")
public String getUser(@RequestParam("id") Integer id) {
return "DEMO:" + id;
}
}
通過訪問soul-boostrap的端口搭配本項目的路由地址即可實現成功訪問
目前疑問
- 配置的端口爲admin的端口,soul-bootstrap如何同步數據並代理的
歡迎搜索關注本人與朋友共同開發的微信面經小程序【大廠面試助手】和公衆號【微瞰技術】