國產微服務網關-Soul(真香)

What is the Soul?

一個異步的,高性能的,跨語言的,響應式的API網關。我希望能夠有一樣東西像靈魂一樣,保護您的微服務。參考了Kong,Spring-Cloud-Gateway等優秀的網關後,站在巨人的肩膀上,Soul由此誕生!

是不是很吊的一句話,站在巨人身上那麼這些巨人也就變成了矮子。

整體架構如下圖所示:

 

是不是很炫反正我是沒看懂

部署單機版

Soul 單機部署

操作在windows環境

安裝SoulAdmin

souladmin:控制檯,負責維護網關的元數據、配置等等,並提供給 SoulBootstrap 網關服務讀取。

在mysql數據庫中執行下面圖中sql,12張表

在瀏覽器輸入https://yu199195.github.io/jar/soul-admin.jar 回車下載即可,yml文件複製一份在外部啓動,用自己的數據庫

啓動命令:java -jar soul-admin.jar --spring.config.location=xxxxx\application-local.yml

啓動成功後

通過日誌看到 Soul Admin 啓動在 9095 端口。使用瀏覽器,訪問 http://127.0.0.1:9095/ 地址,進入登錄頁,賬號密碼分別是:admin 和123456

安裝SoulBootstrap

SoulBootstrap:網關服務,負責啓動網關,並轉發請求到後端服務。

在瀏覽器輸入https://yu199195.github.io/jar/soul-bootstrap.jar 回車下載即可,yml文件複製一份在外部啓動,用自己的數據庫

啓動命令:java -jar soul-bootstrap.jar --soul.sync.websocket.url="ws://localhost:9095/websocket",如下圖表示啓動成功

使用瀏覽器,訪問 http://127.0.0.1:9195

引入網關對http的代理插件

針對其他方式參考官方文檔:https://dromara.org/website/zh-cn/docs/soul/user-http.html

官方代碼gitee地址:https://github.com/Dromara/soul/tree/master

soul網關使用 divide 插件來處理http請求

 

 

SpringBoot項目

pom依賴

<properties>
		<maven.compiler.target>1.8</maven.compiler.target>
		<maven.compiler.source>1.8</maven.compiler.source>
		<spring.boot.version>2.2.4.RELEASE</spring.boot.version>
	</properties>

	<dependencyManagement>
		<dependencies>
			<dependency>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter-parent</artifactId>
				<version>${spring.boot.version}</version>
				<type>pom</type>
				<scope>import</scope>
			</dependency>
		</dependencies>
	</dependencyManagement>

	<dependencies>
		<!-- 引入 SpringMVC 相關依賴,並實現對其的自動配置 -->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		
		<dependency>
			<groupId>org.dromara</groupId>
			<artifactId>soul-spring-boot-starter-client-springmvc</artifactId>
			<version>2.2.0</version>
		</dependency>
		<dependency>
			<groupId>org.dromara</groupId>
			<artifactId>soul-client-springmvc</artifactId>
			<version>2.2.0</version>
		</dependency>
	</dependencies>

yml中solu配置

soul:
  http:
    adminUrl: http://localhost:9095
    port: 8080
    contextPath: /boot
    appName: soulboot
    full: false  

啓動項

@SpringBootApplication
public class DemoApplication {

    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }

}

controller層

import org.dromara.soul.client.springmvc.annotation.SoulSpringMvcClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/user")
@SoulSpringMvcClient(path = "/user")
public class UserController {

    private Logger logger = LoggerFactory.getLogger(getClass());

    @GetMapping("/get")
    @SoulSpringMvcClient(path = "/get")
    public String getUser(@RequestParam("id") Integer id) {
        return "DEMO:" + id;
    }

    @PostMapping("/create")
    public Integer createUser(@RequestBody UserCreateDTO createDTO) {
        logger.info("[createUser][username({}) password({})]", createDTO.getNickname(), createDTO.getGender());
        return 1;
    }

}

dao層

public class UserCreateDTO {

    /**
     * 暱稱
     */
    private String nickname;
    /**
     * 性別
     */
    private Integer gender;

    public String getNickname() {
        return nickname;
    }

    public UserCreateDTO setNickname(String nickname) {
        this.nickname = nickname;
        return this;
    }

    public Integer getGender() {
        return gender;
    }

    public UserCreateDTO setGender(Integer gender) {
        this.gender = gender;
        return this;
    }
}

啓動後出現下圖表示成功

HTTP API 方法的元數據到 Soul Admin 控制檯,啓動後慧自動配置

然後在postman請求

通過網關bootstrap轉發到後臺

上面就是對soul對springboot配置的網關,未完待續。。。。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章